我目前正在学习 RDBMS 上下文中的强实体类型和弱实体类型。在阅读时,我遇到了这样的声明:
“弱实体依赖于强实体来确保其存在。与强实体不同,弱实体没有任何主键”
我开始掌握强实体类型和弱实体类型之间的区别,这种说法对我来说似乎不正确。具体来说,它指出弱实体没有主键。但是,不应该每个实体都拥有一个主键吗?即,必须有将提供唯一性的属性组合。所以说弱实体类型没有主键是没有意义的。
但是,弱实体类型的真正定义似乎是主键必须需要外键的实体。
我对弱实体的定义是否正确?
我目前正在学习 RDBMS 上下文中的强实体类型和弱实体类型。在阅读时,我遇到了这样的声明:
“弱实体依赖于强实体来确保其存在。与强实体不同,弱实体没有任何主键”
我开始掌握强实体类型和弱实体类型之间的区别,这种说法对我来说似乎不正确。具体来说,它指出弱实体没有主键。但是,不应该每个实体都拥有一个主键吗?即,必须有将提供唯一性的属性组合。所以说弱实体类型没有主键是没有意义的。
但是,弱实体类型的真正定义似乎是主键必须需要外键的实体。
我对弱实体的定义是否正确?
强实体和弱实体不是关系数据库的想法。它们是比在关系数据库、文档数据库或 OO 对象模型等中实现的更抽象的数据建模思想。
当您在关系数据库中实现弱实体时,最正确(如果不是最常见)的模式是弱实体的主键包含强实体的主键列作为前导列。例如
在实践中你经常看到
这是错误和草率的,但可以用
至此,您可以看到这种模式很容易出错,而且它需要两个索引,而不仅仅是一个。