ER 图和关系数据库 - 防止不同的实体同时来自 "taking place"?
ER Diagram and relational database - prevent different entites from "taking place" at the same time?
我需要为以下现实片段制作 ER 图(并将其映射到关系数据库模型):
- 一个讲座可以在多个房间进行(一般情况下)
- 在一个房间里,可以进行多个讲座
- 但在特定时间点,一个房间只能进行一次讲座
- 它发生在某一天并且有开始和结束时间 (例如星期一下午 2 点到 4 点)
我不确定如何以这样的方式构建我的 ER 图(和我的关系数据库模型),讲座不可能重叠(例如,第 1 课周一下午 2 点到 4 点在 1 号教室举行。第 2 课在周一 2:30pm-5pm 举行,也在 1 号教室。)
将日期或 begin/endtime 设置为关键属性并没有多大帮助(事实上,它带来了很多限制)。我唯一想到的是定义一些 "minimum" 讲座可以持续多长时间(例如 1 小时,所以如果我说讲座 1 下午 2 点在 1 号房间,这自动意味着 1 号房间被占用从下午 2 点到下午 3 点)。
这是我的尝试:
有什么想法吗?提前致谢
如果这是一个关于如何使用关系模型来限制在特定时间可以分配给特定房间的讲座数量的学术练习,那么您想要 table 个房间带有 child table 日期和一天中的时间(如果这是您的情况,则以一小时为增量)。这个 child table 将有一个可选的外键到你的课程 table,表明课程当时在那个地方举行。像这样:
CLASSROOM -|----IO< TIMESLOT >O-----O|- COURSE
因为place/time记录指向当时发生的(零或)一门课程,所以讲座之间不可能相互冲突。
但是,从实用的角度来看,这是一个糟糕的设计。
相反,date/time 范围应记录为起点和终点,并且可以使用 SELECT 查询找到重叠,如我对这两个问题的回答所示:Reference 1 Reference 2
我需要为以下现实片段制作 ER 图(并将其映射到关系数据库模型):
- 一个讲座可以在多个房间进行(一般情况下)
- 在一个房间里,可以进行多个讲座
- 但在特定时间点,一个房间只能进行一次讲座
- 它发生在某一天并且有开始和结束时间 (例如星期一下午 2 点到 4 点)
我不确定如何以这样的方式构建我的 ER 图(和我的关系数据库模型),讲座不可能重叠(例如,第 1 课周一下午 2 点到 4 点在 1 号教室举行。第 2 课在周一 2:30pm-5pm 举行,也在 1 号教室。)
将日期或 begin/endtime 设置为关键属性并没有多大帮助(事实上,它带来了很多限制)。我唯一想到的是定义一些 "minimum" 讲座可以持续多长时间(例如 1 小时,所以如果我说讲座 1 下午 2 点在 1 号房间,这自动意味着 1 号房间被占用从下午 2 点到下午 3 点)。
这是我的尝试:
有什么想法吗?提前致谢
如果这是一个关于如何使用关系模型来限制在特定时间可以分配给特定房间的讲座数量的学术练习,那么您想要 table 个房间带有 child table 日期和一天中的时间(如果这是您的情况,则以一小时为增量)。这个 child table 将有一个可选的外键到你的课程 table,表明课程当时在那个地方举行。像这样:
CLASSROOM -|----IO< TIMESLOT >O-----O|- COURSE
因为place/time记录指向当时发生的(零或)一门课程,所以讲座之间不可能相互冲突。
但是,从实用的角度来看,这是一个糟糕的设计。
相反,date/time 范围应记录为起点和终点,并且可以使用 SELECT 查询找到重叠,如我对这两个问题的回答所示:Reference 1 Reference 2