Разные отношения между двумя сущностями - PullRequest
0 голосов
/ 12 апреля 2019

В моем проекте есть часть, где говорится:

Авиакомпания имеет много рейсов , и каждый рейс имеет один источник (аэропорт) и один или несколько пунктов назначения (аэропортов) .Для каждой пары назначения-источника вы должны записать расстояние .

В соответствии с этим утверждением я выполнил следующее задание:

                   _________
                  | Airline |
                   ---------
                       |
                      has
                   ____|____ 
                  | Flights |
                   ---------
               /               \
            s.has             d.has
      _______/______       ______\_______
     |source_airport|     | dest_airport |
      --------------       --------------
  • Теперь у меня проблема с последним атрибутом distance .Как мне разместить его с указанным выше значением?

  • В качестве альтернативы я думаю, что Airport будет единым целым, в котором Рейсы & Аэропорт будет иметь отношения между ними.Но если это произойдет, как различить источник и пункт назначения часть между ними, а также решить проблему с помощью расстояние атрибут?

1 Ответ

1 голос
/ 12 апреля 2019

Слишком долго для комментария. Вы можете представить данный рейс, используя две таблицы, одну для местоположений, а другую - соединительную таблицу, связывающую одно местоположение с другим.

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.

...