首页 >

mysql树形结构的表 |java mysql 事务处理

mysql 如何行锁,mysql默认时间约束,jpa mysql 表名 前缀,mysql查询表里已有字段,markdown文本mysql存储,java mysql 事务处理mysql树形结构的表 |java mysql 事务处理

树形结构表本质上是一张包含了父子关系的表,其中每一行对应树中的一个节点。这种数据结构的优点在于,可以方便地查询子节点、父节点、兄弟节点等关系。下面是一个树形结构表的示例:

CREATE TABLE `tree` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL COMMENT '节点名称',
`parent_id` int(11) NOT NULL DEFAULT '0' COMMENT '父节点ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='树形结构表';

这个表中,字段id是每个节点的唯一标识;name是节点的名称;parent_id是其父节点的id,如果当前节点为根节点,则parent_id为0。

树形结构表既可以通过嵌套集模型来查询节点之间的关系,也可以通过邻居模型来查询。在实际应用中,大家往往使用闭包表模型来存储树形结构数据。

CREATE TABLE `tree_path` (
`ancestor` int(11) NOT NULL COMMENT '祖先节点ID',
`descendant` int(11) NOT NULL COMMENT '后代节点ID',
`depth` int(11) NOT NULL COMMENT '深度',
PRIMARY KEY (`ancestor`,`descendant`),
KEY `fk_descendant` (`descendant`) USING BTREE,
CONSTRAINT `fk_ancestor` FOREIGN KEY (`ancestor`) REFERENCES `tree` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `fk_descendant` FOREIGN KEY (`descendant`) REFERENCES `tree` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='闭包表';

在闭包表中,每一行记录了两个节点之间的关系,其中ancestor表示祖先节点,descendant表示后代节点,depth表示祖先节点到后代节点的距离。有了这个表,大家可以轻松地查询祖先节点、子孙节点、兄弟节点等关系。

总之,MySQL的树形结构表在存储树形结构数据方面非常方便。用户可以根据实际需求来选择不同的数据模型,以实现最优化的查询。


mysql树形结构的表 |java mysql 事务处理
  • mysql多变查询,MySQL数据如何查询一个用户的所有下级用户 - 数据库 - 前端,linux下mysql报错1045
  • mysql多变查询,MySQL数据如何查询一个用户的所有下级用户 - 数据库 - 前端,linux下mysql报错1045 | mysql多变查询,MySQL数据如何查询一个用户的所有下级用户 - 数据库 - 前端,linux下mysql报错1045 ...

    mysql树形结构的表 |java mysql 事务处理
  • mysql的连表查询,mysql两表关系查询 - 数据库 - 前端,mysql 字符截取
  • mysql的连表查询,mysql两表关系查询 - 数据库 - 前端,mysql 字符截取 | mysql的连表查询,mysql两表关系查询 - 数据库 - 前端,mysql 字符截取 ...

    mysql树形结构的表 |java mysql 事务处理
  • ScanHealth没反应 - 数据库 - 前端|
  • ScanHealth没反应 - 数据库 - 前端| | ScanHealth没反应 - 数据库 - 前端| ...