数据库设计 - 计算表的主键

时间:2012-03-01 20:29:07

标签: database database-design

我有一个小型数据库(16个实体和大约70个属性),但我无法计算其中一个表的最逻辑主键。

我有学生和近亲。一个学生可以有一个近亲,但是近亲可以成为许多学生的NOK。我认为我应该使用NOKname和NOKrelationship(与学生的关系作为复合键,但是如果例如NOK有两个孩子,他们可能是两个孩子的NOK并且是两者的父亲!

NOK的属性:

NName
NAddress
NTelNumber
NRelationship

Student的属性:

StudentNumber
PFirstName
PSurName
PAddress
PDOB
DateRegistered
Sex
PTelNumber
MaritalStatus
DateWaitingList
DatePlaced
ExpectedLengthStay
DateLeave

感谢您提供任何建议!

2 个答案:

答案 0 :(得分:4)

将Id添加到NOK表并将NOKId添加到Student表。这将允许每个学生一个NOK,但NOK可以为多个学生。

答案 1 :(得分:0)

对于学生,我建议制作一个不属于这些领域的单独的密钥。

它应该是主键,整数(如果计划数百万学生,则为bigint),自动增量字段。您可以将其称为通用的,如RID(用于行标识符)。

亲属的下一个表将具有类似的主要RID。然后是一个链接表,如果有一个学生的多个亲属...如果只有一个亲属,NOK表可以有一个foriegn密钥RID到学生表RID字段。