[发明专利]一种基于邻接表结点状态和优先级的ER图绘制方法及装置有效

专利信息
申请号: 201911406960.7 申请日: 2019-12-31
公开(公告)号: CN111190971B 公开(公告)日: 2023-08-01
发明(设计)人: 王功明;王建华 申请(专利权)人: 浪潮软件股份有限公司
主分类号: G06F16/28 分类号: G06F16/28
代理公司: 济南信达专利事务所有限公司 37100 代理人: 阚恭勇
地址: 271000 山东省*** 国省代码: 山东;37
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 邻接 结点 状态 优先级 er 绘制 方法 装置
【权利要求书】:

1.一种基于邻接表结点状态和优先级的ER图绘制方法,其特征在于,

包括以下步骤:

S1:读取数据库表结构;

S2:生成基于邻接表的实体关系模型,包括:

实体表示数据库中存在的数据表,关系是任何两张数据表之间的关系类型;

关系类型包括4种:1:1、1:N、M:1、M:N,其对应的类型值分别为1、2、3、4;

每个实体对应一个结点,所有结点构成的数组称为邻接表的结点表;

每个结点对应一个边集,存储和该结点存在关系的其它结点的存储位置,以及彼此之间的关系;

所有结点边集的集合,称为邻接表的边表;

S3:结合结点度和视觉位置优先级绘制ER图;包括:

S31:生成有序结点表和有序边集;所述步骤S31具体包括:

S311:将结点表所有结点按照度进行降序排列,形成有序结点表;

S312:对每个结点对应边集中所有元素按照对应结点的度进行降序排列,形成有序边集;

S313:返回所生成的有序结点表和有序边集;

S32:初始化结点状态数组VertStatusArray,所有元素值均为1;

S33:绘制ER图;所述步骤S33具体包括:

S331:选择有序结点表中第一个结点VA;

S332:判断是否满足VertStatusArray[VA]!=3,如果满足,那么转S333,否则转S339;

S333:绘制VA及其边集的结点和连接关系;所述步骤S333具体包括:

S3331:判断是否满足VertStatusArray[VA]!=2,如果满足,那么转S3332,否则转S3333;

S3332:在屏幕空余位置上方的中央绘制VA;

S3333:绘制VA边集的结点;所述步骤S3333具体包括:

S33331:计算结点VA正下方和水平两侧已经绘制结点数DA,VA边集中状态值为1的结点个数RA;

S33332:判断是否满足DA==0,如果满足,那么转S33333,否则转S33334;

S33333:在结点VA正下方和水平两侧完全绘制VA边集中状态值为1的结点,转33337;所述步骤S33333具体包括:

S333331:判断是否满足RA==1,如果满足,那么转S333332,否则转S333333;

S333332:将VA边集中RA个状态值为1的结点绘制在VA正下方,转S333339;

S333333:判断是否满足RA==2,如果满足,那么转S333334,否则转S333335;

S333334:将VA边集中RA个状态值为1的结点绘制在VA水平两侧,转S333339;

S333335:判断是否满足RA==3,如果满足,那么转S333336,否则转S333337;

S333336:将VA边集中RA个状态值为1的结点绘制在VA正下方和水平两侧,转S333339;

S333337:判断是否满足RA3,如果满足,那么转S333338,否则转S333339;

S333338:将VA边集的前3个结点绘制在VA正下方和水平两侧,其余RA-3个结点均匀绘制在VA正下方和水平两侧构成的直角区域内;

S333339:返回完全绘制的结点;

S33334:判断是否满足0DA3,如果满足,那么转S33335,否则转S33336;

S33335:在结点VA正下方和水平两侧部分绘制VA边集中状态值为1的结点,转S33337;所述步骤S33335具体包括:

S333351:判断是否满足0RA=3-DA,如果满足,那么转S333352,否则转S333353;

S333352:将VA边集中RA个状态值为1的结点绘制在VA正下方和水平两侧的空余位置,转S333356;

S333353:判断是否满足RA3-DA,如果满足,那么转S333354,否则转S333356;

S333354:把VA边集中前3-DA个状态值为1的结点绘制在VA正下方和水平两侧空余位置;

S333355:把VA边集中其余RA-3+DA个状态值为1的结点均匀绘制在VA正下方和水平两侧构成的直角区域内;

S333356:返回部分绘制的结点;

S33336:在结点VA周围的直角区域内均匀绘制VA边集中状态值为1的结点;所述步骤S33336具体包括:

S333361:判断是否满足RA0,如果满足,那么转S333362,否则转S333363;

S333362:将VA边集中RA个状态值为1的结点均匀绘制在VA正下方和水平两侧构成的直角区域内;

S333363:返回均匀绘制的结点;

S33337:返回绘制的VA边集结点;

S3334:绘制VA和其边集结点的连接关系;所述步骤S3334具体包括:

S33341:获取VA在ER图中的位置Loc_VA;

S33342:读取VA对应的边集EdgeSetRTA;

S33343:读取EdgeSetRTA的第一个元素PTRT_VB;

S33344:从PTRT_VB中获取对应结点指针PT_VB和关系类型RT_VB;

S33345:根据PT_VB获取对应结点VB;

S33346:获取VB在ER图中的位置Loc_VB;

S33347:绘制从Loc_VA到Loc_VB的线段Line_AB;

S33348:根据RT_VB在Line_AB两端标记关系类型;

S33349:返回绘制的连接关系;

S3335:将VA边集中状态值为1结点的状态值修改为2;

S3336:修改结点VA状态VertStatusArray[VA]=3;

S3337:返回绘制的VA边集结点和连接关系;

S334:选择VA边集中第一个结点VB;

S335:判断是否满足VertStatusArray[VB]!=3,如果满足,那么转S336,否则转S337;

S336:绘制VB及其边集的结点和连接关系;所述步骤S336具体包括:

S3361:判断是否满足VertStatusArray[VB]!=2,如果满足,那么转S3362,否则转S3363;

S3362:在屏幕空余位置上方的中央绘制VB;

S3363:绘制VB边集的结点;所述步骤S3363具体包括:

S33631:计算结点VB正下方和水平两侧已经绘制结点数DB,VB边集中状态值为1的结点个数RB;

S33632:判断是否满足DB==0,如果满足,那么转S33633,否则转S33634;

S33633:在结点VB正下方和水平两侧完全绘制VB边集中状态值为1的结点,转S33637;所述步骤S33633具体包括:

S336331:判断是否满足RB==1,如果满足,那么转S336332,否则转S336333;

S336332:将VB边集中RB个状态值为1的结点绘制在VB正下方,转S336339;

S336333:判断是否满足RB==2,如果满足,那么转S336334,否则转S336335;

S336334:将VB边集中RB个状态值为1的结点绘制在VB水平两侧,转S336339;

S336335:判断是否满足RB==3,如果满足,那么转S336336,否则转S336337;

S336336:将VB边集中RB个状态值为1的结点绘制在VB正下方和水平两侧,转S336339;

S336337:判断是否满足RB3,如果满足,那么转S336338,否则转S336339;

S336338:将VB边集的前3个结点绘制在VB正下方和水平两侧,其余RB-3个结点均匀绘制在VB正下方和水平两侧构成的直角区域内;

S336339:返回完全绘制的结点;

S33634:判断是否满足0DB3,如果满足,那么转S33635,否则转S33636;

S33635:在结点VB正下方和水平两侧部分绘制VB边集中状态值为1的结点,转S33637;所述步骤S33635具体包括:

S336351:判断是否满足0RB=3-DB,如果满足,那么转S336352,否则转S336353;

S336352:将VB边集中RB个状态值为1的结点绘制在VB正下方和水平两侧的空余位置,转S336356;

S336353:判断是否满足RB3-DB,如果满足,那么转S336354,否则转S336356;

S336354:把VB边集中前3-DB个状态值为1的结点绘制在VB正下方和水平两侧空余位置;

S336355:把VB边集中其余RB-3+DB个状态值为1的结点均匀绘制在VB正下方和水平两侧构成的直角区域内;

S336356:返回部分绘制的结点;

S33636:在结点VB周围的直角区域内均匀绘制VB边集中状态值为1的结点;所述步骤S33636具体包括:

S336361:判断是否满足RB0,如果满足,那么转S336362,否则转S336363;

S336362:将VB边集中RB个状态值为1的结点均匀绘制在VB正下方和水平两侧构成的直角区域内;

S336363:返回均匀绘制的结点;

S33637:返回绘制的VB边集结点;

S3364:绘制VB和其边集结点的连接关系;所述步骤S3364具体包括:

S33641:获取VB在ER图中的位置Loc_VB;

S33642:读取VB对应的边集EdgeSetRTB;

S33643:读取EdgeSetRTB的第一个元素PTRT_VC;

S33644:从PTRT_VC中获取对应结点指针PT_VC和关系类型RT_VC;

S33645:根据PT_VC获取对应结点VC;

S33646:获取VC在ER图中的位置Loc_VC;

S33647:绘制从Loc_VB到Loc_VC的线段Line_BC;

S33648:根据RT_VC在Line_BC两端标记关系类型;

S33649:返回绘制的连接关系;

S3365:将VB边集中状态值为1结点的状态值修改为2;

S3366:修改结点VB状态VertStatusArray[VB]=3;

S3367:返回绘制的VB边集结点和连接关系;

S337:判断VA边集的结点是否读取完毕,如果没有,转S338,否则转S339;

S338:读取VA边集的下一个结点VB,转S335;

S339:判断有序结点表是否读取完毕,如果没有,转S33A,否则转S33B;

S33A:读取有序结点表的下一个结点VA,转S32;

S33B:返回绘制的ER图。

2.一种基于邻接表结点状态和优先级的ER图绘制装置,用于执行权利要求1所述的基于邻接表结点状态和优先级的ER图绘制方法,其特征在于,包括:

表结构读取部件M1,用于读取数据库的表结构;

实体关系模型生成部件M2,用于将数据库中存在的实体及关系类型存储在邻接表中;

ER图绘制部件M3,用于绘制采用邻接表存储的实体关系模型;

所述ER图绘制部件M3,具体包括:

邻接表排序部件M31,用于生成有序结点表和有序边集;

邻接表绘制部件M32,用于绘制邻接表的结点及其连接关系;

所述邻接表绘制部件M32,具体包括:

第1类结点及关系绘制部件M321,用于绘制结点表的结点及其边集的结点,以及二者之间的连接关系;

第2类结点及关系绘制部件M322,用于绘制边集的结点及其在结点表对应边集的结点,以及二者之间的连接关系。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮软件股份有限公司,未经浪潮软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201911406960.7/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top