phpmyadminは使用していませんが、
から始めます。- subject.nameに対する一意の制約、
- ペア{teachers.name、teachers.subject_id}に対する一意の制約
- {events.venue、events.subject_id、events.teacher_id}に対する一意の制約
- ペア{teachers.id、teachers.subject_id}に対する一意の制約。
最初の3つはアイデンティティと関係があります。最後の1つでは、外部キー制約を使用して{teachers.id、teachers.subject_id}をターゲットにできます。
一般的な場合、人の名前は一意ではありません。だからあなたはできた 同じ科目を教える同じ名前の2人の教師がいます。この種の問題にどのように取り組むかは、アプリケーションによって異なります。
次に、外部キー
- Teachers.subject_idからsubjects.idへ、および
- {events.teacher_id、events.subject_id}から{teachers.id、teachers.subject_id}まで
間違った主題の教師をイベントに挿入しようとすると、少なくともエラーが発生します。
INNODBエンジンを使用する 必要があります 外部キー制約を適用します。他のエンジンはそれらを解析しますが、無視します。
FOREIGN KEY句とREFERENCES句は、ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name](...)REFERENCES ...(...)を実装するInnoDBstorageエンジンによってサポートされます。セクション14.6.6「InnoDBおよびFOREIGNKEYの制約」を参照してください。他のストレージエンジンの場合、句は解析されますが無視されます。