一种多层级机构数据库表设计的思路

本文介绍了如何在数据库设计中处理多层级结构,通过在单张表内使用level字段,采用0.*.*的编码方式表示层级关系。例如,level '0.1.3' 表示某个条目属于技术组(1)下的前端开发(3)。这种方式可以方便地通过SQL查询特定层级的结构,如查询所有技术组下一级的架构或所有子结构。
摘要由CSDN通过智能技术生成

在实际开发过程中,经常存在多个层级结构的设计,而且多个层级结构还需要排序。这里通过将多级结构的数据在同一张表中(无需多张表进行关联),并通过level的巧妙设计来实现单表查询。

level的设计原则:0.*.* 其中,0是顶级结构,第一个*是顶级结构下的结构,第二个*是顶级结构下的结构下的结构。

举个栗子:

1、创建部门架构表:

CREATE TABLE department (
	`id` BIGINT UNSIGNED  NOT NULL AUTO_INCREMENT,
	`name` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '部门名称或下属机构名称',
	`level` VARCHAR(255) NOT NULL DEFAULT '0' COMMENT '部门级别字符串',
	`parent_id` BIGINT UNSIGNED NOT NULL COMMENT '父级主键id',
	`seq` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '排序号',
	`mtime` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '更新时间',
	`ctime` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '创建时间',
	`muser_id` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '修改人',
	`cuser_id&
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值