层次(树型)数据的存储与访问(一)

本文介绍了层次数据在关系数据库中的存储与访问,主要探讨了多表模式和邻接表模式。多表模式适用于层次较少的数据,操作简单但查询效率不高。邻接表模式则将层次数据平面化,能实现无限级分类,但递归操作可能导致效率降低。文章通过实例展示了这两种模式的增删查改操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

在软件项目中,经常会遇到层次数据的处理问题,比如产品分类、树型目录、企业组织结构等等。一般情况下,这些数据不得不存储在关系数据库中,由于关系数据库表是扁平的二维结构,所以必须将层次数据平面化,才能适应关系模型的存储访问模式。目前基于此的转换方法很多,流行的主要有四种:多表模式、邻接表模式、编码模式、改进的前序前历模式。本文在收集整理的基础上,通过实例对比、分析、探讨,希望给不熟悉的朋友提供一些参考。

首先给出一个问题,是一个商品分类的例子,需要在关系数据库中存储和处理,为了简便起见,分类的层次尽量的少,并且在下文中只讨论处理分类,而并不涉及到具体产品内容。如图所示。

一、多表模式:

多表模式就是用多表来存储层次数据,方法是每一层用一张表表示,这是一种非常原始的方法,不过很好理解,在数据层次很少的,三层以下,特别是两层中得到了广泛的应用。上面的问题可以用三张表分解,根“商品”这一层在此可以是虚拟的,表中可以省略。

 

1、  一级分类表(table1):

 

Id

 

Title

 

1

 

电器

 

2

 

服装

2、  二级分类表(table2):

 

Id

 

Title

 

Parent

 

11

 

电视

 

1

 

12

 

冰箱

 

1

 

13

 

空调

 

1

 

14

 

成人

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值