Eu escreveria um procedimento armazenado chamado REGISTER FLIGHT, que aceitaria como parâmetros o PK da tabela MODEL (e quaisquer outros parâmetros necessários. O procedimento faria a pesquisa na tabela MODEL e inseriria as linhas iniciais na tabela de voo.
Eu teria então um segundo procedimento chamado BOOK_SEAT, que no processo de reserva do voo, diminuiria o número de assentos disponíveis no voo. Se a reserva diminuir os available_seats para zero (ou menos), ela lançará uma exceção (por exemplo, OVERBOOKED_EXCEPTION) e esperará que o chamador detecte e lide com o problema.