我可以在sql中为不同的表使用相同的外键

时间:2013-04-20 11:16:25

标签: mysql sql sql-server oracle

假设我正在为教师制作一个投票系统,并希望将voting_id作为两个表教师和高级教师的主键,并使vote_id成为我新表中两个表的单个外键,我可以选择如果我可以怎么样?

2 个答案:

答案 0 :(得分:1)

为什么要为教师和高级教师分别设置表格?这些实际上很可能是应该使用具有teacher属性的单个senior_teacher表建模的实体。然后,您将创建一个voter表,其中teacher_id列引用teacher_id表中的teacher主键。将teacher表的主键设为voter_id而不是teacher_id是没有意义的。

答案 1 :(得分:0)

我会以不同的方式对其进行建模。老师可以有N票(1:N关系)。所以投票表有teacher_id,可能是等级和时间戳。我会把老师和高级老师放在同一张桌子上,并为其添加一个类型栏(高级或普通),因为高级教师只是一种扩展型教师。

Voting_id不能是主键,因为它识别投票而不是教师。你也会发生冲突,因为教师和高级教师如果在两个单独的表格中,则可以拥有相同的主要ID。