以体系结构为中心的数据库设计方法及应用

2020-04-07 17:40冯小洁
中国教育信息化·高教职教 2020年3期
关键词:映射智慧校园

摘   要:在软件系统分析和设计过程中,围绕软件体系结构这一中心,利用类图模型和关系型数据库关系模型之间的映射,可以加速数据库设计。文章结合某高校智慧校园建设重点项目“科研管理系统数据库设计”实例,提出了一种综合面向对象的数据库设计方法和UML方法,是以多层软件体系结构为中心的数据库设计方法。文章重点介绍了在多层软件体系结构框架内,类、类的方法到关系型数据库的表、视图、存储过程的映射方法。

关键词:软件体系结构;关系型数据库;映射;面向对象分析与设计;智慧校园

中图分类号:TP311.13 文献标志码:B 文章编号:1673-8454(2020)05-0089-05

数据库设计是指对于一个给定的应用环境,构造数据逻辑模式和存储方式,建立数据库,使其能够满足各种应用对数据的需求[1]。常用的以数据为中心的方法把数据库设计分为六个阶段:①需求分析;②概念结构设计;③逻辑结构设计;④物理结构设计;⑤数据库实施;⑥数据库运行和维护[2] 。数据库设计方法的选择是决定数据库设计质量的关键因素。目前,常用的数据库设计的方法有新奥尔良方法、基于E-R模型的方法、3NF方法、面向对象方法、UML方法等[3]。这些方法对数据库设计走向规范化、标准化起到巨大的推动作用,但随着数据库越来越庞大、应用越来越复杂、用户要求越来越高,上述的方法暴露出一些局限性[4]。以软件体系结构为中心的数据库方法为数据库设计提供了新的思路。该方法综合了面向对象数据库设计方法和UML方法的优点,在面向对象的系统分析和系统设计阶段,突出以软件体系结构为中心,把类分析、类设计和数据库设计过程结合起来,快速进行高质量、规范化的数据库应用系统开发。

一、多层软件体系结构

软件体系结构是软件系统的映射,它定义了软件系统的不同组成部分、它们之间的关系和交互、通信机制、以及如何修改系统组件、如何添加新组件等整体规则[5]。

依据层模式理论建立的多层软件体系结构广泛应用于软件系统的搭建。在层模式理论指导下,基于微软ASP.NET MVC框架,可以设计出一种通用的多层软件体系结构。这种多层软件体系结构划分为用户接口层(User Interface Layer,UIL)、业务逻辑层(Business Logic Layer, BLL)、数据访问层(Data Access Layer,DAL)、实体域层(Entity Domain Layer, EDL)和数据存储层(Data Storage Layer,DSL),共五层(见图1)。

这里的用户接口层UIL主要是指用户界面;业务逻辑层BLL实现数据验证、计算、业务规则等[6];数据访问层主要由数据库、文件系统等组成,通过与数据库交互,数据访问层DAL实现对数据库对象(表、视图、存储过程等)的操作;实体域层EDL集中了对同一类业务实体或概念的抽象描述系统的实体类[7];数据存储层DSL用来存储系统永久性对象,主要是数据库和文件系统。这种多层软件体系结构对软件系统进行逻辑层次划分,可以将业务逻辑和业务实体分离出来,实现类、组件的重用。

二、以软件体系结构为中心的数据库设计方法

以软件体系结构为中心进行数据库设计,突出了软件体系结构的核心地位,改变传统的以数据为中心的思想。在软件体系结构框架内,把类的分析和设计与数据库设计结合起来,利用基于UML的面向对象系统分析和设计得到的类图模型映射到关系数据库关系模型,把类的方法映射到关系数据库对象视图或存储过程。

实体域层中的类到数据库表的映射。实体域层中的实体类映射到数据存储层数据库基本表。实体类的属性映射为表的字段(列),而其中实体类的关键属性映射为數据库表的主键,特殊情况如关联类转化来的实体类由属性组合映射为数据库关联表的主键,属性的类型映射为数据库中相应数据类型。数据库表之间联系的设计可通过实体类之间的关系映射得到[8]。

数据访问层类的方法到数据库视图或存储过程的映射。数据访问层类的方法映射为数据库视图或存储过程,并通过嵌入在方法体中的SQL语句在数据库操作中执行这些视图或存储过程。

三、高校科研管理系统数据库设计应用

山东某高校是一所具有行业特色的综合性普通高等院校。应智慧校园建设工作需要,该校急需开发一套服务于科研管理人员、研究人员和高层领导的可进行项目、成果、科研机构和人员、科研考核、科研信息统计分析、科研资源共享的高质量的科研管理应用软件。

高校科研管理系统的开发包括Web应用开发和数据库设计两部分。该科研管理软件总体架构采用了.Net框架下基于MVC设计模式的多层软件体系结构。数据存储选择利用Microsoft SQL Server 2008 企业版数据库系统存储和处理业务数据加文件系统的混合模式方案。在系统开发过程中,考虑到开发质量和效率,数据库的设计方法采用了前边介绍的以多层软件体系结构为中心的数据库设计方法。

1.高校科研管理系统实体类图

分布于实体域层的实体类主要由业务实体类以及这些业务实体类之间的关系转化来的关联类组成。实体域包中的类主要来自系统分析阶段识别的实体分析类及参与者的映射,包括部门类Department、教师(科研人员)类Teacher、学术会议类AcademicMeeting 、学术报告类Lecture、论文类Paper、著作类Book、专利类Patent、成果获奖类Award、纵向项目类VerticalProject、横向课题HorizontalProject、校级项目类InternalProject、项目审核类ProjectAudit、项目中检类ProjectMiddleCheck、项目结题类ProjectComplete、项目费用类ProjectCost、角色类Actor、用户类SRUser等。图2为高校科研管理系统的主要实体类之间关系的类图。

2.从类图模型到关系数据库数据模型的映射

实体域层Domain包中的类到关系数据库表的映射和数据访问层包中数据访问逻辑类的方法到数据库视图或存储过程的映射是从类图模型到关系数据库数据模型的映射的主要内容。

(1)实体域层中的类到关系数据库表的映射

由于对象模型侧重于使用包含数据和行为的对象来构建应用程序,而关系模型则主要针对于数据的存储[9],因此根据实体类的特点和类之间的关系,从实体类到数据库表的映射分为实体类直接到关系数据库数据表映射、存在继承关系的类到关系数据库数据表的映射和存在关联关系的类到关系数据库数据表的映射三种情形。

①实体类直接到关系数据库数据表映射。图3表示实体域层Domain包中的成果获奖类Award类模型到成果获奖表Award模型映射关系图。成果获奖类Award中的属性分别映射为成果获奖表Award的字段(列),属性的类型映射为数据库中相应的数据类型;成果获奖类 Award的关键属性即标识符映射为AwardSn映射为成果获奖表Award的主键AwardSn。实体域层的学术会议类AcademicMeeting、学术报告类Lecture、项目审核类ProjectAudit、项目中检类ProjectMiddleCheck、项目结题类ProjectComplete、项目费用类ProjectCost等也直接映射为数据库的表。

②存在继承关系的类到关系数据库数据表的映射。项目类Project有三个子类,分别为纵向项目VerticalProject、横向项目HorizontalProject和校级项目InternalProject,如图4所示继承关系类图。这四个类中Project只是作为抽象父类存在,因此只需映射它的子类到数据库基本表。存在此类继承关系的还有作品类Works和其子类论文类Paper、著作类Book、专利类Patent等,映射方法同项目类Project。

③存在关联关系的类到关系数据库数据表的映射。科研管理员、科研秘书、教师(科研人员)、校领导用户类、系统管理员等,这些业务角色可以抽象为角色类Actor和科研管理系统用户类SRUser。角色类Actor和科研管理系统用户类SRUser之间存在1对多的关联关系,它们分别映射为数据库表角色表Actor和科研管理系统用户表SRUser(见图5)。

存在关联关系的学院部门类Department和教师(科研人员)类Teacher等,它们转化为科研管理数据库表学院部门表Department和教師(科研人员)表Teacher等。

在完成关系数据库表设计基础上,可以得到数据库逻辑设计过程中的数据库表关系图(见图6)。

通过以上过程得到的关系型数据库表模型和表关系图,结合选定的SQL Server数据库管理系统,可以快速创建出数据库表。如根据成果获奖表Award模型得到的成果获奖表Award(见表1)。

(2)数据访问层类的方法到关系数据库视图或存储过程的映射

高校科研管理系统的数据库视图和存储过程由数据访问层类的方法映射而来。数据访问层中的类包括部门访问类DepartmentDA、教师(科研人员)访问TeacherDA、学术会议访问类AcademicMeetingDA、报告访问类LectureDA、论文访问类PaperDA、著作访问类BookDA、专利访问类PatentDA、成果获奖访问类AwardDA、纵向项目访问类VerticalProjectDA、横向课题访问类HorizontalProjectDA、横向课题合同访问类HorizontalProjectContractDA、校级项目访问类InternalProjectDA、项目审核访问类ProjectAuditDA、项目中检访问类ProjectMiddleCheDA、项目结题访问类ProjectCompleteDA、项目经费访问类ProjectCostDA、角色访问类ActorDA、用户访问类SRUserDA等。

①数据访问层类的方法到关系数据库视图的映射。数据访问层的数据访问逻辑类的方法如果返回值为数据集、字符串等数据类型的结果,可以映射到数据库视图。如数据访问层的论文访问类PaperDA,它的一个获取成果获奖列表方法GetPaperList():

public DataSet GetPaperList(string c) {

StringBuilder sb = new StringBuilder();

sb.Append("SELECT  * ");

sb.Append(" FROM V_Paper ");

if (c.Trim() != ""){ sb.Append(" WHERE " + c);}

return DatabaseAccess.Query(sb.ToString());

}

映射为关系数据库的视图V_Paper:

CREATE VIEW  V_Paper

AS

SELECT  *  FROM  Paper

根据系统业务逻辑功能,在设计数据访问层类的类的方法时,可以映射出关系数据库的单个表或多个表关联查询形成的多个视图。

②数据访问层类的方法到关系数据库存储过程的映射。数据访问层的数据访问逻辑类的方法如果通过其执行插入记录、更新记录、删除记录等对数据库操作,这些方法可以映射到关系数据库存储过程。如数据访问层纵向项目数据访问类VerticalProjectDA的更新状态的方法UpdateVerticalProjectStatus():

public int UpdateVerticalProjectStatus(VerticalProject vp) {

SqlParameter[] parametersVerticalProject = {

new SqlParameter("@VerticalProjectSn", SqlDbType.Int,4),

new SqlParameter("@VerticalProjectStatus", SqlDbType.Int,4)};

parameters[0].Value = vp. VerticalProjectSn;

parameters[1].Value = vp. VerticalProjectStatus

try{

int  result = new DatabaseAccess().UpdateProcedure("P_Update_VerticalProject_Status", parametersVerticalProject);}catch (Exception e){ throw new Exception(e.Message); }

return  result;

}

對应数据库中的存储过程p_upate_VerticalProject_Status:

CREATE PROCEDURE p_update_VerticalProject_Status

(@VerticalProjectSn_1 int,@VerticalProjectStatus_2 tinyInt )

AS

BEGIN

UPDATE VerticalProject SET VerticalProjectStatus=@VerticalProjectStatus_2

WHERE VerticalProjectSn=@ VerticalProjectSn_1

END

四、结束语

以软件体系结构为中心的数据库设计方法综合了面向对象的数据库设计方法和UML方法,在多层软件体系结构框架内,以清晰的逻辑划分,把位于实体域层的实体类等映射为数据存储层的关系数据库表、把数据访问层包中数据访问逻辑类的方法映射为数据存储层的数关系据库视图或存储过程进行数据库设计。以软件体系结构为中心的数据库设计方法是面向对象的数据库设计的改进。这种方法实现了面向对象的类图模型到关系型数据库关系模型的映射,保证了设计的连续性和完整性,提高了数据库设计质量。相比传统的以数据为中心的设计方法进行数据库设计需要6个阶段,以软件体系结构为中心的方法将数据库设计阶段融入软件系统的分析和设计过程,简化了数据库设计流程,节省了开发时间,有利于提高软件开发的效率。当然,这种数据库设计方法在一定程度上减少了软件系统和数据库系统各自的内聚性,如果业务逻辑发生改变,数据库系统也需要改变,将增加系统维护难度,对软件设计人员提出了更高的技术要求。

参考文献:

[1]赵相伟,张中喜,王殷行.小型信息系统开发的关键技术探讨[J].山东科技大学学报(自然科学版),2006,25(1):67-69.

[2]李运华,张吉礼.大型公共建筑运行能耗数据库管理系统初步开发及应用[J].建筑科学,2007,23(10):62-66.

[3]王珊,萨师煊.数据库系统概论(第5版)[M].北京:高等教育出版社,2018.

[4]陈新安,鲜波,张继棠.面向对象的分析(OOA)方法在数据库系统设计中的应用[J].计算机工程与应用,2000(5):124-125.

[5]袁晓曦.软件体系结构UML建模[J].科技传播,2010(24):230-231.

[6]周实库.风电用螺栓热处理工艺设计系统的设计与实现[D].上海:上海交通大学,2014.

[7]冯小洁,Rational统一过程支持的中小型软件项目开发[J].青岛职业技术学院学报,2017,30(1):77-81.

[8]张莉.数据库技术在教务管理系统中应用研究[J].装备制造技术,2011(7):85-86.

[9]贾晓辉,夏敏捷,赵巧萍等.UML类模式在数据库中的应用[J].计算机应用与软件,2007,24(7):77-78.

(编辑:王晓明)

猜你喜欢
映射智慧校园
试论泰国文化对外来广告的映射
概念隐喻在构建语篇连贯中的作用探析