0

所以我自愿为我当地教会的教育事工创建一个注册系统。它应该能够注册新学生并跟踪他们的进度。以下是我设法收集的要求:

  1. 该教育机构提供多种课程。

  2. 课程有名称和描述。

  3. 课程按级别组织。每个级别有几门课程。

  4. 课程也有要求(即需要先修读的其他课程)。

  5. 学生通过该级别的所有课程后从该级别毕业。

  6. 如果学生不能通过一门课程,他可以根据需要重复多次。

  7. 学生每学期只能选修一门课程。

  8. 不活跃的学生是指没有在当前学期注册的学生。

  9. 教师每学期只教授一门课程。教师可以每学期教授不同的课程。

  10. 可能有老师不教的学期。

现在,这是我的关系模型。

![https://dl.dropbox.com/u/10900918/rmodels.jpg][1]

我的问题是:

  1. 是否缺少任何表?

  2. 查看学期+学期代码描述:这是最好的方法吗?假设一年有 2 个学期,并且每个学期都有相同的开始和结束月份(即第 1 学期:8 月 - 12 月,第 2 学期:1 月 - 5 月),semester_code_description 表真的有必要吗?

  3. 我该如何改进设计?

对不起,我没有包括任何箭头。我正在使用的程序是一团糟。

非常感谢您提前抽出宝贵时间。

4

1 回答 1

0

1)你的设计做得很好。我没有看到任何缺失的表格 - 看起来您满足了所有要求。

2)term_description 表对我来说很有意义,你是否需要它取决于你是否打算对这些数据做任何事情。

3)“学生每学期只能选修一门课程”的要求意味着Has_Taken关系的主键应该是(student_id,term_id)。就目前而言,我可以为同一个学生和学期插入两门不同的课程。Has_Teached 关系也是如此。

其他一些想法:

某些表中的“last_whatever”列将强制对您的实际应用程序进行一些额外的处理。您将需要一些机制来监控/更新这些。另一种选择是从您的表中派生它们。我可以通过查找具有最大年份/代码的学期来获得学生的 last_semester。

最后一个考虑因素,这些课程/描述/级别的稳定性如何?我在一所大学工作了几年,我们的课程会每学期更改一次,这迫使我们为每次更改保存完整的课程记录副本,因为我们希望学生的记录能够反映他们当时实际学习的内容。

这是您的应用程序中的一个小示例。假设我从 1 级毕业。然后一年后,教会在 1 级上增加了一门新课程(课程 A)。我实际上是未毕业的 b/c 现在有我没有的 1 级课程(课程 A )。

如果您的课程非常稳定,这对您来说可能并不重要。祝你好运!

于 2012-12-20T03:20:40.507 回答