'고객'테이블의 외래 키로 기본 키 인 '주소'테이블의 '우편 번호'를 사용하고 싶습니다. 나는 '고객'테이블의 외래 키로 렌털 테이블에서 'RentalID'를 가져 오는 것과 동일한 작업을 수행했지만 'Postcode'에 대해 동일한 작업을 수행하면이 오류가 발생합니다. "외래 키 제약 조건을 확인하십시오. 부모 테이블 주소에 대한 테이블 고객 "입니다.SQL의 외래 키 사용
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");
어떻게 이런 일이 해결 될 수있다 :
내 코드는 내가 khanacademy.org 여기
에 온라인 SQLite는 IDE를 사용하고 있습니다?
주소 세부 정보를 기본 키로 사용하는 것은 좋지 않습니다. 사람들이 같은 주소를 가지고있을 때 어떻게됩니까? 이 데이터는 고유하지 않습니다 –
@ RyanGadsdon 실제로 주소 테이블의 기본 키로 우편 번호를 사용하기 때문에 도시가 변경되지 않으므로 각 우편 번호로 도시를 매핑합니다. 예를 들어, "DB5 3ER"라는 우편 번호는 항상 "Derby", 즉 "DB"에 속합니다. 고객의 주소가 필요하기 때문에 외래 키로 가져오고 싶지만 마을과 우편 번호는 도시가 우편 번호에서 파생 될 수 있으므로 3 번째 정규화 된 형식이 아니기 때문에 기본적으로 반복되는 데이터이므로 나는 우편 번호와 마을을위한 별도의 테이블을 만들었다. –