最近,我在查看我的数据库笔记时偶然发现了这个问题。
在年度考试(A级,O级)中,未达到预期成绩的学生可以在随后几年重新参加考试,假设有一个数据库可供学校跟踪,该数据库具有以下属性
Student ID, Exam module, Exam Date, Exam Results这本书提供的问题(不是我的个人问题):什么是合适的主键?
现在,我知道不应该使用几个主键:
我也知道也许
auto-increments
)
可以用作主键。
我的问题来自于从所有属性(学生ID +考试模块+考试日期+考试结果)生成一个复合主键。我的一部分人认为它将作为一个复合主键工作,但为每个表提供一个由所有列组成的复合主键是没有意义的。
发布于 2019-12-18 20:17:26
从您对这个问题的描述来看,下面的元组应该是表中唯一的:(StudentID, ExamModule, ExamDate),因为学生可能在不同的日期(实际上:不同的年份)参加相同的考试。考试的结果不应该是这个唯一的元组的一部分:这会阻止一个学生在同一次考试中获得两个结果。
您是决定将这个列的元组作为表的主键,还是使用某种系列列作为主键,主要取决于您的口味。如果您选择了一个串行密钥,那么无论如何,您都需要对上述三列设置一个复合唯一约束。
发布于 2019-12-18 21:03:48
这不一定符合“任择议定书”最初的问题:
问题:哪些是合适的主键?
但是.(在hind站点中)我将有一个标识字段作为主键。
并将StudentID作为索引(非唯一)和备用键。
https://stackoverflow.com/questions/59399378
复制相似问题