我在数据库中有两个表 orders
和 orderHistory
。
----------------- -----------------------
| orders | | orderHistory |
----------------- -----------------------
| orderID (PK) | | historyLineID (PK) |
| orderDate | | status |
| price | | quantity |
----------------- -----------------------
现在,一个订单可以有多个历史记录。然而,一个历史记录不能独立存在。我听说这被称为弱实体,因此订单的PK必须是表orderHistory的PK的一部分。
问题:
1.这真的是正确的“弱实体”关系吗?还有其他方法来识别它们吗? 2.我应该将表order的PK添加到表orderHistory中并将其作为复合主键吗? 3.如果我决定向orderHistory添加新记录,如何添加新的复合键?(orderID可从订单表orders中获取,但historyLineID应自动递增。) 4.如果我决定将其建模为普通的一对多关系,仅添加orderID作为外键,那么做这样做的缺点是什么? 5.在设计中忽略弱实体是否会在以后造成任何问题,前提是所有表都处于第三正式形式?
注意:orderID和historyLineID都是代理键。
customers
和orders
呢?一个客户可以有多个订单,但一个订单只属于一个客户。我将其建模为2个表,其中在Orders表中仅添加了CustomerID作为FK。然而,现在当我考虑它时,如果没有客户下的订单,那么订单本身就没有意义。Orders应该是一个弱实体吗? - SongoOrderID
。以前从未考虑过弱实体,因此对于每个实体,我都只创建了一个代理键来_标识_它们。如果需要关联实体,我只使用外键(1-1,1-M和M-M)。现在我不确定_标识_的真正含义是什么:D - Songo