目录
本文所用的层级关系图

需求接口
1、获取子级/所有子级列表/所有子级树
2、获取父级
3、增删改
思路1:记录父ID
CREATE TABLE `XXX` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`parent_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '上级ID',
`is_leaf` tinyint(2) NOT NULL DEFAULT '0' COMMENT '叶子结点标记:0非叶子,1叶子',
...
}
存储结果(根据文章开始的图中ID)

思路2:闭包表(空间换时间)
两个表,每个关系都存起来
create table XXX_base{
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`name` varchar() NOT NULL COMMENT '',
...
}
create table XXXrelation{
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`base_id` bigint(20) unsigned NOT NULL COMMEMT '基础信息表ID',
`base_parent_id` bigint(20) unsigned NOT NULL COMMEMT '上级的基础信息ID',
`diff_level` tinyint(2) NOT NULL DEFAULT '0' COMMENT '与父节点相差的层级',
`is_leaf` tinyint(2) NOT NULL DEFAULT '0' COMMENT '叶子结点标记:0非叶子,1叶子',
...
}
存储结果(根据文章开始的图中ID)

思路3:存储路径
存储从第一层到自己的路径
CREATE TABLE `XXX` (
`id` bigint(20) unsigned NO


420

被折叠的 条评论
为什么被折叠?



