MySQL> psuedokey表列应该是识别还是非识别关系?

时间:2011-07-06 20:17:28

标签: mysql database

采用以下数据库表

|========|
|user    |
|========|
|id      |
|username|
|password|
|========|

|=========|
|blog     |
|=========|
|id       |
|date     |
|content  |
|author_id|
|=========|

blog.author_id应该与特定的user.id相关联,无论哪个用户明显写入博客条目。

我的问题是关于1:1,1:n识别和非识别关系...我真的不太了解它们。这种关系是否应该是这些关系之一?如果是这样,哪一个?这有什么好处?

2 个答案:

答案 0 :(得分:1)

在此示例中,博客记录与作者之间存在1:1的关系。它们作为单独的实体/表存在的原因是信息分组 - 用户相关的东西不属于blog记录,如果有人写了多个blog,它可能会重复

您希望将其实现为外键约束的原因是因为约束确保blog表中的user记录的作者存在。否则,它可能是无意义/错误的数据。外键不会停止重复 - 您需要一个主键或唯一键 - 外键只能验证数据。

现在Nanne为我澄清了identifying/non-identifying terminologyblog.author_id将成为识别关系。因为它识别作者是谁(user记录)。

可以假设两个表中的id列都是主键,因为人工/代理键是最常用的主键。这使得这些列成为非识别关系...

答案 1 :(得分:0)

由于博客和用户是分开的东西,而不是彼此定义的,因此这些是非识别关系。虽然作者身份可能是强制性的,但其中一个可以是没有另一个的东西。

另请参阅此链接以获取有关这两个术语的更多说明:What's the difference between identifying and non-identifying relationships?