转载:树形结构表设计
树形结构在我们的日常开发中经常用到,很多功能为了展示层次关系往往都使用树形结构来存储,对于树形结构数据表设计,也有多种方案供我们选择,接下来我就介绍下树形结构表设计的一些基本方案。以组织结构中的部门表(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;
数据表记录数据如下:部门ID 部门名称 父级ID 路径 显示顺序 1 技术开发部 0 1 2 开发组 1 1 2 3 开发A组 2 1,2 3 -
基于左右值编码。
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
`lft` smallint(6) unsigned NOT NULL default '0', // 左值
`rght` smallint(6) unsigned NOT NULL default '0', // 右值
PRIMARY KEY (`departmentid`),
KEY `parentid` (`parentid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
数据表记录数据如下:部门ID 部门名称 父级ID 左值 右值 1 技术开发部 0 1 6 2 开发组 1 2 5 3 开发A组 2 3 4
-
节点表 + 关系表
CREATE TABLE `department` (
`departmentid` smallint(5) unsigned NOT NULL auto_increment, // 部门流水ID
`title` varchar(90) NOT NULL default '', // 部门名称
`displayorder` smallint(6) unsigned NOT NULL default '1000', // 部门显示顺序
PRIMARY KEY (`departmentid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `departmentrelation` (
`parentid` smallint(5) unsigned NOT NULL default '0', // 节点父级ID
`childid` smallint(5) unsigned NOT NULL default '0', // 节点ID
`level` smallint(3) unsigned NOT NULL default '0', // 节点深度
PRIMARY KEY (`childid`,`parentid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
数据表记录数据如下:
部门表(department)部门ID 部门名称 显示顺序 1 技术开发部 1 2 开发组 2 3 开发A组 3 父级ID 子级ID 节点深度 1 1 0 1 2 1 2 2 1 1 3 2 2 3 2 3 3 2
相关推荐
树形结构数据表的设计(左右设计)
本篇文章将深入探讨“树形结构设计”在Java环境下的实现,并结合给出的链接资源——一篇在CSDN博客上的文章(虽然无法直接访问,但我们可以根据描述推测其内容),以及名为“tms”的压缩包文件,来解析相关知识点。...
首先,最基本的树形结构设计是通过`{Node_id, Parent_id}`来描述节点间的继承关系,即每个节点都有一个唯一的ID(Node_id),同时记录其父节点的ID(Parent_id)。这样的设计简单直观,便于理解和实现。但是,这种...
- 数据模型:设计一个能够存储和操作树形结构的高效数据模型。 - 用户界面:提供直观的UI元素,让用户轻松进行添加、删除和移动操作。 - 性能优化:确保大量节点时的性能,可能需要懒加载或分层渲染策略。 - 错误...
在本示例中,我们将探讨如何使用Spring JPA来实现单表递归树形结构。 首先,我们需要理解递归树形结构。在数据库中,树形结构通常通过自关联来表示,即一个表的某个字段引用该表自身,形成一个层级关系。对于单表...
在IT界,尤其是在前端开发中,...总结来说,“好看的树形结构菜单”是一个结合了数据结构、前端组件、UI设计和交互体验的综合概念,它在许多Web应用中扮演着至关重要的角色,帮助用户高效地浏览和操作层次化的信息。
树形结构在程序设计中极为重要,尤其是在需要展示层级关系和进行快速查找、排序等操作的场合。 从普通Java对象中建立树形结构的过程涉及到算法设计与优化。原始数据通常是扁平化存储的,需要通过特定的算法将其转换...
综上所述,这个项目提供的代码是构建多级菜单树形结构的一种解决方案,它以简洁明了的设计思路,配合jQuery库,使得在网页应用中创建和管理复杂层次结构变得轻松。无论是新手还是经验丰富的开发者,都能从中受益,...
9. **简化的树形结构**:在提到的“简化树形结构”可能是指一种特别设计的树形结构,旨在减少复杂性,只显示最重要的层次和信息,使得用户能够更快速地理解和导航。 10. **应用场景**:除了文档管理,树形结构插件...
在IT领域,树形结构是一种常见的数据组织方式,它模拟了自然界中的树状层次关系,广泛应用于文件系统、数据库索引、计算机科学的算法设计等多个方面。在这个项目中,我们探讨的是如何在Java环境中,利用JSP(Java...
本项目“BS实现树形结构(jsp+mysql数据库+设计文档)”提供了一个完整的解决方案,包括源码、开发文档以及SQL Server数据库,方便开发者在MyEclipse环境中直接导入使用。 首先,我们来探讨树形结构在Web开发中的应用...
在本项目中,我们关注的是一个特别的应用场景——"Android树形结构RecyclerView",这是一个专门设计用于展示无限层级数据的RecyclerView实现。这种组件在企业级应用中尤其常见,如组织架构、文件目录、分类导航等,...
总的来说,JavaScript实现的树形结构不仅能够提供直观的数据展示,还能够通过良好的设计和交互提升用户体验。在实际开发中,可以复用这些代码,根据需求进行定制,同时注意性能优化和兼容性问题,以确保在各种环境下...
在Android应用开发中,树形结构的界面设计是一种常见的数据展示方式,特别是在处理层级关系复杂的数据时,如文件系统、组织架构等。本教程将详细讲解如何利用Android技术实现一个支持单选和多选功能的树形结构示例。...
树形结构地址联动选择是一种常见的前端交互设计,广泛应用于网页中的地区选择,如省市区县等多级选择。这种设计通常以树状的形式展现,用户逐级选择,上级选择会影响下级可选项,实现联动效果。在此过程中,前端...
在UI设计中,树形结构常用于显示文件系统、组织结构或者复杂的分类体系,用户可以通过展开或折叠节点来查看或隐藏子节点。 Checkbox树形结构在此基础上增加了复选框元素,每个节点前面都有一个复选框,用户可以通过...
在Android开发中,实现树形结构的多选CheckBox是一项常见的需求,主要用于展现层次关系的数据,并允许用户进行多项选择。这个“Android 树形结构的多选CheckBox”项目提供了一个易于集成和使用的解决方案。 首先,...
8. **响应式布局**:随着移动设备的普及,LIGERUI的树形结构也支持响应式设计,能在不同尺寸的屏幕上呈现出良好的视觉效果。 在实际应用中,开发者可以利用LIGERUI提供的API和示例代码,轻松地将树形结构集成到项目...
本文主要探讨了使用Vue框架实现带有复选框的树形结构组件,重点在于在已有的递归组件基础上添加多选框功能,并实现一些基本的交互逻辑。要实现这样的功能,需要考虑以下几个关键技术点: 1. **递归组件的使用**:...
树形结构数据库设计是一种常见的数据组织方式,尤其适用于处理层次性数据。本文将深入探讨“树形结构数据库设计”的概念、特点以及如何利用SQL进行操作。 树形结构数据库设计模仿了自然界中的树状模型,每个节点...