2012-05-14 68 views
0

我刚刚递交了一个项目来修改一个学校的网站进行课程注册。目前的系统是为每个班级每周运行一次而设计的,但我需要改变一些事情,以便班级每周可以在一个或多个晚上进行。我正在努力寻找一种有效的方法来关联每个类,并允许客户在注册该系列时查看和选择一个类。学校网站SQL设计

我的第一个想法是添加另一个字段(groupid),该字段可以保存唯一的值以将相应的类绑定在一起。查看排序此方法的查询很困难,因为如果按星期排序,然后按groupid(显示,类选择等)排序,那么这些类将被分开。按groupid排序,然后按星期排序产生非按时间顺序排列的顺序,这也不起作用。有没有办法在排序后将类移动到一起,但不影响排序日期?

我的第二个想法是修改表以支持每行多个类。这将是更简单的方法,但不太灵活,如果班级不在一周中的同一时间运行,则问题更加严重。

无论如何,我有点失落,并希望任何关于设计的反馈和/或查询来帮助解决我的排序问题。

谢谢!

回答

4

无论在给定的一周内遇到多少天,类都是一个实体。创建一个计划表。它将包括一个FK_ClassID和ScheduleDate。如果它在一周内遇到三天,它会有三个记录。这样,学生可以安排多个班级,但要检查以确保他们在一周中的同一天不会重叠。

+1

+1:换句话说,从“时间”解耦“路线”。 –

+0

让我觉得原来的设计并不高雅。 – zinking

+0

原创设计可能会也可能不会很优雅。在多个日期重复多次的类的细节的修改设计存在问题,因为它重复数据 - 如http://en.wikipedia.org/wiki/Database_normalization中所述,它具有更新,删除和插入异常。 – mcdowella