2012-03-14 23 views
0

我目前正在建立一個代表管網的小型數據庫。我已將網絡劃分爲彼此連接的區域。在圖論中,區域是頂點,區域之間的連接是邊緣。我將邊緣存儲爲數據庫表,其中有兩個字段:一個用於「上游」或「左側」區域,另一個用於「下游」或「右側」區域。我希望我的圖形能夠定向,例如對於兩個區域,它們之間只能有一個連接。如何確保關係數據庫中的方向圖約束?

有沒有辦法在SQL中強制執行此約束,還是必須使用存儲過程檢查該約束?

回答

1

你可以在2個值添加一個唯一索引 - 假設你有一個表,棱邊2列ZONE_A_ID和ZONE_B_ID,代碼會看起來像......

CREATE UNIQUE INDEX UNIQUE_EDGE 在邊緣上(ZONE_A_ID, ZONE_B_ID);

您還可以創建一個約束ZONE_A_ID < ZONE_B_ID防止重複...

CHECK(ZONE_A_ID < ZONE_B_ID)

的語法,這些將取決於哪個DB您使用的是不同的。

參見:

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

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

+0

謝謝!這是解決問題的好方法。 – 2012-03-14 14:46:07