| 1 | CREATE TABLE Passenger
|
|---|
| 2 | (
|
|---|
| 3 | PassengerId BIGSERIAL NOT NULL,
|
|---|
| 4 | FirstName varchar(30) NOT NULL,
|
|---|
| 5 | LastName varchar(30) NOT NULL,
|
|---|
| 6 | PassportNumber varchar(30) NOT NULL UNIQUE,
|
|---|
| 7 | Nationality varchar(20) NOT NULL,
|
|---|
| 8 | DateOfBirth date NOT NULL,
|
|---|
| 9 | Gender varchar(10) NOT NULL,
|
|---|
| 10 | PhoneNumber bigint UNIQUE,
|
|---|
| 11 | Email varchar(40) UNIQUE,
|
|---|
| 12 | SeatNumber int,
|
|---|
| 13 | PRIMARY KEY (PassengerId)
|
|---|
| 14 | );
|
|---|
| 15 |
|
|---|
| 16 | CREATE TABLE Airport
|
|---|
| 17 | (
|
|---|
| 18 | AirportId BIGSERIAL NOT NULL,
|
|---|
| 19 | AirportName varchar(50) NOT NULL UNIQUE,
|
|---|
| 20 | IataCode varchar(5) NOT NULL UNIQUE,
|
|---|
| 21 | Location text NOT NULL,
|
|---|
| 22 | ContactEmail varchar(40) UNIQUE,
|
|---|
| 23 | ContactPhone bigint UNIQUE,
|
|---|
| 24 | OperationalStatus varchar(20) NOT NULL,
|
|---|
| 25 | CONSTRAINT chk_airport_status CHECK (OperationalStatus IN ('Open', 'Closed', 'Under Maintenance', 'Restricted')),
|
|---|
| 26 | PRIMARY KEY (AirportId)
|
|---|
| 27 | );
|
|---|
| 28 |
|
|---|
| 29 | CREATE TABLE AircraftType
|
|---|
| 30 | (
|
|---|
| 31 | AircraftTypeId BIGSERIAL NOT NULL,
|
|---|
| 32 | Manifacturer varchar(50) NOT NULL,
|
|---|
| 33 | Model varchar(30) NOT NULL,
|
|---|
| 34 | Category varchar(30) NOT NULL,
|
|---|
| 35 | PRIMARY KEY (AircraftTypeId)
|
|---|
| 36 | );
|
|---|
| 37 |
|
|---|
| 38 | CREATE TABLE Aircraft
|
|---|
| 39 | (
|
|---|
| 40 | AircraftId BIGSERIAL NOT NULL,
|
|---|
| 41 | AircraftModel varchar(20) NOT NULL,
|
|---|
| 42 | Manufacturer varchar(50) NOT NULL,
|
|---|
| 43 | Capacity int NOT NULL,
|
|---|
| 44 | RegistrationNumber varchar(20) NOT NULL UNIQUE,
|
|---|
| 45 | Status varchar(20) NOT NULL,
|
|---|
| 46 | LastInspectionDate date,
|
|---|
| 47 | AircraftTypeId BIGINT,
|
|---|
| 48 | CONSTRAINT chk_aircraft_capacity CHECK (Capacity > 0),
|
|---|
| 49 | CONSTRAINT chk_aircraft_status CHECK (Status IN ('Active', 'Inactive', 'Under Maintenance', 'Retired', 'Grounded')),
|
|---|
| 50 | PRIMARY KEY (AircraftId),
|
|---|
| 51 | FOREIGN KEY (AircraftTypeId) REFERENCES AircraftType (AircraftTypeId) ON DELETE RESTRICT ON UPDATE CASCADE
|
|---|
| 52 | );
|
|---|
| 53 |
|
|---|
| 54 | CREATE TABLE Hangar
|
|---|
| 55 | (
|
|---|
| 56 | HangarId BIGSERIAL NOT NULL,
|
|---|
| 57 | HangarName varchar(30) NOT NULL UNIQUE,
|
|---|
| 58 | AirportId BIGINT,
|
|---|
| 59 | HangarCapacity int,
|
|---|
| 60 | HangarType varchar(50) NOT NULL,
|
|---|
| 61 | Status varchar(20) NOT NULL,
|
|---|
| 62 | CONSTRAINT chk_hangar_capacity CHECK (HangarCapacity IS NULL OR HangarCapacity > 0),
|
|---|
| 63 | CONSTRAINT chk_hangar_status CHECK (Status IN ('Open', 'Closed', 'Under Maintenance', 'Full')),
|
|---|
| 64 | PRIMARY KEY (HangarId),
|
|---|
| 65 | FOREIGN KEY (AirportId) REFERENCES Airport (AirportId) ON DELETE RESTRICT ON UPDATE CASCADE
|
|---|
| 66 | );
|
|---|
| 67 |
|
|---|
| 68 | CREATE TABLE Airline
|
|---|
| 69 | (
|
|---|
| 70 | AirlineId BIGSERIAL NOT NULL,
|
|---|
| 71 | Name varchar(20) NOT NULL UNIQUE,
|
|---|
| 72 | Country varchar(20) NOT NULL,
|
|---|
| 73 | Contact bigint NOT NULL UNIQUE,
|
|---|
| 74 | Email varchar(30) UNIQUE,
|
|---|
| 75 | PRIMARY KEY (AirlineId)
|
|---|
| 76 | );
|
|---|
| 77 |
|
|---|
| 78 | CREATE TABLE Flights
|
|---|
| 79 | (
|
|---|
| 80 | FlightId BIGSERIAL NOT NULL,
|
|---|
| 81 | FlightNumber int NOT NULL UNIQUE,
|
|---|
| 82 | AircraftId BIGINT,
|
|---|
| 83 | ArrivalTime timestamp NOT NULL,
|
|---|
| 84 | DepartureTime timestamp NOT NULL,
|
|---|
| 85 | OriginAirportId BIGINT,
|
|---|
| 86 | DestinationAirportId BIGINT,
|
|---|
| 87 | FlightClass varchar(20) NOT NULL,
|
|---|
| 88 | OperatingStatus varchar(20) NOT NULL,
|
|---|
| 89 | AirlineId BIGINT,
|
|---|
| 90 | CONSTRAINT chk_flight_arrival_after_departure CHECK (ArrivalTime > DepartureTime),
|
|---|
| 91 | CONSTRAINT chk_flight_class CHECK (FlightClass IN ('Economy', 'Premium Economy', 'Business', 'First Class')),
|
|---|
| 92 | CONSTRAINT chk_flight_status CHECK (OperatingStatus IN ('Scheduled', 'Boarding', 'Departed', 'En Route', 'Landed', 'Arrived','Delayed', 'Cancelled', 'Diverted')),
|
|---|
| 93 | PRIMARY KEY (FlightId),
|
|---|
| 94 | FOREIGN KEY (AircraftId) REFERENCES Aircraft (AircraftId) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|---|
| 95 | FOREIGN KEY (OriginAirportId) REFERENCES Airport (AirportId) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|---|
| 96 | FOREIGN KEY (DestinationAirportId) REFERENCES Airport (AirportId) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|---|
| 97 | FOREIGN KEY (AirlineId) REFERENCES Airline (AirlineId) ON DELETE RESTRICT ON UPDATE CASCADE
|
|---|
| 98 | );
|
|---|
| 99 |
|
|---|
| 100 | CREATE TABLE Gate
|
|---|
| 101 | (
|
|---|
| 102 | GateId BIGSERIAL NOT NULL,
|
|---|
| 103 | GateCode int NOT NULL,
|
|---|
| 104 | TerminalId BIGINT NOT NULL,
|
|---|
| 105 | Status varchar(20) NOT NULL,
|
|---|
| 106 | CONSTRAINT chk_gate_status CHECK (Status IN ('Open', 'Closed', 'Boarding', 'Occupied', 'Under Maintenance')),
|
|---|
| 107 | UNIQUE (GateCode, TerminalId),
|
|---|
| 108 | PRIMARY KEY (GateId)
|
|---|
| 109 | );
|
|---|
| 110 |
|
|---|
| 111 | CREATE TABLE Runway
|
|---|
| 112 | (
|
|---|
| 113 | RunwayId BIGSERIAL NOT NULL,
|
|---|
| 114 | RunwayName varchar(20) NOT NULL,
|
|---|
| 115 | AirportId BIGINT,
|
|---|
| 116 | RunwayLength int,
|
|---|
| 117 | RunwayType varchar(20) NOT NULL,
|
|---|
| 118 | Status varchar(20) NOT NULL,
|
|---|
| 119 | CONSTRAINT chk_runway_length CHECK (RunwayLength IS NULL OR RunwayLength > 0),
|
|---|
| 120 | CONSTRAINT chk_runway_status CHECK (Status IN ('Open', 'Closed', 'Under Maintenance', 'Restricted', 'Occupied')),
|
|---|
| 121 | UNIQUE (RunwayName, AirportId),
|
|---|
| 122 | PRIMARY KEY (RunwayId),
|
|---|
| 123 | FOREIGN KEY (AirportId) REFERENCES Airport (AirportId) ON DELETE RESTRICT ON UPDATE CASCADE
|
|---|
| 124 | );
|
|---|
| 125 |
|
|---|
| 126 | CREATE TABLE Taxiway
|
|---|
| 127 | (
|
|---|
| 128 | TaxiwayId BIGSERIAL NOT NULL,
|
|---|
| 129 | TaxiwayName varchar(10) NOT NULL,
|
|---|
| 130 | AirportId BIGINT,
|
|---|
| 131 | TaxiwayLength int NOT NULL,
|
|---|
| 132 | Direction varchar(20) NOT NULL,
|
|---|
| 133 | Status varchar(20) NOT NULL,
|
|---|
| 134 | CONSTRAINT chk_taxiway_length CHECK (TaxiwayLength > 0),
|
|---|
| 135 | CONSTRAINT chk_taxiway_status CHECK (Status IN ('Open', 'Closed', 'Restricted', 'Under Maintenance', 'Occupied', 'Available', 'Blocked', 'Inactive')),
|
|---|
| 136 | UNIQUE (TaxiwayName, AirportId),
|
|---|
| 137 | PRIMARY KEY (TaxiwayId),
|
|---|
| 138 | FOREIGN KEY (AirportId) REFERENCES Airport (AirportId) ON DELETE RESTRICT ON UPDATE CASCADE
|
|---|
| 139 | );
|
|---|
| 140 |
|
|---|
| 141 | CREATE TABLE Terminal
|
|---|
| 142 | (
|
|---|
| 143 | TerminalId BIGSERIAL NOT NULL,
|
|---|
| 144 | TerminalName varchar(50) NOT NULL,
|
|---|
| 145 | TerminalCode varchar(10) NOT NULL,
|
|---|
| 146 | AirportId BIGINT,
|
|---|
| 147 | TerminalStatus varchar(20) NOT NULL,
|
|---|
| 148 | Capacity int,
|
|---|
| 149 | CONSTRAINT chk_terminal_capacity CHECK (Capacity IS NULL OR Capacity > 0),
|
|---|
| 150 | CONSTRAINT chk_terminal_status CHECK (TerminalStatus IN ('Open', 'Closed', 'Under Maintenance', 'Restricted')),
|
|---|
| 151 | UNIQUE (TerminalCode, AirportId),
|
|---|
| 152 | PRIMARY KEY (TerminalId),
|
|---|
| 153 | FOREIGN KEY (AirportId) REFERENCES Airport (AirportId) ON DELETE RESTRICT ON UPDATE CASCADE
|
|---|
| 154 | );
|
|---|
| 155 |
|
|---|
| 156 | CREATE TABLE AircraftMaintenance
|
|---|
| 157 | (
|
|---|
| 158 | MaintenanceId BIGSERIAL NOT NULL,
|
|---|
| 159 | AircraftId BIGINT,
|
|---|
| 160 | MaintenanceType varchar(20) NOT NULL,
|
|---|
| 161 | StartDate timestamp NOT NULL,
|
|---|
| 162 | EndDate timestamp,
|
|---|
| 163 | DurationMinutes int,
|
|---|
| 164 | WorkDescription text,
|
|---|
| 165 | Status varchar(20) NOT NULL,
|
|---|
| 166 | MaintenanceCost int,
|
|---|
| 167 | AirportId BIGINT,
|
|---|
| 168 | CONSTRAINT chk_maintenance_duration CHECK (DurationMinutes IS NULL OR DurationMinutes > 0),
|
|---|
| 169 | CONSTRAINT chk_maintenance_cost CHECK (MaintenanceCost IS NULL OR MaintenanceCost >= 0),
|
|---|
| 170 | CONSTRAINT chk_maintenance_end_after_start CHECK (EndDate IS NULL OR EndDate > StartDate),
|
|---|
| 171 | CONSTRAINT chk_maintenance_status CHECK (Status IN ('Scheduled', 'In Progress', 'Completed', 'Cancelled', 'On Hold', 'Pending')),
|
|---|
| 172 | PRIMARY KEY (MaintenanceId),
|
|---|
| 173 | FOREIGN KEY (AircraftId) REFERENCES Aircraft (AircraftId) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|---|
| 174 | FOREIGN KEY (AirportId) REFERENCES Airport (AirportId) ON DELETE RESTRICT ON UPDATE CASCADE
|
|---|
| 175 | );
|
|---|
| 176 |
|
|---|
| 177 | CREATE TABLE Arrivals
|
|---|
| 178 | (
|
|---|
| 179 | ArrivalId BIGSERIAL NOT NULL,
|
|---|
| 180 | FlightId BIGINT,
|
|---|
| 181 | GateId BIGINT,
|
|---|
| 182 | RunwayId BIGINT,
|
|---|
| 183 | Status varchar(20) NOT NULL,
|
|---|
| 184 | ArrivalTime timestamp,
|
|---|
| 185 | OriginAirportId BIGINT,
|
|---|
| 186 | TaxiwayId BIGINT,
|
|---|
| 187 | PRIMARY KEY (ArrivalId),
|
|---|
| 188 | FOREIGN KEY (FlightId) REFERENCES Flights (FlightId) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|---|
| 189 | FOREIGN KEY (GateId) REFERENCES Gate (GateId) ON DELETE SET NULL ON UPDATE CASCADE,
|
|---|
| 190 | FOREIGN KEY (RunwayId) REFERENCES Runway (RunwayId) ON DELETE SET NULL ON UPDATE CASCADE,
|
|---|
| 191 | FOREIGN KEY (OriginAirportId) REFERENCES Airport (AirportId) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|---|
| 192 | FOREIGN KEY (TaxiwayId) REFERENCES Taxiway (TaxiwayId) ON DELETE SET NULL ON UPDATE CASCADE
|
|---|
| 193 | );
|
|---|
| 194 |
|
|---|
| 195 | CREATE TABLE Departures
|
|---|
| 196 | (
|
|---|
| 197 | DepartureId BIGSERIAL NOT NULL,
|
|---|
| 198 | FlightId BIGINT,
|
|---|
| 199 | GateId BIGINT,
|
|---|
| 200 | RunwayId BIGINT,
|
|---|
| 201 | Status varchar(20) NOT NULL,
|
|---|
| 202 | DepartureTime timestamp,
|
|---|
| 203 | DestinationAirportId BIGINT,
|
|---|
| 204 | TaxiwayId BIGINT,
|
|---|
| 205 | PRIMARY KEY (DepartureId),
|
|---|
| 206 | FOREIGN KEY (FlightId) REFERENCES Flights (FlightId) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|---|
| 207 | FOREIGN KEY (GateId) REFERENCES Gate (GateId) ON DELETE SET NULL ON UPDATE CASCADE,
|
|---|
| 208 | FOREIGN KEY (RunwayId) REFERENCES Runway (RunwayId) ON DELETE SET NULL ON UPDATE CASCADE,
|
|---|
| 209 | FOREIGN KEY (DestinationAirportId) REFERENCES Airport (AirportId) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|---|
| 210 | FOREIGN KEY (TaxiwayId) REFERENCES Taxiway (TaxiwayId) ON DELETE SET NULL ON UPDATE CASCADE
|
|---|
| 211 | );
|
|---|
| 212 |
|
|---|
| 213 | CREATE TABLE Luggage
|
|---|
| 214 | (
|
|---|
| 215 | LuggageId BIGSERIAL NOT NULL,
|
|---|
| 216 | LuggageType varchar(20) NOT NULL,
|
|---|
| 217 | Weight numeric,
|
|---|
| 218 | "Size" varchar(20),
|
|---|
| 219 | Status varchar(20) NOT NULL,
|
|---|
| 220 | CheckedAt timestamp,
|
|---|
| 221 | FlightId BIGINT,
|
|---|
| 222 | CONSTRAINT chk_luggage_weight CHECK (Weight IS NULL OR Weight > 0),
|
|---|
| 223 | CONSTRAINT chk_luggage_status CHECK (Status IN ('Checked In', 'Loaded', 'In Transit', 'Arrived', 'Claimed', 'Lost', 'Delayed', 'Damaged')),
|
|---|
| 224 | CONSTRAINT chk_luggage_type CHECK (LuggageType IN ('Carry-On', 'Checked', 'Oversized', 'Fragile', 'Special')),
|
|---|
| 225 | PRIMARY KEY (LuggageId),
|
|---|
| 226 | FOREIGN KEY (FlightId) REFERENCES Flights (FlightId) ON DELETE RESTRICT ON UPDATE CASCADE
|
|---|
| 227 | );
|
|---|
| 228 |
|
|---|
| 229 | CREATE TABLE Ticket
|
|---|
| 230 | (
|
|---|
| 231 | TicketId BIGSERIAL NOT NULL,
|
|---|
| 232 | FlightId BIGINT,
|
|---|
| 233 | SeatNumber int NOT NULL,
|
|---|
| 234 | Class varchar(20) NOT NULL,
|
|---|
| 235 | BookingDate timestamp NOT NULL,
|
|---|
| 236 | Status varchar(20) NOT NULL,
|
|---|
| 237 | TicketPrice numeric NOT NULL,
|
|---|
| 238 | PassengerId BIGINT,
|
|---|
| 239 | LuggageId BIGINT,
|
|---|
| 240 | CONSTRAINT chk_ticket_price CHECK (TicketPrice > 0),
|
|---|
| 241 | CONSTRAINT chk_ticket_seat CHECK (SeatNumber > 0),
|
|---|
| 242 | CONSTRAINT chk_ticket_class CHECK (Class IN ('Economy', 'Premium Economy', 'Business', 'First Class')),
|
|---|
| 243 | CONSTRAINT chk_ticket_status CHECK (Status IN ('Booked', 'Confirmed', 'Cancelled', 'Used', 'Refunded', 'Pending')),
|
|---|
| 244 | UNIQUE (FlightId, SeatNumber),
|
|---|
| 245 | PRIMARY KEY (TicketId),
|
|---|
| 246 | FOREIGN KEY (FlightId) REFERENCES Flights (FlightId) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|---|
| 247 | FOREIGN KEY (PassengerId) REFERENCES Passenger (PassengerId) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|---|
| 248 | FOREIGN KEY (LuggageId) REFERENCES Luggage (LuggageId) ON DELETE RESTRICT ON UPDATE CASCADE
|
|---|
| 249 | );
|
|---|
| 250 |
|
|---|
| 251 | CREATE TABLE BoardingPass
|
|---|
| 252 | (
|
|---|
| 253 | PassId BIGSERIAL NOT NULL,
|
|---|
| 254 | TicketId BIGINT UNIQUE,
|
|---|
| 255 | BoardingTime timestamp NOT NULL,
|
|---|
| 256 | Class varchar(10) NOT NULL,
|
|---|
| 257 | Status varchar(20) NOT NULL,
|
|---|
| 258 | PrintedAt timestamp,
|
|---|
| 259 | GateId BIGINT,
|
|---|
| 260 | LuggageId BIGINT,
|
|---|
| 261 | CONSTRAINT chk_boardingpass_class CHECK (Class IN ('Economy', 'Premium Economy', 'Business', 'First Class')),
|
|---|
| 262 | CONSTRAINT chk_boardingpass_status CHECK (Status IN ('Issued', 'Scanned', 'Boarded', 'Cancelled', 'Expired')),
|
|---|
| 263 | PRIMARY KEY (PassId),
|
|---|
| 264 | FOREIGN KEY (TicketId) REFERENCES Ticket (TicketId) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|---|
| 265 | FOREIGN KEY (GateId) REFERENCES Gate (GateId) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|---|
| 266 | FOREIGN KEY (LuggageId) REFERENCES Luggage (LuggageId) ON DELETE RESTRICT ON UPDATE CASCADE
|
|---|
| 267 | );
|
|---|
| 268 |
|
|---|
| 269 | CREATE TABLE SecurityCheck
|
|---|
| 270 | (
|
|---|
| 271 | CheckId BIGSERIAL NOT NULL,
|
|---|
| 272 | CheckTime timestamp NOT NULL,
|
|---|
| 273 | CheckType varchar(20) NOT NULL,
|
|---|
| 274 | TerminalId BIGINT,
|
|---|
| 275 | Status varchar(20) NOT NULL,
|
|---|
| 276 | Notes text,
|
|---|
| 277 | PassengerId BIGINT,
|
|---|
| 278 | CONSTRAINT chk_security_status CHECK (Status IN ('Passed', 'Failed', 'In Progress')),
|
|---|
| 279 | CONSTRAINT chk_security_type CHECK (CheckType IN ('Baggage', 'Passenger', 'Document', 'Full Body', 'Random')),
|
|---|
| 280 | PRIMARY KEY (CheckId),
|
|---|
| 281 | FOREIGN KEY (TerminalId) REFERENCES Terminal (TerminalId) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|---|
| 282 | FOREIGN KEY (PassengerId) REFERENCES Passenger (PassengerId) ON DELETE RESTRICT ON UPDATE CASCADE
|
|---|
| 283 | );
|
|---|
| 284 |
|
|---|
| 285 | CREATE TABLE Employee
|
|---|
| 286 | (
|
|---|
| 287 | EmployeeId BIGSERIAL NOT NULL,
|
|---|
| 288 | FirstName varchar(30) NOT NULL,
|
|---|
| 289 | LastName varchar(30) NOT NULL,
|
|---|
| 290 | Position varchar(20) NOT NULL,
|
|---|
| 291 | Email varchar(20) UNIQUE,
|
|---|
| 292 | Phone bigint NOT NULL UNIQUE,
|
|---|
| 293 | HireDate date NOT NULL,
|
|---|
| 294 | Salary numeric NOT NULL,
|
|---|
| 295 | DateOfBirth date NOT NULL,
|
|---|
| 296 | Status varchar(20) NOT NULL,
|
|---|
| 297 | QuitDate date,
|
|---|
| 298 | AirportId BIGINT,
|
|---|
| 299 | CONSTRAINT chk_employee_salary CHECK (Salary > 0),
|
|---|
| 300 | CONSTRAINT chk_employee_hire_age CHECK (HireDate >= DateOfBirth + INTERVAL '18 years'),
|
|---|
| 301 | CONSTRAINT chk_employee_quit_after_hire CHECK (QuitDate IS NULL OR QuitDate > HireDate),
|
|---|
| 302 | CONSTRAINT chk_employee_status CHECK (Status IN ('Active', 'Inactive', 'Paid leave', 'Unpaid leave', 'Retired')),
|
|---|
| 303 | FOREIGN KEY (AirportId) REFERENCES Airport (AirportId) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|---|
| 304 | PRIMARY KEY (EmployeeId)
|
|---|
| 305 | );
|
|---|
| 306 |
|
|---|
| 307 | CREATE TABLE MechanicEmployee
|
|---|
| 308 | (
|
|---|
| 309 | EmployeeId BIGINT PRIMARY KEY,
|
|---|
| 310 | MaintenanceId BIGINT,
|
|---|
| 311 | FOREIGN KEY (EmployeeId) REFERENCES Employee (EmployeeId) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|---|
| 312 | FOREIGN KEY (MaintenanceId) REFERENCES AircraftMaintenance (MaintenanceId) ON DELETE RESTRICT ON UPDATE CASCADE
|
|---|
| 313 | );
|
|---|
| 314 |
|
|---|
| 315 | CREATE TABLE WorksOn
|
|---|
| 316 | (
|
|---|
| 317 | EmployeeId BIGINT NOT NULL,
|
|---|
| 318 | MaintenanceId BIGINT NOT NULL,
|
|---|
| 319 | PRIMARY KEY (EmployeeId, MaintenanceId),
|
|---|
| 320 | FOREIGN KEY (EmployeeId) REFERENCES MechanicEmployee (EmployeeId) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|---|
| 321 | FOREIGN KEY (MaintenanceId) REFERENCES AircraftMaintenance (MaintenanceId) ON DELETE RESTRICT ON UPDATE CASCADE
|
|---|
| 322 | );
|
|---|
| 323 |
|
|---|
| 324 | CREATE TABLE GateEmployee
|
|---|
| 325 | (
|
|---|
| 326 | EmployeeId BIGINT PRIMARY KEY,
|
|---|
| 327 | FOREIGN KEY (EmployeeId) REFERENCES Employee (EmployeeId) ON DELETE RESTRICT ON UPDATE CASCADE
|
|---|
| 328 | );
|
|---|
| 329 |
|
|---|
| 330 | CREATE TABLE SecurityEmployee
|
|---|
| 331 | (
|
|---|
| 332 | EmployeeId BIGINT PRIMARY KEY,
|
|---|
| 333 | FOREIGN KEY (EmployeeId) REFERENCES Employee (EmployeeId) ON DELETE RESTRICT ON UPDATE CASCADE
|
|---|
| 334 | );
|
|---|
| 335 |
|
|---|
| 336 | CREATE TABLE Ownership
|
|---|
| 337 | (
|
|---|
| 338 | OwnerId BIGSERIAL NOT NULL,
|
|---|
| 339 | StartDate timestamp NOT NULL,
|
|---|
| 340 | AircraftId BIGINT,
|
|---|
| 341 | EndDate timestamp NOT NULL,
|
|---|
| 342 | AirlineId BIGINT,
|
|---|
| 343 | CONSTRAINT chk_ownership_end_after_start CHECK (EndDate > StartDate),
|
|---|
| 344 | PRIMARY KEY (OwnerId),
|
|---|
| 345 | FOREIGN KEY (AircraftId) REFERENCES Aircraft (AircraftId) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|---|
| 346 | FOREIGN KEY (AirlineId) REFERENCES Airline (AirlineId) ON DELETE RESTRICT ON UPDATE CASCADE
|
|---|
| 347 | );
|
|---|
| 348 |
|
|---|
| 349 | CREATE TABLE AirportService
|
|---|
| 350 | (
|
|---|
| 351 | ServiceId BIGSERIAL NOT NULL,
|
|---|
| 352 | ServiceName varchar(30) NOT NULL UNIQUE,
|
|---|
| 353 | ServiceType varchar(20) NOT NULL,
|
|---|
| 354 | TerminalId BIGINT,
|
|---|
| 355 | OperatingHours varchar(10),
|
|---|
| 356 | Status varchar(20) NOT NULL,
|
|---|
| 357 | CONSTRAINT chk_airportservice_status CHECK (Status IN ('Active', 'Inactive', 'Cancelled')),
|
|---|
| 358 | PRIMARY KEY (ServiceId),
|
|---|
| 359 | FOREIGN KEY (TerminalId) REFERENCES Terminal (TerminalId) ON DELETE RESTRICT ON UPDATE CASCADE
|
|---|
| 360 | );
|
|---|
| 361 |
|
|---|
| 362 | CREATE TABLE StaysAt
|
|---|
| 363 | (
|
|---|
| 364 | HangarId BIGINT NOT NULL,
|
|---|
| 365 | AircraftId BIGINT NOT NULL,
|
|---|
| 366 | PRIMARY KEY (HangarId, AircraftId),
|
|---|
| 367 | FOREIGN KEY (HangarId) REFERENCES Hangar (HangarId) ON DELETE RESTRICT ON UPDATE CASCADE,
|
|---|
| 368 | FOREIGN KEY (AircraftId) REFERENCES Aircraft (AircraftId) ON DELETE RESTRICT ON UPDATE CASCADE
|
|---|
| 369 | );
|
|---|
| 370 |
|
|---|
| 371 | CREATE TABLE WorksOnGate
|
|---|
| 372 | (
|
|---|
| 373 | GateId BIGINT NOT NULL,
|
|---|
| 374 | GateEmployeeEmployeeId BIGINT NOT NULL,
|
|---|
| 375 | Date DATE,
|
|---|
| 376 | StartTime TIME,
|
|---|
| 377 | EndTime TIME,
|
|---|
| 378 | PRIMARY KEY (GateId, GateEmployeeEmployeeId),
|
|---|
| 379 | FOREIGN KEY (GateId) REFERENCES Gate (GateId) ON DELETE CASCADE ON UPDATE CASCADE,
|
|---|
| 380 | FOREIGN KEY (GateEmployeeEmployeeId) REFERENCES GateEmployee (EmployeeId) ON DELETE CASCADE ON UPDATE CASCADE
|
|---|
| 381 | );
|
|---|
| 382 |
|
|---|
| 383 | CREATE TABLE WorksOnSecurityCheck
|
|---|
| 384 | (
|
|---|
| 385 | SecurityEmployeeEmployeeId BIGINT NOT NULL,
|
|---|
| 386 | SecurityCheckCheckId BIGINT NOT NULL,
|
|---|
| 387 | PRIMARY KEY (SecurityEmployeeEmployeeId, SecurityCheckCheckId),
|
|---|
| 388 | FOREIGN KEY (SecurityEmployeeEmployeeId) REFERENCES SecurityEmployee (EmployeeId) ON DELETE CASCADE ON UPDATE CASCADE,
|
|---|
| 389 | FOREIGN KEY (SecurityCheckCheckId) REFERENCES SecurityCheck (CheckId) ON DELETE CASCADE ON UPDATE CASCADE
|
|---|
| 390 | );
|
|---|