所以我自愿为我当地教会的教育部创建一个注册系统。它应该能够注册新学生并跟踪他们的进度。以下是我设法收集的要求:
教育机构提供多门课程。
课程有名称和描述。
课程按级别组织。每个级别有几门课程。
课程也有要求(即首先需要采取的其他课程)。
当一名学生通过该级别的所有课程时,他们将从该级别毕业。
如果学生不能通过课程,他可以根据自己的意愿/需要重复课程。
学生每学期只能修一门课程。
不活跃的学生是指未在本学期注册的学生。
教师每学期只会教一门课程。教师可以每学期教授不同的课程。
- 醇>
教师可能没有教学的学期。
现在,这是我的关系模型。
![https://dl.dropbox.com/u/10900918/rmodels.jpg] [1]
我的问题是:
是否缺少任何表格?
查看学期+ semester_code_description:这是最好的方法吗?假设一年有两个学期并且每个学期有相同的开始和结束月份(即第一学期:8月 - 12月,第二学期:1月 - 5月),semester_code_description表真的有必要吗?
我如何改进设计?
抱歉,我没有包含任何箭头。我正在使用的程序很乱。
非常感谢您提前花了宝贵的时间。
答案 0 :(得分:0)
1)你的设计很好。我没有看到任何丢失的表 - 看起来你满足了所有要求。
2)semester_description表对我有意义,无论你是否需要它取决于你是否打算对这些数据做任何事情。
3)“学生每学期只能修一门课程”的要求意味着Has_Taken关系的主键应该是(student_id,semester_id)。现在,我可以为同一个学生和学期插入两门不同的课程。类似地,对于Has_Teached关系。
其他一些想法:
某些表中的“last_whatever”列将强制对您的实际应用程序进行一些额外处理。您将需要一些机制来监视/更新这些。另一种选择是从表中派生出来。我可以通过查找具有最大年份/代码的学期来获得学生的last_semester。
最后一个考虑因素,这些课程/描述/水平有多稳定?我在一所大学工作了几年,我们的课程将在一个学期的基础上改变,迫使我们为每次改变保存一份完整的课程记录副本,因为我们希望学生的记录能够反映他们当时的实际情况。
以下是您应用中的一个小例子。让我们说我从1级毕业。然后一年后,教会增加了一门新课程(课程A)到1级。我将实际上没有毕业b / c现在有1级课程我没有(课程A) )。
如果您的课程非常稳定,这对您来说无关紧要。祝你好运!