我目前正在建立一个代表管网的小型数据库。我已将网络划分为彼此连接的区域。在图论中,区域是顶点,区域之间的连接是边缘。我将边缘存储为数据库表,有两个字段:一个用于“上游”或“左”区域,另一个用于“下游”或“右”区域。我希望我的图表能够被定向,例如对于两个区域,它们之间只能有一个连接。
有没有办法在SQL中强制执行此约束,还是必须使用存储过程检查它?
答案 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