sql - 寻找两个人之间关系的最佳数据库设计
问题描述
我想使用数据库查找两个人之间的关系。例如,我有一个这样的数据库:
Person:
Id| Name
1 | Edvard
2 | Ivan
3 | Molly
4 | Julian
5 | Emily
6 | Katarina
Relationship:
Id| Type
1 | Parent
2 | Husband\Wife
3 | ex-Husband\ex-Wife
Relationships:
Id| Person_1_Id | Person_2_Id | Relation_Id
1 | 1 | 3 | 2
2 | 3 | 4 | 3
3 | 3 | 2 | 1
4 | 4 | 2 | 1
5 | 1 | 6 | 3
6 | 1 | 5 | 1
7 | 6 | 5 | 1
找到 Person-2 和 Person-5 之间关系的最佳方法是什么?这个例子还不够大,但是如果有 5 个家族或者 10000 个呢?我认为,如果家族太多,那么有必要引入深度的概念。也许改变数据库设计会更好?这可以使它像树或图吗?关于如何以不同方式解决这个问题的一些想法?
解决方案
一旦你超过了少数节点和它们之间的一些关系,这就会变成一个非常复杂的问题:有基于这种类型的挑战的整个数学分支以及计算结果需要多长时间。
对于任何重要的节点/关系集,您将需要考虑部署图形数据库,例如Neo4j
推荐阅读
- python-3.x - 为什么这个自定义 QWidget 不能正确显示
- python - 使用 NumPy 的 ReLU 导数
- c# - 如何从 identityServer4 获得 401 响应
- c++ - 犰狳库中线性系统的近似解
- apache-spark - 在过滤损坏的记录字段时,Spark 的 .count() 函数与数据帧的内容不同
- reactjs - React:ComponentDidMount 中的动态 GET URL
- git - jenkins 的 Git 插件总是获取所有分支
- javascript - 处理 moment.js 中的未知日期部分
- ruby-on-rails - 部署到heroku时不存在关系
- javascript - 使用 javascript 将上传的文件拆分为多个块