Necesita ayuda para desarrollar la lógica de DB

Este es un mini proyecto mío: sistema de reserva de aerolíneas. Llamemos a esta aerolínea FlyMi: tengo una base de datos (no se ha decidido cuál, amigo mío quiere ir con MongoDB).

De todos modos, este es mi requisito: tengo una tabla que contiene detalles del vuelo: número de vuelo, horario, etc. Voy a usar esta tabla para realizar varias operaciones: reserva, cancelación, modificación

Aquí es donde estoy atascado: para la aplicación de escritorio y la aplicación web, estoy ofreciendo una opción para seleccionar asientos. Esto significa que tengo que hacer un seguimiento de qué asientos están reservados, cuáles no. Y supongamos que tengo una interfaz de usuario, que muestra los asientos como
Rojo - Reservado
Verde: no reservado.

Y todo esto, para todos y cada uno de los vuelos. Mi pregunta es: ¿Cuál crees que sería la forma más eficiente de rastrear las reservas de asientos para cada vuelo en esa aerolínea?

Idea actual: Mantenga una tabla llamada pasajero, con todos los detalles, como el nombre, la dirección, etc., que hacen un seguimiento de todos los pasajeros y mantienen unID del pasajero tal que, los primeros 4 caracteres son ID de vuelo, los últimos 2 caracteres son números de asiento que han elegido, con un número aleatorio intermedio (digo aleatorio porque creo que no es importante aquí). Por lo tanto, para cualquier vuelo, si tengo que averiguar el número de asientos sin reservar, tendré que escanear a cada pasajero, quién ha reservado y quién ha reservado en ese vuelo. Creo que esto es realmente ineficiente. Proporcionarme la lógica más eficiente para hacer esto.

Respuestas a la pregunta(1)

Su respuesta a la pregunta