Слишком долго для комментария. Вы можете представить данный рейс, используя две таблицы, одну для местоположений, а другую - соединительную таблицу, связывающую одно местоположение с другим.
CREATE TABLE locations (
id INT NOT NULL PRIMARY KEY,
name VARCHAR NOT NULL,
latitude DOUBLE NOT NULL,
longitude DOUBLE NOT NULL
);
CREATE TABLE flights (
source_id INT NOT NULL,
dest_id INT NOT NULL,
PRIMARY KEY (source_id, dest_id),
FOREIGN KEY (source_id) REFERENCES locations(id),
FOREIGN KEY (dest_id) REFERENCES locations(id)
);
Итак, теперь полет - это просто запись в таблице соединений flights
. Метаданные для каждого аэропорта находятся в таблице locations
.