ER图和关系数据库 - 防止来自"发生"同时?

时间:2017-10-29 10:59:59

标签: database relational-database entity-relationship

我需要制作一个ER图(并将其映射到关系数据库模型)以用于以下实际部分:

  • 一个讲座可以在多个房间进行(一般而言)
  • 在单个房间内,可以进行多个讲座
  • 但在特定时间点,只能在一个房间内进行一次讲座
  • 它发生在某一天并且有一个开始和结束时间(例如,星期一下午2点到4点)

我不确定如何以这种方式构建我的ER-Diagram(以及我的关系数据库模型),讲座不可能重叠(例如,讲座1在周一下午2点到4点在1号房间进行。第2讲周一下午2:30至5:00,也在1号房间。)

将日期或开始/结束时间设置为关键属性并不是真正有用(事实上,它会带来很多限制)。我唯一想到的是定义一些"最小值"讲座可以持续多长时间(例如1小时,所以如果我说Lectue 1在1号房间下午2点出现,则自动暗示1号房间从下午2点到下午3点拍摄)。

这是我的尝试: My attempt

有什么想法吗?谢谢你

1 个答案:

答案 0 :(得分:1)

如果这是关于如何使用关系模型对特定时间可以为特定房间分配多少个讲座的约束的学术练习,那么您希望有一个带有子日期表的房间表和时间(如果这是你的情况,以一小时为增量)。此子表将具有课程表的可选外键,表示该课程当时保存在该位置。像这样:

CLASSROOM -|----IO< TIMESLOT >O-----O|- COURSE

因为地点/时间记录指向当时和那里发生的(零或)一门课程,所以讲座不可能相互冲突。

但是,这对于实际用途来说是一个糟糕的设计。

相反,日期/时间范围应记录为起点和终点,并且可以使用SELECT查询找到重叠,如我对这两个问题的回答所示:Reference 1 Reference 2