När du har flera värden i en primärnyckel måste du referera till den på ett annat sätt som en främmande nyckel.
I grund och botten, när du säger
FlightID char (20) REFERENCES Flight(FlightID) ON DELETE CASCADE,
PostgreSQL söker efter den primärnyckeln, som inte existerar (eftersom primärnyckeln i den tabellen är (flightid, flightdate)).
Så släpp REFERENCES
klausuler när du refererar till flygtabellen, och lägg till
FOREIGN KEY (FlightID, FlightDate) REFERENCES Flight (FlightID, FlightDate)
På det sätt som du har i några av de andra tabelldefinitionerna.