【发布时间】:2012-05-26 05:41:30
【问题描述】:
我的数据库中有 2 个表 orders 和 orderHistory。
----------------- -----------------------
| orders | | orderHistory |
----------------- -----------------------
| orderID (PK) | | historyLineID (PK) |
| orderDate | | status |
| price | | quantity |
----------------- -----------------------
现在一个order 可以有多个history lines。但是,history line 不能单独存在。我听说这被称为弱实体,因此来自 orders 的 PK 必须是表 orderHistory 的 PK 的一部分。
问题
- 这真的是一个正确的弱实体关系吗?还有其他方法可以识别它们吗?
- 是否应该将表
order的PK添加到表orderHistory并使其成为复合主键? - 如果我决定向
orderHistory添加新记录,我将如何添加新的复合键? (orderID可从表orders获得,但historyLineID应自动递增。) - 如果我决定将其建模为普通的一对多关系,其中
orderID被添加为仅的外键,该怎么办?这样做有什么坏处? - 如果所有表都处于第三范式,那么在设计后期是否会完全忽略弱实体会导致任何问题?
注意
orderID 和 historyLineID 都是代理键。
提前致谢。
【问题讨论】:
标签: mysql sql database database-design data-modeling