1

2 つの外部キーを持つテーブルを作成しようとしていますが、主キーの組み合わせを主キーとして使用する必要がありますが、「SQL バディ」はそれを受け入れず、複数の主キー エラー メッセージが表示されます。

Unit
PK unit ID
unit name

Course 
PK course ID
Course Name

CourseHasUnit
FK PK CourseID
FK PK UnitID
4

4 に答える 4

2

主キーの定義は「この行を一意に識別するフィールドまたはフィールドの固定セット」であるため、テーブルに 2 つの主キーを含めることはできません。この定義では、複数の主キーを持つことは無意味です。なぜなら、主キー A がすでに行を一意に識別している場合、なぜ主キー B も必要になるのでしょうか?

おそらく、CourseID と UnitID の両方のフィールドで構成される 1 つの主キーを定義しようとしているときに、CourseID と UnitID に 2 つの主キーを定義しようとしています。

于 2013-02-06T03:53:47.173 に答える
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)
);
于 2013-02-06T04:10:00.987 に答える
0

テーブルごとに1つの主キーしか存在できないため、「複合キー」について話していると思います。

私のおすすめ:

すべてのテーブルに自動インクリメント タイプの主キーを設定します。一意に識別するキーを形成する複数の値がある場合は、適切なインデックスと一意の制約を作成します。複合主キーは使用しないでください。

于 2016-09-11T12:15:19.817 に答える