Представление расписания в базе данных - PullRequest
0 голосов
/ 27 января 2011

Я хочу представить расписание в базе данных mysql.У меня была идея, что у меня должно быть три таблицы:

  1. a classdetails таблица - содержащая емкость класса, имя класса и т. Д.
  2. a class_sessions таблица с: start_time ивремя окончания сеанса,
  3. a class_unit таблица с: названием курса (MAT003. et.c)

в class_sessions также будут соответствующие внешние ключитаблица и class_unit таблица.

В конце концов я хочу иметь возможность запросить «свободный» класс (класс, который не имеет класса в настоящее время, во время выполнения запроса) и вернуть его имянапример (комната 5b)

Достаточно ли будет перечисленных таблиц для рассматриваемого запроса?

Будут признательны за любые идеи, как сделать это лучше.

1 Ответ

1 голос
/ 28 января 2011

Это делает то, что вы сказали, но я все еще не уверен на 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...