Database ER图和关系数据库-防止不同的实体同时发生?

Database ER图和关系数据库-防止不同的实体同时发生?,database,relational-database,entity-relationship,Database,Relational Database,Entity Relationship,我需要制作一个ER图,并将其映射到关系数据库模型,以满足以下现实需求: 一般来说,一次讲座可以在多个房间进行 在一个房间里,可以进行多个讲座 但在某个特定的时间点,一间教室只能进行一次讲座 它发生在某一天,有开始和结束时间,例如周一下午2点到4点 我不知道如何以这样的方式构建我的ER图和关系数据库模型,以至于讲座不可能重叠。例如,第1课将于周一下午2点至4点在第1教室举行。第二课于周一下午2:30-5点在1号教室举行 将日期或开始/结束时间设置为关键属性实际上没有什么帮助,它带来了很多限制。我想

我需要制作一个ER图,并将其映射到关系数据库模型,以满足以下现实需求:

一般来说,一次讲座可以在多个房间进行 在一个房间里,可以进行多个讲座 但在某个特定的时间点,一间教室只能进行一次讲座 它发生在某一天,有开始和结束时间,例如周一下午2点到4点 我不知道如何以这样的方式构建我的ER图和关系数据库模型,以至于讲座不可能重叠。例如,第1课将于周一下午2点至4点在第1教室举行。第二课于周一下午2:30-5点在1号教室举行

将日期或开始/结束时间设置为关键属性实际上没有什么帮助,它带来了很多限制。我想到的唯一一件事是定义一次讲座的最短持续时间,例如1小时,因此如果我说1号房间的Lectue 1在下午2点出现,这就自动意味着1号房间从下午2点到下午3点

以下是我的尝试:


有什么想法吗?感谢您的支持

如果这是一项关于如何使用关系模型对在特定时间分配给特定房间的讲座数量施加限制的学术练习,那么您希望有一个房间表,其中包含日期和时间的子表,例如以一小时为增量,如果这是您的场景。此子表将有一个可选的课程表外键,指示课程当时在该位置举行。大概是这样的:

课堂-|--IO<时隙>O--O课程

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

然而,这是一个不好的设计,用于实际目的


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

解释得很好,谢谢!在制作数据库时,我会考虑所有这些问题。顺便说一句,我已经通过发布相应ER图的截图编辑了我的原始问题。我认为这是正确的,因为ER图的语义不够强,我无法表达更多的内容。@Infecto您的ERD看起来不错。我想补充一点,在物理模型中,最简单的实现是将开始点和结束点的日期和时间结合起来。这将大大简化SQL查询。