1

我有一些被标记在不同类别下的实体。但是,有些类别有各种子类别(最多 2 个级别),但层次结构并不统一 - 有些具有 1 - 2 的高度。

我的想法是为每个类别创建一个单独的表,为每个级别创建一个表,然后将实体 ID 链接到叶子,但是,它似乎不是很有效。

喜欢听听你的想法!

4

1 回答 1

1

还有一个更灵活的设计:

在此处输入图像描述

在搜索属于给定类别的实体时,首先在 CATEGORY 中搜索其所有子类别、子子类别等。根据 DBMS,这可能在单个递归查询中完成。

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

顺便说一句,类别名称应该是全球唯一的还是仅在兄弟姐妹中?根据这一点,您可能希望分别在 NAME 或 {PARENT_ID, NAME} 1上添加 UNIQUE 约束。


1但请检查您的 DBMS 如何处理复合 UNIQUE 约束中的 NULL。

于 2013-07-04T10:47:02.593 回答