尝试使用获得的标记来映射学生

时间:2013-10-01 09:37:41

标签: sql database database-design data-modeling

我有以下表格:

Student(Student_ID(PK), FName, LName,...)
Subject_details(Subject_code(PK), Subject_Name)
Subjects_Enrolled(Student_ID,Subject_Code)

我的问题是: 我可以将表格作为下面的表格

Marks_Details(Student_ID,Subject_Code,Marks_Obtained)

该表是否违反任何数据库规则或其他任何规则?我的要求是有一张表格,用于映射学生在特定科目中获得的分数,这就是我想出的。它是正确的还是有其他方法来做同样的事情? 如果你打算投票,请让我知道原因。 感谢。

2 个答案:

答案 0 :(得分:2)

该数据模型看起来很好。您只需使用每条记录中包含的一些附加信息(标记)设置“多对多”关系。

一个建议是将Subject_Details表重命名为Subject。我认为这种措辞使得这种关系更加清晰。

另一个建议是将Subjects_Enrolled重命名为Enrollment,然后将Marks_Obtained列添加到此表中。这将消除对Marks_Details的需要,因为这两个表基本上包含相同的信息。为什么要存储和维护这些数据两次?想法是当学生在课程中注册时将记录插入Enrollment,然后在课程结束后更新Marks_Obtained列。

答案 1 :(得分:2)

您的想法不会“违反任何数据库规则”。我实际上说它几乎是存储这些数据的标准方式。

我建议给Marks_Details表一个单独的主键,也许是一个日期字段。如果学生想要重新学习该主题,您是否希望新数据覆盖旧数据,或者您是否希望保留旧数据?这取决于你。