针对可变深度数据的mysql db的最佳设置

时间:2011-09-17 08:12:05

标签: mysql sql database

假设数据集在结构上是递归的,但从数据点到数据点的深度可能不同,那么设置mysql数据库的最佳方法是什么。

我知道这可能令人困惑,所以这里是我的意思的一个例子。让我们说你想为一群人存储男性血统。并非所有人都可以追溯到同一点。 Person1可能能够追溯到他的祖父,他的曾祖父的人,以及他的曾曾祖父的人3。我不认为为每个可能的大学学位提供一张表是有意义的。

我的解决方案是拥有一个“父”表,该表存储其父级的id或者在到达树的末尾时为null。但是,我发现构建完整树的唯一方法是对每个父请求进行单个查询,直到找到空父级。

有没有人有更好的解决方案?

1 个答案:

答案 0 :(得分:0)

我的建议是不要跟踪数据库中的大父亲。 典型的行应该是:

  

person_id,person_name,biological_father_person_id,   biological_mother_person_id等......

然后你可以计算申请方的大父亲。

一旦您的代码真正使用,您就可以开始跟踪慢速查询并根据需要开始优化。在某些时候,您可能需要对其进行非规范化。也许您需要保留一个或两个容易预处理的色谱柱。

但是,在了解负载的位置之前,不要设置非规范化结构。