我有两个实体订单och托盘。 订单具有主键ID。 托盘还有一个主键托盘ID。 我们在订单侧有0..1,在托盘侧有*。 我应该如何将其转换为数据库中的表格?
答案 0 :(得分:1)
模拟订单可能包含零个或多个托盘的方案,托盘可能与0或1个订单相关联:
非规范化:
orders
------
orderId (PK)
pallets (e.g. palletA, palletB, palletC, ...) <--- horrible compound field
pallet
------
palletId (PK)
通过将FK添加到多对0或1关系的many
侧,将非规范化表放在第二范式中,并从1
侧删除复合字段。
orders
--------
orderId
pallets
--------
palletId
orderId (FK)
在此模型中,每个托盘都引用一个订单(或者可能是零),许多托盘可能引用相同的订单。
另一种选择是使用连接表。这样可以实现订单和托盘之间的多对多关系,并使关系建模与订单和托盘数据分开。
orders
--------
orderId (PK)
pallets
--------
palletId (PK)
orderspallets
-------------
orderId (FK)
palletId (FK)