Lorsque vous avez plusieurs valeurs dans une clé primaire, vous devez la référencer différemment en tant que clé étrangère.
En gros, quand tu dis
FlightID char (20) REFERENCES Flight(FlightID) ON DELETE CASCADE,
PostgreSQL vérifie cette clé primaire, qui n'existe pas (puisque la clé primaire sur cette table est (flightid, flightdate)).
Alors laissez tomber les REFERENCES
clauses lors du référencement de la table de vols, et ajouter
FOREIGN KEY (FlightID, FlightDate) REFERENCES Flight (FlightID, FlightDate)
Comme vous le faites dans certaines des autres définitions de table.