我最近开始使用MySQL Workbench来管理EER图。直到现在我一直在使用phpmyadmin,我从来没有遇到识别&非识别关系的条款。识别与SQL中的非识别关系
我查了一下网上的差异,并阅读了几个关于该主题的Stack Overflow答案,但我仍然非常无能。
从我的理解,我将举一个我的数据库中的场景的例子,我会提出正确的解决方案。
所以在我的数据库中,我有一个users
表,包含了各种方法来联系用户一个contact
表(如电子邮件&电话号码)。由于联系人记录不能与用户无关,因此应该是,以确定的关系。
这里是我的表是这样的:
+-------+ +-------+
| users | |contact|
+-------+ +-------+
| id | |id |
+-------+ |userid |
|contact| // contains email or phone
|type | // specifies if email or phone
+-------+
然而,当我创建一个识别两个表之间的关系,它使复合键的userId
一部分。我知道该表可以有一个由userid
和contact
组成的组合主键,但是希望在整个数据库中保持一致的结构,其中每个表都有自己的代理键。 (我多次看到,使用代理键比组合键更好。)
因此,在这种情况下,实际执行此操作的正确方法是什么?我应该使用组合键并取消代理键(我真的不想这么做)?或者我应该在这种情况下使用非识别关系?
请解释清楚这两种关系之间的区别是什么,为什么识别关系需要指向一个领域是复合键的一部分。
你在使用什么,它会自动为你创建密钥? – Barmar
@Barmar“我最近开始使用MySQL Workbench来管理EER图” –
我将不得不删除我的答案并对其进行编辑。必须得到非vs确认使用正确。它会回来的。 “识别关系的技术定义是孩子的外键是其主键的一部分。” – philipxy