我有一个已经存在的表“位置”
现在我必须创建一个新表“PositionComment”(我不允许编辑表位置,所以我必须创建一个新表)。 关系是1:0..1(它是通过代码获得的,1个位置只能有1个注释)。
所以我需要在这个新表中有一个主键 - 但是:
关于规范化规则:
我是否必须使外键=主键,因为它是1:0..1 e.g:
OR
我是否必须制作自己的主键 e.g:
不同的是,在第一个建议中,我在第二个表中使用不同的PK作为PK ...但在第二个建议中我有一个双标识符,因为CommentID和PositionID对于1行是唯一的...
如何为规范化规则做到这一点以及为什么?
答案 0 :(得分:3)
你是绝对正确的,要实现1-1关系,你通常应该考虑将它们合并到同一个表中。如果你有充分的理由不这样做,强制执行1-1关系的一个好方法是使用外键作为引用表中的主键或备用键。
答案 1 :(得分:0)
似乎其他人之前曾问过类似的问题。
外键几乎总是"允许重复,"这将使它们不适合作为主键。
相反,找到一个唯一标识表中每条记录的字段,或添加一个新字段(自动递增整数或GUID)作为主键。
唯一的例外是具有一对一关系的表,其中链表的外键和主键是同一个。
但你也应该考虑这个:
由两个外键组成的复合主键对于实现多对多关系也非常好。