私はSQLの航空会社の予約システムを設計していると私は二つの質問だ:外部キーが意図したとおりに動作しない
1.をこれを使用すると、2つの主キーを持っており、彼らは複合キー(とブリッジテーブルを作成するための適切な方法です両方の外部キーは他のテーブルを参照しています)?
CREATE TABLE FlightAndWeekday
(
WeekID int(1) NOT NULL,
FlightID varchar(5) NOT NULL,
PRIMARY KEY (WeekID, FlightID),
CONSTRAINT fk_FAW_WeekId FOREIGN KEY (WeekID) REFERENCES `Weekday`(`WeekID`),
CONSTRAINT fk_FAW_FlightID FOREIGN KEY (FlightID) REFERENCES `Flight`(`FlightID`)
);
私は、コードのブロックを実行すると、正常に動作しますが、私はShow create table FlightAndWeekday
を書くとき外部キーが表示されていません。さらに、他のテーブルに存在しないレコードをテーブルに追加することができます。これは私を次の質問に導きます。
2.参照する列に存在しない外部キー列にレコードを追加できるのはなぜですか?たとえば、テーブルAの列Aを、テーブルBの列Bを参照する外部キーに設定します。ただし、テーブルBの列Bには存在しない列Aのレコードを追加できます。 私は私の外部キーを作成するために使用されていますので、最後のテーブルでは、はテーブルを参照
CONSTRAINT fk_PaymentInfo_UserID FOREIGN KEY (UserID) REFERENCES Customer(CustomerID)
どのストレージバックエンドを使用していますか? InnoDBのみがIIRCというFK制約を強制します。 – BadZen
こんにちはBadZen、それは実際問題でした。私はMyISAMを使用していました。 InnoDBに変更した後、それはうまくいった。 –