我需要用关系数据库表示图形信息.
比方说,a连接到b,c和d.
a -- b |_ c |_ d
我可以有a,b,c和d的节点表,我也可以有一个链接表(FROM,TO) - >(a,b),(a,c),(a,d).对于其他实现,可能有一种方法将链接信息存储为(a,b,c,d),但表中的元素数量是可变的.
Mar*_*ers 32
Q1:有没有办法在[数据库]表中表示变量元素?
我猜你的意思是这样的?
from | to_1 | to_2 | to_3 | to_4 | to_5 | etc...
1 | 2 | 3 | 4 | NULL | NULL | etc...
Run Code Online (Sandbox Code Playgroud)
这不是一个好主意.它违反了第一范式.
Q2:有没有通用的方法来表示使用数据库的图形结构?
对于有向图,您可以使用edges包含两列的表:
nodeid_from nodeid_to
1 2
1 3
1 4
Run Code Online (Sandbox Code Playgroud)
如果有关于每个节点的任何额外信息(例如节点名称),则可以将其存储在另一个表中nodes.
如果您的图表是无向的,您有两种选择:
nodeid_from必须小于的约束nodeid_to(即存储1-> 2但暗示2-> 1).前者需要两倍的存储空间,但可以使查询更容易,更快.