我想在 mysql 数据库上表示一个时间表。 我的想法是我应该有三个表:
classdetails
表 - 包含类(class)容量、教室名称等。class_sessions
表,其中包含: session 的开始时间和结束时间,class_unit
表,其中包含:类(class)名称(MAT003. 等)
class_sessions
表和 class_unit
表中也会有适当的外键。
最终我希望能够查询一个“免费”类(在运行查询时目前没有类)并返回其名称,例如(Room 5b)
我列出的表足以满足当前的查询吗?
任何如何使其变得更好的想法将不胜感激。
最佳答案
这符合你所说的,但我仍然不能 100% 确信你所说的是你想要的。 :-)
CREATE TABLE rooms (
room_num VARCHAR(10) NOT NULL PRIMARY KEY
);
INSERT INTO rooms VALUES
('5B'),
('5C'),
('5D');
CREATE TABLE class_rooms (
class VARCHAR(15) NOT NULL,
room_num VARCHAR(10) NOT NULL,
CONSTRAINT room_nm_fm_rooms FOREIGN KEY (room_num) REFERENCES rooms(room_num),
PRIMARY KEY (class, room_num)
);
INSERT INTO class_rooms VALUES
('Algebra', '5B'),
('Calculus','5C'),
('Discrete Math', '5C');
完成此操作后,获取未使用的房间号的一种方法是使用 SELECT...WHERE...NOT IN 进行查询。这可能不是最快的,但根据我的经验,这是最容易理解的语法。
SELECT room_num
FROM rooms
WHERE room_num NOT IN (SELECT room_num FROM class_rooms);
关于sql - 表示数据库中的时间表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4815404/