免責事項:私は学生です。私は航空会社では働きません。私はプロのプログラマになりすましていません。Oracle SQL 12c複合主キーで複合外部キーを正しく使用する方法は?
ご挨拶、私はこれらのテーブルが一緒に機能するためには、修正する必要があることを理解したいと思います。私はそれが明らかだと確信していますが、それは私にはありません。私には、私の列が正しく一致しているように見えます。複合主キーの一部として複合外来キーを使用することと関係していると確信していますが、これを修正する方法はわかりません。多くの「TODO」がまだ残っている私のフルコードはGithub Gist hereにあります。
私は現時点ではOracle DBMSにアクセスできず、数日間はアクセスしないため、SQLFiddleを使用しています。これは完全な出力SQLPlusや開発者に与えることはできません。私は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)
);