Cuando tiene varios valores en una clave principal, debe hacer referencia a ellos de manera diferente como una clave externa.
Básicamente, cuando dices
FlightID char (20) REFERENCES Flight(FlightID) ON DELETE CASCADE,
PostgreSQL busca esa clave principal, que no existe (ya que la clave principal en esa tabla es (flightid, flightdate)).
Así que suelta las REFERENCES
cláusulas al hacer referencia a la tabla de vuelo, y agregue
FOREIGN KEY (FlightID, FlightDate) REFERENCES Flight (FlightID, FlightDate)
De la misma manera que lo ha hecho en algunas de las otras definiciones de tablas.