表格详情如下:
喜欢(ID1,ID2)
答案 0 :(得分:0)
我认为你想要做的就是这个...
硬编码" A喜欢C"进入桌子是脆弱的。考虑如果B停止喜欢C会发生什么。你删除" A喜欢C"?你怎么知道它是传递性的?如果A说他们喜欢C怎么办?你可以通过一个专栏来解决这个问题,并且#34; A喜欢C"是传递性的。
这里有directed graph。您每次添加或删除边缘时都要问的是,这是否会改变所有节点之间的连接。这是一件非常昂贵的事情。考虑一下。
A -> B -> C
X -> Y -> Z
因此,推断出A喜欢C,X喜欢Z。
如果C喜欢X怎么办?现在...
现在如果B不喜欢C?
这是一个只有六个节点的简单线性案例。
在图表中对每个可能的关系进行硬编码是个坏主意。并且SQL数据库在遍历图表方面并不擅长。
相反,您希望存储和遍历图表。使用SQLite的有限查询语言可能无法做到这一点。您可以使用graph database或WITH query in PostgreSQL。