我有一些标记在不同类别下的实体。 但是,有些类别有不同的子类别(最多2个级别),但层次结构不统一 - 有些类别的高度为1 - 2.
我的想法是为每个类别创建一个单独的表,为每个级别创建一个表,然后将实体ID链接到叶子,但它看起来效率不高。
喜欢听到你的想法!
答案 0 :(得分:1)
设计更灵活:
在搜索属于给定类别的实体时,首先在CATEGORY中搜索其所有子类别,子子类别等。根据DBMS,这可能在单个递归查询中完成。
在层次结构中包含所有类别后,只需加入CATEGORY_ENTITY和ENTITY并按这些CATEGORY_ID进行过滤。
是的,如果类别名称在全球范围内是唯一的还是仅在兄弟姐妹中?根据这一点,您可能希望分别在NAME或{PARENT_ID,NAME} 1 上添加UNIQUE约束。1 但请检查DBMS如何处理复合UNIQUE约束中的NULL。