現在、履修登録システムを作成しています。
SQL
1CREATE TABLE `classes` ( 2 class_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 3 name varchar(100) NOT NULL, 4 available ENUM('AD01', 'EC01', 'ED01', 'EL01', 'EL02', 'IS01', 'LO01', '0000') 5) ; 6
このテーブルは
連番のクラスID、講義名、どの学部の学生に対して講義をするか
の3つで構成されていますが、講義によっては複数学部に対して受講を許可する講義もありますので、ここで正規化が必要になってくると思いますが、どのようなテーブルを設けるべきでしょうか。よろしくお願いします。
SQL
1CREATE TABLE `majors` ( 2 code ENUM('AD01', 'EC01', 'ED01', 'EL01', 'EL02', 'IS01', 'LO01') PRIMARY KEY, 3 name varchar(20) NOT NULL, 4) ; 5 6INSERT INTO `majors` (`code`, `name`) VALUES 7('AD01', '広告'),('EC01', '経済'),('ED01', '教育'),('EL01', '電機'),('EL02', '電子'),('IS01', '情報システム'),('LO01', '法律'); 8
これが学部の情報です。
【追記❶】
SQL
1CREATE TABLE `available` ( 2 `class_id` int(11) NOT NULL, 3 `major` enum('AD01','EC01','ED01','EL01','EL02','IS01','LO01','0000') NOT NULL 4) ENGINE=InnoDB DEFAULT CHARSET=utf8; 5 6ALTER TABLE `available` 7 ADD PRIMARY KEY (`class_id`,`major`); 8
SQL
1INSERT INTO `available` (`class_id`, `major`) VALUES 2(1, 'AD01'),(1, 'EC01'),(1, 'EL01'),(2, 'IS01'),(3, 'AD01'),(3, 'EL02');
今考えておりますのがclassesテーブルからavailableを切り離し、テーブルを作って見ました。これでどうでしょうか。サンプルの数値も挿入しておきました。
回答1件
あなたの回答
tips
プレビュー