Как обеспечить ограничение ориентированного графа в реляционной базе данных? - PullRequest
0 голосов
/ 14 марта 2012

В настоящее время я создаю небольшую базу данных, которая представляет собой сеть каналов.Я разделил сеть на зоны, которые связаны между собой.В терминах теории графов зоны - это вершины, связи между зонами - это ребро.Я храню края в виде таблицы базы данных с двумя полями: одно для «восходящей» или «левой» зоны, другое для «нисходящей» или «правой» зоны.Я хочу, чтобы мой график был ориентирован, например, для двух зон между ними может быть только одна связь.

Есть ли способ применить это ограничение в SQL или мне нужно проверить это с помощью сохраненного процесса?

1 Ответ

1 голос
/ 14 марта 2012

Вы можете добавить уникальный индекс в 2 значения - при условии, что у вас есть таблица EDGES 2 столбца ZONE_A_ID и ZONE_B_ID, код будет выглядеть примерно так ...

CREATE UNIQUE INDEX UNIQUE_EDGE ON EDGES (ZONE_A_ID,ZONE_B_ID);

Также можно создать ограничение ZONE_A_ID

CHECK (ZONE_A_ID

Синтаксис для них будет различаться в зависимости откакую БД вы используете.

См .:

http://docs.oracle.com/cd/B28359_01/server.111/b28310/indexes003.htm#i1106547

http://www.techonthenet.com/oracle/check.php

...