2013-07-04 78 views
0

我有一些在不同类别下标记的实体。 然而,一些种类的具有各种子类别(最多2级),但层次结构是不均匀 - 一些具有1个高度 - 2.关系数据库 - 建模不平衡层次

我的想法是创建一个单独的表中的每个类别和每个级别一个,然后将实体ID链接到叶片,但是,它看起来不是很有效。

喜欢听你的想法!

回答

1

还有一个更灵活的设计:

enter image description here

当属于特定类别的实体搜索,其所有子类,子子类等类别中的第一个搜索依赖在DBMS上,这可能会在一个递归查询中完成。

在层次结构中包含所有类别后,只需加入CATEGORY_ENTITY和ENTITY,然后按这些CATEGORY_ID进行过滤。

顺便说一下,类别名称应该是全球唯一的还是唯一的兄弟姐妹?根据不同,您可能需要分别在NAME或{PARENT_ID,NAME}上添加一个UNIQUE约束。


但检查你的DBMS如何处理复合UNIQUE约束为NULL。