APP下载

基于IT项目实训案例谈数据库设计

2014-12-31于海雯娄芳

电脑知识与技术 2014年35期
关键词:数据库

于海雯++娄芳

摘要:该文介绍了如何使用UML进行数据库设计。首先建立静态模型,然后根据映射策略将模型映射为数据库表,最后使用触发器、约束等来优化建好的数据库,以达到数据库可以高效运行的目的。

关键词:数据库;统一建模语言;映射策略

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)35-8353-02

The Database Design Based on IT Project Case

YU Hai-wen, LOU Fang

(College of Information Engineering NanChang University,Nanchang 330000,China)

Abstract: This paper introduces how to use UML to design the database.。First establishes the static model,then according to the mapping strategy,model is mapped to a database table,and finally to optimize the built database using triggers and constraints,in order to achieve the purpose of database can be operate efficiently.

Key words: db; uml; mapping strategy

近年来,高校计算机专业学生通过在企业实习,或参加校企合作的工程实训以提高高校毕业生专业技能。该文以“江西微软技术中心”的项目实训案例“基于SNS的学习社区平台”网站的数据库设计为例,简要谈谈该类项目的数据库设计、实现的过程和方法。

为方便下面结合案例讲述数据库设计的相关问题,先简要阐述下“基于SNS的学习社区平台”的最基本的用户需求:SNS即Social Networking Services,专指旨在帮助人们建立社会性网络学习平台的互联网应用服务。所面向的对象主要是各校学生及教师等。公共社区里,学生可以获取老师提供的学习资源和教学资料,可以到资料库已分类的资料里面下载并查阅;游客可以进入公共社区看社区论坛;个人社区里,用户与用户之间可以交流互动,用户可以有自己的个人空间,可以建立自己的好友圈,等。

1 数据库设计一般流程

值得一提的是,在如今以面向对象为主流的编程思想中,用面向对象的思想来进行数据库设计同样重要。

数据库设计的一般流程是:首先建立数据静态模型,其次建立起静态模型到关系数据库的映射,之后进行优化,这其中包含有对复杂关系的手工处理,比如,实体关系中的多对一的关系的处理,等等;采用UML进行数据库设计,所用软件:StarUML或Rose等,采用UML建模表现设计思想的好处在于:能够直观、清晰地表达数据库模型的系统结构,易于开发,缩短系统开发周期。

2 建立静态模型

静态模型是系统中最基本、最重要的模型,静态模型一般用UML的类图来表示,用来描述系统中类和对象以及类和对象之间的关系。后续的设计工作,都是在得到了一个完整的类图后,才进行下一步的设计工作。

其中,UML(United Model Language)即统一建模语言,其用例图也是需求阶段常用的分析和表现工具之一。常用的UML软件有ROSE、starUML、MS Visio等等。

2.1 寻找类

根据用户需求,寻找类;

比如,根据“基于SNS的学习社区平台”的最基本的用户需求,一种方案是:将整个系统划分为:“个人空间”和“学习社区”2个系统,根据它们的功能需求,可以抽象出如下类:管理员admin、用户user、好友friend、日志diary、相册album、相片photo、聊天消息chatMessage、社区community、社区管理员communityManager、资源resources、资源分类resourceDispatch、主贴post、回帖replies等。

其中,“资源”和“资源分类”2个类,学生设计时,一般会把“资源分类”作为“资源”类中的一个属性,但这样做意味着以后资源有新的分类时就不好处理了;

另外,“帖子”,其实可以做成自反关系,这样,就可以不需“回帖”类。

因此,上述类识别的结果并不一定是最佳的,这与用户需求也有直接的关系。

2.2 建立类图

建立类图的目的是直观地了解类之间的关系;所用软件:PowerDesigner15。

一般类很少单独存在,图1中,每个类的属性都是类自有的,与其他类的关系不需要定义在类属性中。比如,如果需表示某资源是哪个用户上传的,传统数据库表中会在用户表定义时给出一个字段,比如ResourceId来说明,但本案例中,CDM图用了面向对象思想,已经在图1中表示了“资源”与“用户”之间的关系,故用户表的12个属性中,不需定义ResourceId属性,因为在以后生成PDM图时,软件会根据类之间的关系以外键给出。

3 模型到数据库映射

一般情况下,根据映射策略是将一个实体类映射为一个表或多个表。每个实体类属性记录的是有关实体的信息,比如前面步骤识别出来的类,就恰恰映射为数据库中的1或多个表;这也正是面向对象思想在数据库设计中的运用。

3.1 映射策略

3.1.1 将实体类映射为表

将实体类映射到表主要考虑两个问题:一是每个表一般有个主键,主键要明确定义,并且建议定义为主键的属性不要有业务意义;另一个是类之间的各种关系的处理。主键的定义一般可以有两种方法:endprint

1) 为每个类增加一个对类无意义ID属性, 俗称“流水ID号”,并设为主键;其无意义和唯一性,对后期维护很有利;

2) 将实体类的某个属性或属性的组合设为主键。优点:主键具有业务意义,比较容易理解;缺点:可能涉及到其他表的关系,即外键,一旦其他类发生变化,更改的工作量很大;在做架构设计时一般不建议设置此类主键。

3.1.2 属性映射为列

通常一个属性映射为表中的一列,对于复杂属性可能会映射为几列。

3.1.3 关联关系

类之间的关联关系有一对一或一对多的关系,在关系数据库中是通过外键FK来实现的。外键允许将表中的某一行与其它表中的行相关联。

3.2 表映射

对每个类进行分析,然后映射。由于涉及的表格较多,故略。

4 优化

4.1 创建索引

什么时候建立索引?在哪些列上建立索引?一般来说如果表中的字段经常被使用就应创建索引,能加快数据库的查询速度。

数据库索引大致分为四类:

唯一索引:使用关键词UNIQUE创建,不允许具有索引值相同的行,在创建该索引后每次进行Update和Insert操作时都会进行检查。

主键索引:当属性被设置为主键后,数据库管理软件会为其设置主键索引,即主键不能为NULL,且不允许重复。

聚集索引:是一种索引,按某种规律排序,表中各行的物理顺序与键值的逻辑顺序相同,对于表中检索操作频繁的列,设置聚集索引,表中只能包含一个聚集索引,即确保索引列的唯一性,不特别说明的话,主键列默认为聚集索引。

非聚集索引:意思是数据行不按非聚集索引键的顺序排序和存储,表中各行的物理顺序与键值的逻辑顺序也不匹配。

4.2 创建CHECK约束

CHECK 约束指约束表中某一个或某些列可接受的数据值或者数据格式。比如:“基于SNS的学习社区平台”的用户表有性别属性,显然性别只接受“男”、“女”,创建CHECK约束:CONSTRAINT ck_Sex CHECK (Sex in {‘男,女})。

4.3 创建触发器

触发器(Trigger)实际是个特殊的存储过程,其执行是由事件来触发,一般对表进行Insert、Delete、Update操作时就会被激活执行。

5 结束语

校企合作的此类实训项目中,进行数据库设计与实现所用知识、技术,基础来自于校内所学,但又远高于校内简单的数据库理论知识,是学生按软件工程流程做项目开发最重要的一个环节,数据库设计的好坏,直接影响后期软件开发和维护。

参考文献:

[1] 古乐声.JavaWeb程序设计与项目实践[M].电子工业出版社,2011.

[2] 陈轶.Web开发技术实用教程[M].清华大学出版社,2011.

[3] 廖若学.JSP高级编程[M].机械工业出版社,2001.endprint

猜你喜欢

数据库
超星数据库录入证
本刊加入数据库的声明
数据库
数据库
数据库
两种新的非确定数据库上的Top-K查询
数据库
数据库
数据库
数据库