База данных расстояний городов - PullRequest
0 голосов
/ 10 марта 2011

Мне нужна модель DB, которая может обрабатывать эксклюзивные PK с 2 значениями.

Допустим, у нас есть 3 города, и все они связаны.

Расстояния:(1) -> (2) = (2) -> (1) = 5(1) -> (3) = (3) -> (1) = 3(2) -> (3) = (3) -> (2) = 4

Сложность в том, что я не хочу дублировать записи!

Спасибо заранее

Ответы [ 3 ]

1 голос
/ 10 марта 2011

Вам нужно три столбца.SourceID, DestID и Расстояние.Сохраните в SourceID меньший идентификационный номер и создайте уникальное ограничение для (SourceID, DestID);

0 голосов
/ 07 апреля 2013

Вы можете использовать широту и долготу для расчета расстояния.Смотри здесь

0 голосов
/ 10 марта 2011

Обеспечить выполнение порядка предотвращения дубликатов.Та же тактика работает независимо от того, сохраняете ли вы названия городов или номера городов.

CREATE TABLE distances (
    start_city VARCHAR(35) NOT NULL CHECK (start_city < end_city),
    end_city   VARCHAR(35) NOT NULL,
    km_distant INTEGER     NOT NULL CHECK (km_distant > 0),
    PRIMARY KEY (start_city, end_city)
);
...