是否允许多个空ParentID?层级表结构转换是否合规?
层级结构转换问题解答
是否允许多个空ParentID?
完全允许。在层级结构设计里,空ParentID(一般用NULL表示)代表顶级节点,业务场景中多个独立顶级分类是很常见的情况——比如你的业务表中,每个Industry(行业)本身就是独立的顶级节点,各自下面划分Division(部门)、Section(科室),这时候每个Industry对应的节点ParentID都是空,自然会有多个空ParentID的情况,只要业务逻辑上这些顶级节点是独立的,这种设计就完全合理。
转换是否可行?
绝对可行,这是典型的扁平化业务表转层级结构表的场景,核心是梳理清楚三层数据的父子关系,具体转换逻辑可以这样走:
- 生成Level=1的节点:提取所有Industry数据,ID用
IndustryID,ParentID设为NULL,Type标记为Industry,Name用IndustryName - 生成Level=2的节点:提取所有Division数据,ID用
DivisionID,ParentID对应所属的IndustryID,Type标记为Division,Name用DivisionName - 生成Level=3的节点:提取所有Section数据,ID用
SectionID,ParentID对应所属的DivisionID,Type标记为Section,Name用SectionName
需要注意的是,要确保原表中每个Division都关联了有效的IndustryID,每个Section都关联了有效的DivisionID;如果存在无关联的孤立数据,可以根据业务规则选择设为顶级节点或者直接过滤。
内容的提问来源于stack exchange,提问作者newby
相关产品推荐
相关产品推荐

