我正在考虑学习图形数据库(如neo4j),但我很好奇图形数据库中是否有这些设施,例如,如果我这样做:
Step 1: create: A --> B --> C
Step 2: create: D --> B --> E
Step 3: create: F --> G --> E
这应该会自动生成一个存储类似以下内容的图形:
A ---> B ----> C
/|\ \
D -----| \--> E
/|\
F ---> G --------|
在这里,公共节点 B 和 E 被合并(无需以编程方式检查这些节点的先前存在)。在现实世界的示例中,将有 1000 个这样的 B 和 E,它们将在关系数据库中实现如下:
FK = Foreign Key .. X Y Z are keys for three primary tables.
___________ ________ _____________ ________
X | FK(Y) Y | ... FK(Y) | FK(Z) Z | ..
---|------- --|----- ------|------ ---|----
A | FK(B) B | ... FK(B) | FK(C) C | ..
D | FK(B) G | .. FK(B) | FK(E) E | ..
F | FK(G) FK(G) | FK(E)
在 RDB 中(例如,当我插入关系 D-->B 时)我必须以编程方式在第二个表中搜索重复的对象 B(或者在尝试将相同的对象插入其中时查找失败代码)然后将B的外键与D放在一起。我希望在图形数据库中,这些事情都由数据库处理。