如何如下表正常化:我将如何规范化此表
Table Order Detail:
-------------------
Order#
Item#
Desc
ShipDate1
Qty1
ShipDate2
Qty2
ShipDate3
Qty3
ShipDate4
Qty4
ShipDate5
Qty5
....
ShipDate20
Qty20
如何如下表正常化:我将如何规范化此表
Table Order Detail:
-------------------
Order#
Item#
Desc
ShipDate1
Qty1
ShipDate2
Qty2
ShipDate3
Qty3
ShipDate4
Qty4
ShipDate5
Qty5
....
ShipDate20
Qty20
你会希望有三个表:Item
,Order
,并OrderDetail
:
OrderDetail: OrderId, ItemId, Quantity, ShipmentDate
Order: Id, ...
Item: Id, Desc, ...
更好的办法将从订单明细中分离订单明细:
OrderDetail: Id, OrderId, ItemId, Quantity
Order: Id, ...
Item: Id, Desc, ...
OrderShipment: Id, OrderDetailId, ShipmentDate, Quantity
OrderDetail.Id
是表格的替代关键。它在OrderShipment.OrderDetailId
字段中再次使用。我在OrderShipment
表中包含Quantity
,以便您可以支持部分订单履行。
可以通过加入OrderDetail
和Item
表找到物品描述。您可以通过加入Order
表获取订单头信息。
在本设计中,你可能有二十记录,而不是很多列:
OrderId ItemId Quantity
10 123 5
10 489 20
10 238 39
呸的定义是一个开始。如果同一件商品需要多次出现在订单上(例如,为了适应定价差异,交货选项,雕刻等),我会为订单明细添加一个ID。
我还发现这个问题有点模棱两可,因为数量是重复的,但项目不是。
Qty1,Qty2,Qty3字段代表什么? – liquorvicar 2012-03-28 15:31:42
@liquorvicar S/B为给定订单编号订购的每件商品的数量。 – Yuck 2012-03-28 15:32:58
@Yuck但他有一个项目ID和二十个数字字段?更别说标准化它,只是不起作用。我想知道是否有其他事情发生在这里... – liquorvicar 2012-03-28 15:37:14