質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

1079閲覧

SQLのテーブル分割

Chandler_Bing

総合スコア673

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

1グッド

0クリップ

投稿2018/12/23 13:12

編集2018/12/23 13:36

現在、履修登録システムを作成しています。

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を切り離し、テーブルを作って見ました。これでどうでしょうか。サンプルの数値も挿入しておきました。

bochan2👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/12/24 00:29

今現在不都合などが起きてなければそれでいいとしか言えません。「データベースの正規化」についてのゴールは仕様を考える人が決めるべき事項であり、やろうと思えばどこまでもできるので「どうでしょうか」だけでは何とも言えません。
guest

回答1

0

ベストアンサー

講義と学部が多対多結合なのですね?
それでいいと思いますが、特別な事情がない限り外部キー制約も付けておいてください。

投稿2018/12/24 09:59

hihijiji

総合スコア4150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問