次の3つのテーブルがあります。
CREATE TABLE Flights (
route_number INT NOT NULL PRIMARY KEY,
operated_by INT NOT NULL,
airplane_model VARCHAR(30) NOT NULL,
source VARCHAR(20),
destination VARCHAR(20),
FOREIGN KEY (operated_by) REFERENCES Airline(airline_id),
FOREIGN KEY (airplane_model) REFERENCES Airplanes(airplane_id)
);
CREATE TABLE outgoing (
route_number INT NOT NULL PRIMARY KEY,
poTime Date NOT NULL,
FOREIGN KEY (route_number) REFERENCES Flights(route_number)
);
CREATE TABLE incoming (
route_number INT NOT NULL PRIMARY KEY,
paTime date NOT NULL,
FOREIGN KEY (route_number) REFERENCES Flights(route_number)
);
CREATE TABLE departures(
depid int not null PRIMARY KEY,
route_number INT NOT NULL,
gate VARCHAR(3) NOT NULL,
depT date NOT NULL,
depD date NOT NULL,
status VARCHAR(10),
FOREIGN KEY (route_number) REFERENCES Flights(route_number)
);
CREATE TABLE ARRIVALS(
route_number INT NOT NULL,
gate VARCHAR(3) NOT NULL,
arrT date NOT NULL,
arrD date NOT NULL,
status VARCHAR(10),
arrid int not null PRIMARY KEY,
FOREIGN KEY (route_number) REFERENCES Flights(route_number)
);
計画時間 (paTime と poTime) の間隔 (-1,+1 時間) の間に、2 つのフライトが同じゲートを持つことができないという制約を作成しようとしています。
ビューを作成してビューに挿入する必要があると思いました...しかし、更新可能なビューテーブルにサブクエリを含めることは許可されていないようです? この制約を追加するにはどうすればよいですか?
注: PaTime と PoTime は予定到着時刻と予定出発時刻であり、arrT と depT は実際の到着時刻と実際の出発時刻であり、異なる場合があります。
SO 基本的に: 1. フライトがフライト テーブルに追加されます (追加の制約は必要ありません)。3. 到着テーブルでは、実際の到着時間 (到着予定時間とは異なる場合があります)、ステータス、およびゲートがテーブルに追加されます。これは、制約が必要な場所です。そのゲート番号がこのテーブルと出発テーブルに存在するかどうかを確認するには、予定の到着/出発時刻から -1 ~ +1 時間。したがって、このテーブルでは、着信 (Patime の場合) 発信 (Potime の場合) の時間を結合し、制約を確認する方法が必要です。