违反了复合主键和联结表约束

时间:2012-06-13 00:37:32

标签: database database-design database-schema

myTable id, admitDate, dischargeDate PK
jxn id ,code
代码表code, description

myTable中还有许多其他字段,每个记录都有唯一标识符的唯一方法是使用id,admitDate,dischargeDate三个值PK。如果同一个人(相同的ID)被两次录取,那么ID将被重复,但admitDate和dischargeDates将是不同的。我试图将主键的id部分从myTable复制到jxn表,SSMS发疯了,并说我没有唯一的约束。

我意识到现在这不起作用,但我想知道这个问题在实践中通常会解决吗?正如我所说,可靠地识别记录的唯一方法是将这三个字段组合在一起。我如何处理有多个入院/出院的人?

我是否需要找到违反PK唯一约束的人并将其移至moreThanOneAdmission表?

1 个答案:

答案 0 :(得分:1)

您应该能够获得患者ID和入院日期(可能加上时间)的复合主键。如果他们尚未出院,您可能不知道出院日期。

如果您遇到有关您的唯一约束的错误,可能是因为您在定义方式方面存在错误。拥有复合主键绝对合法。

要加入患者入院表与接合表的完全内部联接,则联结表中的FK必须具有由患者入院表中的(全部三个)PK字段组成的外键。