免責事項: 私は学生です。私は航空会社で働いていません。私はプロのプログラマーのふりをしません。
こんにちは。これらのテーブルを連携させるには、何を修正する必要があるかを理解したいと思います。それは明らかだと思いますが、私にはそうではありません。私には、列が正しく一致しているように見えます。複合主キーの一部として複合外部キーを使用することに関係していると確信していますが、これを修正する方法がわかりません。多くの「TODO」がまだ残っている私の完全なコードは、Github Gist here にあります。
現時点では Oracle DBMS にアクセスできず、今後数日間アクセスできないため、SQLFiddle を使用しています。これは、SQLPlus または Developer ができる完全な出力を提供しません。私は 12c を勉強しているので最適ではありませんが、SQLFiddle は 11g しかサポートしていません。よろしくお願いします。
これは SQL フィドルのエラー出力です。
ORA-02256: number of referencing columns must match referenced columns
そして、ここに互いに一致しない 2 つのテーブルがあります。
CREATE TABLE FLIGHT (
FLIGHT_ID NUMBER(3),
AIRCRAFT_ID VARCHAR(8),
FLIGHT_DATE DATE,
CONSTRAINT PK_flight_comp_pk PRIMARY KEY (FLIGHT_ID,FLIGHT_DATE),
CONSTRAINT FK_flight_route_ID FOREIGN KEY (FLIGHT_ID)
REFERENCES FLIGHT_ROUTE(ROUTE_ID),
CONSTRAINT FK_flight_serial_ID FOREIGN KEY (AIRCRAFT_ID)
REFERENCES AIRCRAFT(AIRCRAFT_ID)
);
CREATE TABLE RESERVATIONS (
CUSTOMER_ID NUMBER(4),
FLIGHT_ID NUMBER(3),
QTY_RESERVED_SEATS NUMBER(3),
CONSTRAINT PK_reservations PRIMARY KEY (CUSTOMER_ID,FLIGHT_ID),
CONSTRAINT FK_reservations_customer_ID FOREIGN KEY (CUSTOMER_ID)
REFERENCES CUSTOMER(CUSTOMER_ID),
CONSTRAINT FK_reservations_flight_ID FOREIGN KEY (FLIGHT_ID)
REFERENCES FLIGHT(FLIGHT_ID,FLIGHT_DATE)
);