我不确定如何说出标题;如果不清楚,我道歉。我正在为职业学校开发一个关系数据库。我想在线为学生提供课程安排。我想让设计尽可能灵活。我想存储确切的日期和时间,包括期限和年份。我有兴趣了解你们中的任何人会如何处理这个问题。此外,我正在搜索关于此特定主题的书籍,培训视频,教程或讨论。
我不确定的部分是如何让天数从一个时间表变化到另一个时间表。我知道这是一对多的关系;但是,我不确定在这种情况下我应该如何设置它。还有闰年呢?
我的方法是在附表中创建带有外键的月/日表,年表和术语表。为了解决闰年,我只需要制作366天的月/日表。我不确定这个想法是否有点过分,我正在寻找最优雅的解决方案来处理日程安排中的任何实际变化。
如果我离开,我道歉,我一直在努力教自己关系数据库开发,但我刚刚开始。
I would like the schedule to output partly like this: Example Class A Schedule: 01/02/2011 1:00pm-3:00pm 01/03/2011 2:00pm-4:00pm 01/04/2011 1:00pm-3:00pm 01/05/2011 2:00pm-5:00pm 01/08/2011 1:00pm-4:00pm Example Class B Schedule: 01/02/2011 1:00pm-3:00pm 01/03/2011 2:00pm-4:00pm
答案 0 :(得分:1)
以下是一些业务规则;他们与大学的相似:
答案 1 :(得分:0)
我可能会或可能不会理解您的业务需求,因此这可能是非常糟糕的建议。但是,我要说的是,如果表中唯一的内容是日历,而不是在各个日期之间没有任何其他归因,那么就不要创建一个表来保留日期。
如果您的日程安排基于任意天数的轮换时间表,例如“第1天”到“第6天”等,那么这值得拥有自己的表格,那么课程的出现将成为轮换和课程的一天。每个交叉点都有一个日期和时间以及类和轮换日的外键。
根据您的业务规则,条款可能会在课程上方或任意日程安排之上插入。无论如何,Term表应该包括起始日期和结束日期。
您不需要为闰年或一个月内的日子等做任何特殊操作,因为SQL非常聪明,能够处理与日期相关的查询。
您能告诉我更多关于您制定时间表的业务规则的信息吗?如果是这样,也许我可以磨练我的建议。
答案 2 :(得分:0)
我想出了一个基于你提到的设计,我把它包含在下面。
* Primary Key ~ Foreign Key Classes_Table *ClassID ClassName ClassNumber ~ScheduleID Schedules_Table *ScheduleID ~ClassID Class_Schedule_Table (There Would Be Many Of These Tables, 1 For Each ScheduleID) *DayID Date StartTime EndTime ~TermID ~ClassID ~ScheduleID Terms_Table *TermID TermName Students_Table *StudentID StudentName Student_Schedules_Table *RegistrationID ~StudentID ~ClassID ~ScheduleID