我正在为我的大学应用程序设计一个数据库。 报告实体包含以下内容:
每个report
都有一个students
,courses
和学生rating
的列表。
问题是,随着时间的推移,课程和学生人数可能会发生变化。数据库结构应该灵活,易于适应这些变化。在这种情况下,如何最好地在关系数据库中定义这些实体和设计表之间的关系?
我对此事有一些想法。也许这个模型最能描述关系并解决问题:
或者REPORT to STUDENT
的关系是多余和多余的?报告中是否有足够的关系?例如,只有REPORT to COURSE
没有
REPORT to STUDENT
:
哪个选择更好,为什么?这种结构有任何其他缺点吗?
提前感谢您的建议!
答案 0 :(得分:0)
不要在学生或课程表中包含指向“报告”表的链接。我建议你使用以下结构:
STUDENT
id
forename
surname
dob
... other fields
LECTURER
id
forename
surname
honorific (Mr/Dr/Professor, etc)
department id
... other fields
COURSE
id
name
duration
credits
SEMESTER
id
course id
lecturer id
RATINGS
semester id
student id
mark
通过这种方式,您可以在不同的日期为几位讲师讲授课程(例如经济学概论)。学生注册一个特定的学期,并在该学期有一个标记。如果您希望学生在给定的课程/学期中有多个分数,则在分级表中添加日期字段。
您的报告通常会查询评级表。
答案 1 :(得分:0)
好的,这样可以清除一些东西。我仍然不知道你究竟想要建模什么,但我会给它一个刺:“报告是一组收视率?”是
评级PK 1 确保没有学生可以多次评价同一课程。报告只是一组评分。
此结构不会 确保报告中的所有评级都与同一课程相关,也不会以任何方式强制执行课程 2 。
1 具体而言,REPORT_ID
PK的事实,因此一个评级不能成为多个报告的一部分。如果您想要相反,那么您不能只在PK中包含该字段,因为这将允许不同的VALUE
- 您将需要一个正确的联结表。
2 您可能希望禁止未参加课程的学生对课程进行评分。让我知道您打算如何代表课程出席情况,我可能会有一些想法如何将其与评级和报告联系起来......