如何在关系数据库中实施与业务相关的计划(例如,员工日程安排,任命,课程等)

时间:2011-03-21 19:05:22

标签: database sql-server-2008 database-design data-structures relational-database

我不确定如何说出标题;如果不清楚,我道歉。我正在为职业学校开发一个关系数据库。我想在线为学生提供课程安排。我想让设计尽可能灵活。我想存储确切的日期和时间,包括期限和年份。我有兴趣了解你们中的任何人会如何处理这个问题。此外,我正在搜索关于此特定主题的书籍,培训视频,教程或讨论。

我不确定的部分是如何让天数从一个时间表变化到另一个时间表。我知道这是一对多的关系;但是,我不确定在这种情况下我应该如何设置它。还有闰年呢?

我的方法是在附表中创建带有外键的月/日表,年表和术语表。为了解决闰年,我只需要制作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

3 个答案:

答案 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