以下のSQLのテーブルは生徒の講義受講履歴です。
生徒のIDと講義番号を格納します。生徒ID,講義番号で一つの値とします(この並びの重複は許さない)。
SQL
1CREATE TABLE `classhistories` ( 2 `classhistory_id` INT(11) NOT NULL AUTO_INCREMENT, 3 `student_id` varchar(100), 4 `class_id` INT(11), 5 PRIMARY KEY (`classhistory_id`), 6 UNIQUE KEY `ix01_classhistories` (`student_id`,`class_id`) 7)
このSQL文ではstudent_id、class_idを一つのように捉えてえいるため
student_id、class_id(1,3)が存在すればstudent_id、class_id(1,3)という1,3 の並びは挿入してもエラーが返ってきますがこのSQL分について質問が複数あります。
質問❶
PRIMARY KEY (classhistory_id
)が特に必要でない場合、classhistory_idを削除し
PRIMARY KEYをstudent_id、class_idをこの二つにつけるという運用でも問題ないでしょうか。そういう例をいくつか見かけた気がします。
質問❷
UNIQUE KEY ix01_classhistories
(student_id
,class_id
)のようにしている理由は
student_id、class_idの並びの重複だけ気にすれば良いため、UNIQUE KEYとPRIMARY KEYを分けているのでしょうか。(つまりを3つのカラムの値全てで一つとして捉える必要がないからでしょうか)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。