树形结构在我们的日常开发中经常用到,很多功能为了展示层次关系往往都使用树形结构来存储,对于树形结构数据表设计,也有多种方案供我们选择,接下来我就介绍下树形结构表设计的一些基本方案。以组织结构中的部门表(department)为例
- 常规设计。一张表搞定,记录父级id即可,如下:
CREATE TABLE `department` (
`departmentid` smallint(5) unsigned NOT NULL auto_increment, // 部门流水ID
`title` varchar(90) NOT NULL default '', // 部门名称
`parentid` smallint(5) unsigned NOT NULL default '0', // 部门上级ID
·path` varchar(60) NOT NULL default '', // 部门路径Id
`displayorder` smallint(6) unsigned NOT NULL default '1000', // 部门显示顺序
PRIMARY KEY (`departmentid`),
KEY `parentid` (`parentid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
数据表记录数据如下: