我正在尝试针对以下情况设计数据库。
学生可以注册某个计划,在特定时间学生可以拥有
只有一个注册程序。但是,他/她必须能够更改
在任何给定时间(包括注册到新程序)的已注册程序。最终,学生可以
注册到多个程序,但他必须只有1个活动
程序。
我认为应该是1-M关系,但是如何处理“给定时间有1个活动程序”的情况?
最佳答案
您的学生表将具有与ProgramID
表相关的Program
,例如,他/她选择的表将是当前程序。现在,每次他/她更改程序时,ProgramID
都会更改,但是会有一个ProgramHistory
记录更改。
因此可能的表将是Student
,Program
,ProgramHistory
。
例:
学生
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/