我有一个类似于以下的SQL表:
更新:我正在更改示例表格,因为原始数据的现有分层结构(州、城市、学校)掩盖了需要在项目之间建立简单关系的事实。
entities
id name
1 Apple
2 Orange
3 Banana
4 Carrot
5 Mushroom
我希望能够定义这些实体之间的双向关系,以便用户查看一个实体时可以看到所有相关实体的列表。
这些关系是由最终用户定义的。
在数据库中表示这些关系的最佳方式是什么,并随后查询和更新它们?
我认为有一种方法...
我的直觉告诉我需要一个关系表,如下所示:
entity_entity
entity_id_a entity_id_b
1 2
5 1
4 1
5 4
1 3
如果给定一个实体ID为4,如何获取所有相关记录(即1和5)?
同样,查询实体ID = 1应返回2、3、4和5。
感谢您的时间,如果需要澄清问题,请告诉我。
SELECT
语句那样创建一个视图(view),然后使用它来进行连接(join)吗?(这样做的性能影响会是什么?) 我正在使用PostgreSQL,是否适用相同的索引(indexing)建议? - Azendale