0

mysqlデータベースで時刻表を表現したいと思います。私は3つのテーブルが必要だと考えていました。

  1. classdetailsテーブル-クラスの定員、教室名などが含まれています。
  2. 次のclass_sessionsテーブル:セッションのstart_timeとend_time、
  3. class_unitコース名(MAT003。et.c)の表

class_sessionsテーブルとテーブルにも適切な外部キーがありclass_unitます。

最終的には、「無料」クラス(クエリの実行時に現在クラスがないクラス)をクエリして、その名前を返すことができるようにしたいと思います(例:(Room 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');

それが終わったら、使用されていない部屋番号を取得する1つの方法は、SELECT ... WHERE ...NOTINを使用したクエリを使用することです。これはおそらく最速ではありませんが、私の経験では、理解するのが最も簡単な構文です。

SELECT room_num 
FROM rooms 
WHERE room_num NOT IN (SELECT room_num FROM class_rooms);
于 2011-01-27T21:51:28.290 に答える