Als je meerdere waarden in een primaire sleutel hebt, moet je er anders naar verwijzen als een externe sleutel.
Kortom, als je zegt
FlightID char (20) REFERENCES Flight(FlightID) ON DELETE CASCADE,
PostgreSQL controleert op die primaire sleutel, die niet bestaat (aangezien de primaire sleutel in die tabel (flightid, flightdate) is).
Dus laat de REFERENCES
vallen clausules bij het verwijzen naar de vluchttabel, en voeg
FOREIGN KEY (FlightID, FlightDate) REFERENCES Flight (FlightID, FlightDate)
Op de manier die je hebt in sommige van de andere tabeldefinities.