提到超级母公司还是作为一个单独的实体?

时间:2012-02-26 03:43:00

标签: mysql sql entity-relationship mysql-workbench superclass

我将这个person表作为超级父,

id
firstname
lastname
email
telephone
...
...

user表作为孩子

id
person_id (FK)
password
username
screenname
...
... 

它们必须是 1:1 关系,因为用户不能重复两次。因此,人员行中的电子邮件不得重复两次。

然后我有这个message表来存储来自任何人的消息,

id
firstname
lastname
email
telephone
subject
content
...
...

但您可以在firstname,lastname, email,telephone表中看到message 重复

所以我想把它推荐给person表,如下所示,

id
person_id
subject
content
...

然后它似乎不对,因为具有相同电子邮件,姓名等的人可以根据需要多次向我发送消息。所以他/她提供的细节可以重复。

我应该message作为父母person的孩子,还是应该是独立的实体?

或任何更好的解决此问题的建议。

1 个答案:

答案 0 :(得分:0)

您必须决定系统要做什么。您是希望旧邮件反映某人的新名称,还是希望每条邮件都具有在创建邮件时生效的名称(以及其他详细信息)?

如果您希望系统仅反映当前的个人详细信息,那么您的所有消息需求都是PERSON的外键。

另一方面,如果您希望您的邮件始终以相同的方式显示,即使发送邮件的人更改了姓名,电子邮件地址或其他详细信息,您也必须找到一种方法来保留邮件。历史信息。两个明显的选择是(i)将人员详细信息归结为消息 - 如在您当前的设计中或(ii)保存PERSON的历史表,其中包含个人详细信息的每个组合的快照,以及MESSAGE参考相应的人员历史记录。外键。