组织层次结构在关系型数据库中的实现方法

组织层次结构在关系型数据库中的实现方法

ID:8854201

大小:78.50 KB

页数:8页

时间:2018-04-09

组织层次结构在关系型数据库中的实现方法_第1页
组织层次结构在关系型数据库中的实现方法_第2页
组织层次结构在关系型数据库中的实现方法_第3页
组织层次结构在关系型数据库中的实现方法_第4页
组织层次结构在关系型数据库中的实现方法_第5页
资源描述:

《组织层次结构在关系型数据库中的实现方法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、组织层次结构在关系型数据库中的实现方法作者:湖南粮食技工学校信息机电教研室——张响〖摘要〗   在B/S和C/S结构应用系统的数据库模型设计过程中,经常遇到分级分层的组织结构数据库设计的问题,它们以树状结构存在,上级有若干个下级、下级又分若干个下级,这样一级一级的出现层次的问题,如:公司的商品与类别关系,商品与品牌关系,人事部门的组织架构用户与部门关系等,这些关系中:商品的类别——商品、品牌——商品、部门——用户之间存在实体间的一对多关系,类别、品牌、部门内部之间又存在隶属(层次)关系,怎样在数据库设计中设计出这种关

2、系,同时有效快速检索不同层次查询信息?是数据库设计者要考虑的问题。这些关系在关系型数据库中表示时,有它特别的方法,有些人把它们分别建立在不同的表中,建立相应的关系,这虽然是一种解决办法,但如果在应用中,它给软件带诸多不便,特别是程序健壮性方法,如果此时需要多加一个职位,这种解决办法就需要多加一张表,那此时对应用程序的改动将可想而知。〖关键字〗1.关系型数据库:用二维表结构来表示实体以及实体之间联系的模型。2.递归:某一事物直接地或间接地由自己组成。3.递归调用:一个函数直接或间接地调用自身,便构成了函数的递归调用。前

3、者称直接递归调用,后者称间接递归调用。1.检索:根据给定的任何条件,快速的查询出各条件相关的数据库查询信息。〖正文〗实现方法一:层次模型在关系数据库本身是个问题,根本问题在于关系模型的第一范式:要求属性分为不可再分,对于组织结构这种关系,方法是:在设计中做一个指向本身主键的属性,也就是这个属性的外键就是本表的主键,它们之间建立自连接,可以实际层次查询的需求。如:假设一个雇员关系:雇员(雇员号,雇员姓名,经理)基中雇员号和经理两个属性出自同一个值域,同一元组的这两个属性值是“上、下级”关系。雇员号为主键,在目录层次结构

4、中,雇员号为子结点,经理为父结点。1:N雇员号雇员姓名经理雇员号雇员姓名经理E3P1E4P2E3E6P3E3E8P4E6图雇员关系例:根据雇员关系列出上一级经理及其所领导的职员清单。SELECTS.雇员姓名,’’领导”,E.雇员姓名FROM雇员S,雇员EWHERE;S.雇员号=E.经理说明:定义经理关系S和雇员关系E,结果在关系S和E上的联接实现了检索的要求。在实际应用中我们往往需要检索它的相应的不同层(子结点或者父结点),同时子结点与相应表之间存在联系,这时在数据结构中采用递归的方法,根据不同结点的层次位置,递归出

5、相应结点的内容,虽然这种结构的实现需要计算机付出时间、空间的代价,但能实现实际不同结点信息的检索需要,也是层次结构在关系数据库中的一种常用的解决方法。例如:――― 定义类别表: CREATETABLEdbo.[BASDEPT]([ID]类别IDintNOTNULL,[DPTNO]类别编号varchar(20)NOTNULL,[DPTNAME]类别名称varchar(60)NOTNULL,[PID]父类别IDintNOTNULL,)其中类别ID与父类别ID存在父与子之间的层次关系。父类别为0,表示根结点。类别层次结构如

6、下:层次类别第一层第二层第三层第四层类别名称(类别编号)食品(01)休闲类(24)米果(241)……海苔(242)果冻类(243)果仁(244)坚果仁(24401)瓜仁类(24402)豆类、花生(24403)其他类(24404)休闲小食(245)…………粮油(21)南北干货(22)烹调食品(23)……类别表如下:类别id类别编号类别名称父类别id12271食品0110024休闲食品12271196244果仁1100139524401坚果仁1196……………………―――定义商品表CREATETABLEdbo.[BASP

7、LU]([PLUID]商品IDintNOTNULL,[DPTID]类别IDintNOTNULL,[PLUNO]商品编号varchar(20)NOTNULL,[PLUNAME]商品名称varchar(60)NOTNULL商品表如下:商品id类别id商品编号pluno商品名称pluname1833641395301360开心果……………………商品表与类别表通过dptid(类别id)关联,dptid(类别id)为商品表外键。类别表的最低层编号为商品表的类别编号怎样实际不同结点的表之间的检索?提高数据库查询的效率,在数据库设

8、计中,可以采用函数方法实际不同层次的结点检索(向上(父结点)、向下(子结点)两个方向等)(A)、判断某个节点A(@ID)是否是节点B(@PID)的子节点。函数名:DptSonNode(@IDinteger,@PIDinteger)结果:返回1:表示节点A(@ID)是节点B(@PID)的子节点返回0:表示节点A(@ID)不是节点B(@PID)的子

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。