2 つの外部キーを持つテーブルを作成しようとしていますが、主キーの組み合わせを主キーとして使用する必要がありますが、「SQL バディ」はそれを受け入れず、複数の主キー エラー メッセージが表示されます。
例
Unit
PK unit ID
unit name
Course
PK course ID
Course Name
CourseHasUnit
FK PK CourseID
FK PK UnitID
主キーの定義は「この行を一意に識別するフィールドまたはフィールドの固定セット」であるため、テーブルに 2 つの主キーを含めることはできません。この定義では、複数の主キーを持つことは無意味です。なぜなら、主キー A がすでに行を一意に識別している場合、なぜ主キー B も必要になるのでしょうか?
おそらく、CourseID と UnitID の両方のフィールドで構成される 1 つの主キーを定義しようとしているときに、CourseID と UnitID に 2 つの主キーを定義しようとしています。
おそらく、これらの線に沿って何かをする必要があります。MySQL は、インラインの主キーと外部キーの宣言を好みません。追加の一意の制約に注意してください。主キー制約と一意キー制約はどちらも候補キーを識別します。任意の候補キーを外部キー参照のターゲットにすることができます。
create table unit (
unit_id ... ,
unit_name ... ,
primary key (unit_id),
unique key (unit_name)
);
create table course (
course_id ... ,
course_name ...,
primary key (course_id),
unique key (course_name)
);
create table course_has_unit (
course_id ... ,
unit_id ... ,
primary key (course_id, unit_id),
foreign key (course_id) references course (course_id),
foreign key (unit_id) references unit (unit_id)
);
テーブルごとに1つの主キーしか存在できないため、「複合キー」について話していると思います。
私のおすすめ:
すべてのテーブルに自動インクリメント タイプの主キーを設定します。一意に識別するキーを形成する複数の値がある場合は、適切なインデックスと一意の制約を作成します。複合主キーは使用しないでください。