- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
树和图在关系型数据库中的表示及遍历
第 16 卷 第 1 期
1999 年 2 月
河
北
省
科
学
院
学
报
V o l. 16 N o. 1
F eb. 1999
Jo u rna l o f th e H ebe i A cadem y o f Sc ience s
树和图在关系型数据库中的表示及遍历
王元力
孙海波
袁维义
( 河北省冶金工业学校)
( 河北省科学院自动化研究所)
【摘要】 树型结构和图型结构是表示客观事物的两个非常重要的数据结构, 本文结合实例给
出了树型数据结构和图型数据结构在关系型数据库中的表示方法以及相应遍历的存储过程。
【关键词】 树, 图, 关系数据库, 遍历
当今关系型数据库在各个领域有着越来越广泛的应用。 在实际应用中不免要用到树型数
据结构和图型数据结构的表示及遍历。在经典的数据结构教程中, 对树和图的表示及遍历提供 了多种形式和方法。但是, 关于树和图在关系型数据库中的表示及遍历的文章相对较少。本文 结合实际应用给出树和图的表示方式及相应遍历的存储过程。
1 树型??构的表示及遍历
1. 1 问题的提出
在电力企业的用电管理信息系统中, 有一个最关键的子系统—— 电量电费子系统。该子系 统负责用户电量电费的抄、核、收管理。首先要抄回电能表的表字读数, 计算出各个电能表的计
量电量。然后, 计算出不同用电类别的用电量, 并根据相应电价计算出电费。在实际工作中, 为
了计量出不同用电类别的用电量, 在挂表方式上就呈现出了树型结构。 示例如图 1:
图 1
假定, 现已计算出各个电能表的计量电量分别为: a 1, b 1, b 2, c1。要求计算出各个用电类别 的用电量。 由图例可直观看出:
工业用电量= a 1- b 1- b 2
农业用电量= b 1
居民用电量= b 2- c1
非居民用电量= c1
但是, 在实际工作中挂表方式千差万别, 只有设计出一种数据结构来表示出各个电能表之 间的关系, 并给出各类电量的通用计算过程, 才能真正解决电量计算的问题。
1. 2 树型结构的表示
电能表表结构 [DN BX Z ]表示如下:
主键: DN BBH
说明 电能表编号 上层电能表编号 用电类别 计量电量
字段名
DN BBH SCDBBH YDL B
JL DL
1. 3 树型结构的遍历
字段类型
CHA R (10) CHA R (10) CHA R (20)
N UM ER IC (9, 0)
用下列示例存储过程来遍历各个电能表, 并打印各用电类别的用电量
c rea te p ro c exp an d a s
se t no co u n t o n
dec la re @ leve l in t, @ lin e ch a r (20) , @ yd l n um e r ic (9, 0) , @ yd lb ch a r (20)
c rea te tab le # stack ( item ch a r (10) , yd l n um e r ic (9, 0) , leve l in t) ?3 定义临时表, 用于存储待 处理电能表3 ?
in se r t in to # stack ( item , yd l, leve l)
se lec t dn b b h , jld l, 1 f rom dn b x z w h e re isn u ll ( scdb b h , ) = ”?3
将第一层电能表存入待处理临
时表3 ?
se lec t @ leve l= 1
w h ile @ leve l 0 b eg in
if ex ist s ( se lec t3 f rom # stack w h e re leve l= @ leve l) ?3 如果当前层有待处理电能表, 则
处理3 ?
b eg in
se lec t @ cu r ren t= item f rom # stack w h e re leve l= @ leve l se lec t @ yd l= yd l f rom # stack w h e re item = @ cu r ren t
se lec t @ yd lb = yd lb f rom
#
stack w h e re item = @ cu r ren t
se lec t @ yd l= @ yd l- sum ( jld l) f rom dn b x z w h e re scdb b h = @ cu r ren t
se lec t @ lin e= sp ace (@ leve l- 1) + @ yd lb + ’ 用电量为: ’+ co n ve r t (
文档评论(0)