「顧客」テーブルの外部キーとして、そこに主キーである「アドレス」テーブルから「郵便番号」を使用します。私は 'RentalID'をレンタルテーブルから 'customers'テーブルの外部キーとして取得していましたが、 'Postcode'で同じことをしようとすると、このエラーが表示されます: "親テーブルアドレスのテーブル顧客 "を選択します。SQLでの外部キーの使用
私はここでkhanacademy.org
でオンラインSQLiteのIDEを使用していますのでご注意ください私のコードです:
CREATE TABLE rentals
(RentalID INTEGER PRIMARY KEY, CarRegistration TEXT, DateHired TEXT,
DateReturned TEXT);
INSERT INTO rentals VALUES ( 1, "J986NDX", "12.2.94", "25.8.94");
INSERT INTO rentals VALUES ( 2, "K788NRT", "1.3.95", "1.4.96");
INSERT INTO rentals VALUES ( 3, "L346NDS", "2.4.96", "");
INSERT INTO rentals VALUES ( 4, "J986NDX", "15.9.94", "14.9.95");
INSERT INTO rentals VALUES ( 5, "M411NGT", "15.9.95", "1.2.96");
CREATE TABLE customers (CustomerID INTEGER, CustomerSurname TEXT,
Customerinitial TEXT, Companyname TEXT, Postcode TEXT, RentalID INTEGER ,
PRIMARY KEY(CustomerID, RentalID), FOREIGN KEY (RentalID) REFERENCES
rentals(RentalID), FOREIGN KEY (Postcode) REFERENCES address(Postcode));
INSERT INTO customers VALUES (153, "Nazarali", "N", "MF Plastics", "DB5
3ER", 1);
INSERT INTO customers VALUES (153, "Nazarali", "N", "MF Plastics", "DB5
3ER", 2);
INSERT INTO customers VALUES (187, "Brown", "L", "MF Plastics", "DB5 3ER",
3); INSERT INTO customers VALUES (287, "Pinner", "M", "Took Ltd", "DB6
8YU", 4); INSERT INTO customers VALUES (287, "Pinner", "M", "Took Ltd",
"DB6 8YU", 5);
CREATE TABLE address (Postcode TEXT PRIMARY KEY, town TEXT);
INSERT INTO address VALUES ("DB5 3ER", "Derby");
INSERT INTO address VALUES ("DB6 8YU", "Derby");
は、これはどのように解決することができますか?
アドレスの詳細をプライマリキーとして使用することは、すでに悪い考えです。人々が同じ住所を持っているとどうなりますか?そのデータはユニークではありません –
@ RyanGadsdon実際には、アドレステーブルの主キーとして郵便番号を使用していますので、町は決して変わらないでしょうから、各郵便番号に町をマップしています。たとえば、郵便番号 "DB5 3ER"は常に "Derby"、つまり "DB"に属します。私はそれが顧客の住所を必要とするので、顧客のテーブルへの外部キーとしてそれを持って来たいだけです。町と郵便番号は、町が郵便番号から派生することができるので、本質的に繰り返されるデータ私は郵便番号と町のための別のテーブルを作成しました。 –