我正在尝试针对以下情况设计数据库。


  学生可以注册某个计划,在特定时间学生可以拥有
  只有一个注册程序。但是,他/她必须能够更改
  在任何给定时间(包括注册到新程序)的已注册程序。最终,学生可以
  注册到多个程序,但他必须只有1个活动
  程序。


我认为应该是1-M关系,但是如何处理“给定时间有1个活动程序”的情况?

最佳答案

您的学生表将具有与ProgramID表相关的Program,例如,他/她选择的表将是当前程序。现在,每次他/她更改程序时,ProgramID都会更改,但是会有一个ProgramHistory记录更改。

因此可能的表将是StudentProgramProgramHistory

例:

学生

StudentID    Lastname    Firstname   Gender  ProgramID
------------------------------------------------------
101          Smith       Jason       M       1
102          Jones       Kate        F       2


程序

ProgramID    ProgramName
------------------------------
1            Computer Science
2            Nursing
3            Electrical Engineering


程序历史

ID         ProgramID    StudentID    Semester    Year
-----------------------------------------------------
1          3            101          Spring      2014
2          2            102          Fall        2014
3          1            101          Fall        2014

关于mysql - 1-M关系数据库设计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25823343/

10-16 21:48