我有一个产品目录。每个类别的子类别包含不同的数(深)的。能级(深)的数量是未知的,但我相当肯定它不会超过5,6级。数据的变化是更很少然后读取。

的问题是:什么类型的分级数据模型的是更适合于这种情况。该项目是基于Django框架,它的特殊性(管理我脸,模型处理...)应该被考虑。

非常感谢!

有帮助吗?

解决方案

Nested sets是获得更好的性能,如果你不需要频繁更新或等级秩序。

如果您需要任何树更新或分级排序,最好使用parent-child数据模型。

它在OracleSQL Server 2005+MySQL容易地构造,并且不那么容易(但仍然是可能的)。

其他提示

我会使用改性预订树遍历算法,MPTT,对于这种分层数据的。这允许遍历树,寻找孩子,如果你不介意有点惩罚的上更改结构卓越的性能。

幸运的是Django的具有可用于这一个伟大的图书馆, Django的MPTT 。我已经有很多成功的使用这一批项目。还有 Django的树胡它提供了几种可供选择的算法,但我没用过它(和它似乎并不如MPTT流行反正)。

根据这些文章:

http://explainextended.com/ 2009/09/24 /邻接一览VS-嵌套集-的PostgreSQL / http://explainextended.com/2009/09 / 29 /邻接一览VS-嵌套集-MySQL的/

“MySQL是四大(MySQL和甲骨文,SQL服务器,PostgreSQL的)的唯一系统的量,嵌套集合模型显示体面性能,并且可被认为存储分层数据。”

在邻接表更容易维护和嵌套集合更快很多查询。

问题一直是邻接表转换为嵌套集合采取的方式长多亏了的满载RBAR一个非常讨厌的“推堆”的方法。所以,人们最终会做在嵌套集合了一些非常困难的维护或不使用它们。

现在,你可以有你鱼和熊掌兼得呢!你可以转换为100,000 nodesin少于4秒和上万行,在不到一分钟!所有的T-SQL,顺便说一下!请看下面的文章。

类固醇层次结构#1:嵌套集合

类固醇层次结构#2:用于嵌套集合计算 <代用/ p>

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top