0

我想在 mysql 数据库上表示一个时间表。我的想法是我应该有三个表:

  1. 一张classdetails表 - 包含班级容量、教室名称等。
  2. 一个class_sessions表:会话的开始时间和结束时间,
  3. 一张class_unit表:课程名称(MAT003. et.c)

class_sessionstable 和table中也会有适当的外键class_unit

最终,我希望能够查询“免费”类(在运行查询时目前没有类)并返回其名称,例如(5b 室)

我列出的表是否足以满足手头的查询?

任何如何使它更好的想法将不胜感激。

4

1 回答 1

1

这就是你所说的,但我仍然不能 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);
于 2011-01-27T21:51:28.290 回答