假设数据集在结构上是递归的,但从数据点到数据点的深度可能不同,那么设置mysql数据库的最佳方法是什么。
我知道这可能令人困惑,所以这里是我的意思的一个例子。让我们说你想为一群人存储男性血统。并非所有人都可以追溯到同一点。 Person1可能能够追溯到他的祖父,他的曾祖父的人,以及他的曾曾祖父的人3。我不认为为每个可能的大学学位提供一张表是有意义的。
我的解决方案是拥有一个“父”表,该表存储其父级的id或者在到达树的末尾时为null。但是,我发现构建完整树的唯一方法是对每个父请求进行单个查询,直到找到空父级。
有没有人有更好的解决方案?
答案 0 :(得分:0)
我的建议是不要跟踪数据库中的大父亲。 典型的行应该是:
person_id,person_name,biological_father_person_id, biological_mother_person_id等......
然后你可以计算申请方的大父亲。
一旦您的代码真正使用,您就可以开始跟踪慢速查询并根据需要开始优化。在某些时候,您可能需要对其进行非规范化。也许您需要保留一个或两个容易预处理的色谱柱。
但是,在了解负载的位置之前,不要设置非规范化结构。