2012-03-14 6 views
0

私は現在パイプネットワークを表す小さなデータベースを構築しています。私は、お互いにつながっているゾーンでネットワークを分割しました。グラフ理論では、ゾーンは頂点であり、ゾーン間の接続はエッジです。私は2つのフィールドを持つデータベーステーブルとしてエッジを保存しています:「上流」または「左」ゾーン用、もう1つは「下流」または「右」ゾーン用です。グラフの向きを変えたい2つのゾーンの間には1つの接続のみが存在します。リレーショナルデータベースで指向のグラフ制約を保証する方法は?

SQLでこの制約を適用する方法はありますか、それともストアドプロシージャでチェックする必要がありますか?

答えて

1

あなたは2つの値に一意のインデックスを追加することができます - あなたは、テーブルが2列ZONE_A_IDとZONE_B_IDをエッジ持っていると仮定すると、コードが...のようになります

エッジにUNIQUE INDEX UNIQUE_EDGE (ZONE_A_IDを作成すると、 ZONE_B_ID);

また、これらの構文はどのあなたが使用してからDBによって異なります

CHECK(ZONE_A_ID < ZONE_B_ID)

...重複を防ぐために、制約ZONE_A_ID < ZONE_B_IDを作成することができます。

参照:

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

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

+0

ありがとう!それは問題を解決する良い方法です。 –

関連する問題