我已经多次看到此类问题,并试图确定以非重叠方式存储范围的最佳方式。例如,在安排某种资源时,一次只能由一个人使用。我所看到的大多是这样的:
PERSON ROOM START_TIME END_TIME
Col. Mustard Library 08:00 10:00
Prof. Plum Library 10:00 12:00
防止新条目与现有时间表重叠的最佳方法是什么,例如如果 Scarlet 小姐想从 11:00 到 11:30 预订图书馆?内联约束不起作用,我认为这不能在触发器中轻松完成。处理最初在表中查找现有冲突的所有插入的过程?
其次,处理并发问题的最佳方法是什么?假设 Scarlet 小姐在 13:00 到 15:00 之间想要图书馆,而 White 夫人在 14:00 到 16:00 之间想要图书馆。(1)中的过程会发现这两个时间表都可以接受,但很明显,它们不是。我唯一能想到的是手动锁定表或某种互斥锁。
上表的主键是什么(房间,开始时间)?