采用以下数据库表
|========|
|user |
|========|
|id |
|username|
|password|
|========|
|=========|
|blog |
|=========|
|id |
|date |
|content |
|author_id|
|=========|
blog.author_id
应该与特定的user.id
相关联,无论哪个用户明显写入博客条目。
我的问题是关于1:1,1:n识别和非识别关系...我真的不太了解它们。这种关系是否应该是这些关系之一?如果是这样,哪一个?这有什么好处?
答案 0 :(得分:1)
在此示例中,博客记录与作者之间存在1:1的关系。它们作为单独的实体/表存在的原因是信息分组 - 用户相关的东西不属于blog
记录,如果有人写了多个blog
,它可能会重复
您希望将其实现为外键约束的原因是因为约束确保blog
表中的user
记录的作者存在。否则,它可能是无意义/错误的数据。外键不会停止重复 - 您需要一个主键或唯一键 - 外键只能验证数据。
现在Nanne为我澄清了identifying/non-identifying terminology,blog.author_id
将成为识别关系。因为它识别作者是谁(user
记录)。
可以假设两个表中的id
列都是主键,因为人工/代理键是最常用的主键。这使得这些列成为非识别关系...
答案 1 :(得分:0)
由于博客和用户是分开的东西,而不是彼此定义的,因此这些是非识别关系。虽然作者身份可能是强制性的,但其中一个可以是没有另一个的东西。
另请参阅此链接以获取有关这两个术语的更多说明:What's the difference between identifying and non-identifying relationships?