如何确保关系数据库中的面向图约束?

时间:2012-03-14 13:47:11

标签: database graph-theory

我目前正在建立一个代表管网的小型数据库。我已将网络划分为彼此连接的区域。在图论中,区域是顶点,区域之间的连接是边缘。我将边缘存储为数据库表,有两个字段:一个用于“上游”或“左”区域,另一个用于“下游”或“右”区域。我希望我的图表能够被定向,例如对于两个区域,它们之间只能有一个连接。

有没有办法在SQL中强制执行此约束,还是必须使用存储过程检查它?

1 个答案:

答案 0 :(得分:1)

您可以在2个值中添加唯一索引 - 假设您有一个表格EDGES 2列ZONE_A_ID和ZONE_B_ID,代码看起来像......

创建独特的索引UNIQUE_EDGE ON EDGES(ZONE_A_ID,ZONE_B_ID);

您还可以创建约束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