Database design 在创建子表时,哪一个是好的数据库设计?
在设计子表时,我注意到了两种方法 方法1示例:Database design 在创建子表时,哪一个是好的数据库设计?,database-design,Database Design,在设计子表时,我注意到了两种方法 方法1示例: Master Table >>Order Table (order_id pk) Child Table >>order_products table (order_id,product_id, quantity,PK (order_id,product_id)) 方法2示例: Master Table >>Order Table (order_id pk) Child Table >>order_products table (orde
Master Table >>Order Table (order_id pk)
Child Table >>order_products
table (order_id,product_id, quantity,PK (order_id,product_id))
方法2示例:
Master Table >>Order Table (order_id pk)
Child Table >>order_products table (order_product_id PK, order_id,product_id, quantity)
问题:
请注意,我们在第二种方法中使用了additionorder\u product\u id
。这就是我的问题,使用组合主键还是像方法2中那样引入一个新列
利与弊是什么。
答案取决于关系吗?(如果是
一对多
方法1更好,或者是多对多
方法2更好等等)你似乎已经理解(或者你呢?)一对多和多对多关系之间的区别,所以我不确定你在问什么
当你有一对多时,使用第二种模式;当你有多对多关系时,你需要第一种模式的额外表格。你似乎已经理解(或者你真的理解?)一对多和多对多关系之间的区别,所以我不确定你在问什么
当你有一对多时,使用第二种模式;当您有多对多时,您需要第一个模式的额外表。第二个模式是可以选择的,因为第一个模式中有一个复合主键:
PK (order_id,product_id)
所以你总是需要这两个值来引用一个记录
我推荐第二个,如果您需要一些限制,请在订单id和产品id上创建一个唯一索引。第二个是可以选择的,因为第一个中有一个复合主键:
PK (order_id,product_id)
所以你总是需要这两个值来引用一个记录
我推荐第二个,如果您需要一些限制,请在订单id和产品id上创建一个唯一的索引。这不是设计问题,而是功能问题 在您的第一个示例中,您如何处理订购3本书的人?在同一本书中输入3个不同的时间(2个孩子) 通常-抱歉-详细信息应包含所有reelvant信息。这包括金额,但也包括文本和价格信息 为什么? 因为根据您的业务情况,您可能会在订单到达后更改项目描述或价格,这可能会更改未来订单的描述或价格,但不会更改正在处理的订单的描述或价格 想象一下,我去你的商店订购了一个9,99的小部件,然后-2分钟后-有人将价格改为14,99。我仍然应该以9,99的价格得到这个小部件,因为这是我下订单时的vlaid价格。如果你能处理我14,99的订单,那就是欺诈
我建议你变得专业一点。获取数据模型资源手册第1卷的副本。有许多用于标准scnearios的数据模型,如订单处理。这不是设计问题,而是功能问题 在您的第一个示例中,您如何处理订购3本书的人?在同一本书中输入3个不同的时间(2个孩子) 通常-抱歉-详细信息应包含所有reelvant信息。这包括金额,但也包括文本和价格信息 为什么? 因为根据您的业务情况,您可能会在订单到达后更改项目描述或价格,这可能会更改未来订单的描述或价格,但不会更改正在处理的订单的描述或价格 想象一下,我去你的商店订购了一个9,99的小部件,然后-2分钟后-有人将价格改为14,99。我仍然应该以9,99的价格得到这个小部件,因为这是我下订单时的vlaid价格。如果你能处理我14,99的订单,那就是欺诈
我建议你变得专业一点。获取数据模型资源手册第1卷的副本。有很多用于标准SCNIERIOS的数据模型,比如oder处理。我根本不会考虑多对多。这是一个简单的一对多关系。您应该将订单项标识为自己的实体,而不是链接表
- Order有许多OrderItems
- OrderItem具有产品、数量等
- 订单和产品可能有唯一的约束。但是有必要吗
- 订单(订单号主键)
- 订单项(订单项标识主键、订单标识(FK)、产品标识(FK)、数量)
- Order有许多OrderItems
- OrderItem具有产品、数量等
- 订单和产品可能有唯一的约束。但是有必要吗
- 订单(订单号主键)
- 订单项(订单项标识主键、订单标识(FK)、产品标识(FK)、数量)
- 我根本不会考虑多对多。这是一个简单的一对多关系。您应该将订单项标识为自己的实体,而不是链接表