我有以下表格:
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)
该表是否违反任何数据库规则或其他任何规则?我的要求是有一张表格,用于映射学生在特定科目中获得的分数,这就是我想出的。它是正确的还是有其他方法来做同样的事情? 如果你打算投票,请让我知道原因。 感谢。
答案 0 :(得分:2)
该数据模型看起来很好。您只需使用每条记录中包含的一些附加信息(标记)设置“多对多”关系。
一个建议是将Subject_Details
表重命名为Subject
。我认为这种措辞使得这种关系更加清晰。
另一个建议是将Subjects_Enrolled
重命名为Enrollment
,然后将Marks_Obtained
列添加到此表中。这将消除对Marks_Details
的需要,因为这两个表基本上包含相同的信息。为什么要存储和维护这些数据两次?想法是当学生在课程中注册时将记录插入Enrollment
,然后在课程结束后更新Marks_Obtained
列。
答案 1 :(得分:2)
您的想法不会“违反任何数据库规则”。我实际上说它几乎是存储这些数据的标准方式。
我建议给Marks_Details
表一个单独的主键,也许是一个日期字段。如果学生想要重新学习该主题,您是否希望新数据覆盖旧数据,或者您是否希望保留旧数据?这取决于你。