数据库设计(1)_概念结构设计

数据库设计(1)_概念结构设计

2023年7月27日发(作者:)

数据库设计(1)_概念结构设计⼀、数据模型以下概念在⼀些教科书中都会有讲到,⽐如:《数据库原理与应⽤》。这⾥作了⼀下总结。

1.1、概念模型,是对现实世界的抽象,数据模型,就是描述数据结构(静态特征)、数据操作(动态特征)、数据完整性(动静交互的约束)的概念的集合。⽽数据模型也是数据库管理系统(DBMS)的核⼼和基础,各种DBMS软件的实现都是基于数据模型的。

1.2、分类数据模型可分为两种:概念数据模型、结构数据模型。(1)概念数据模型,是⾯向现象世界的数据模型,它独⽴于计算机系统和DBMS;常⽤的概念模型有:E-R模型、⾯向对象模型等。但DBMS发展⾄今,主流的仍然是关系型数据库,所以⽬前对于概念模型的设计依旧是使⽤E-R模型为主。

也许哪天⾯向对象型数据库成为主流,那我们的概念模型设计就也可以采⽤⾯向对象的⽅法了。其实ER模型就是⾯向对象模型的雏形,⾯向对象模型⼀定程度上是从ER模型演变过来的。

(2)结构数据模型,是⾯向数据库的数据模型,⼜可分为逻辑数据模型(逻辑结构)、物理数据模型(物理结构);逻辑数据模型:这是⽤户在DBMS中看到的模型。DBMS的逻辑模型先后经历了层状模型(树状模型)、⽹状模型、关系模型,以及现在发展中的⾯向对象模型,之所以关系型经久不衰,就是因为它简单的逻辑结构:表,⽆论是设计、维护都⽐较容易,尽管在处理效率上略次于前两者。⾯向对象模型虽然结构清晰、设计⽅便,但查询功能太弱,因此在DBMS中暂还没有取代关系模型的地位;

物理数据模型:是指数据在存储介质上的组织结构,它与相应的DBMS及OS相关,通常不需要⼿动去管理,⽽是通过⽤户在DBMS中指定存储的⽅式,由DBMS⾃动完成在相应OS上的存储结构。

上⾯数据模型的三种分类,也正是数据从现实世界到计算机世界的具体表⽰所要经历的过程,⽆论DBMS的发展如何,这个过程是不会改变的。

相应的,数据库设计可分为以下三步:(1)概念结构设计:利⽤概念模型对现实世界进⾏抽象;(2)逻辑结构设计:将概念模型转化为逻辑模型,也就是将对现实世界的抽象转化为计算机上DBMS的数据结构;(3)物理结构设计:定制逻辑模型中实现的数据结构在物理介质的存储结构;

⾄于数据库设计在整个软件⼯程⽣命周期中所处的位置,详见《软件⼯程 - 5、数据库设计与开发》。

⼆、概念结构设计概念结构设计的过程,就是建⽴E-R模型的过程。2.1、E-R图E-R图的组件有很多,但概括起来说,可分为以下四种:矩形:表⽰实体菱形:表⽰实体间的关系椭圆:表⽰实体的属性线段:⽤于将实体、关系相连接

对于双矩形、双菱形、双椭圆、双线段等等⼀些组件,可以不⽤去管,通常⽤以上四种组件就可以表达清楚实体及实体间的关系。

2.2、建⽴E-R模型以下过程为建⽴E-R模型的⼀般步骤,这⾥以权限管理模块为例:2.2.1、标识实体

1这是权限管理中常⽤的基于⾓⾊的访问控制(RBAC),通常有⽤户、⾓⾊这两个实体。

2.2.2、标识关系

2⽤户与⾓⾊间为多对多的互相拥有关系。

2.2.3、标识实体、关系的属性

3不仅仅是实体有属性,关系同样也有属性,这些属性在实体间建⽴关系时才会存在。有时属性太多,⽆法在图上⼀⼀列出,可以⽤表格,在后⾯的步骤中这个表格同样会⽤到,如下:实体属性性别⽤户年龄电话…

2.2.4、确定属性域属性域就是属性的取值范围。这时,可以⽤表格将属性的数据类型、数据长度、取值范围及是否可为空、简单/复合、单值/多值、是否为派⽣属性等域信息定义出来。这个过程,事实上包含了逻辑结构设计中的数据类型、NULL、CHECK、DEFAULT等信息。实体属性性别⽤户年龄电话…

2.2.5、确定键键就是可⽤于标识实体的属性,有:主键、唯⼀键、外键。实体属性⽤户编号性别⽤户年龄电话…

2.2.6、实体的特化/泛化也就是⾯向对象模型中⽗类和⼦类的概念,这是个可选的步骤。举个例⼦,⽤户中⼤部分⼈都是普通员⼯,但有⼀⼩部分是从事销售的,销售⼈员有个负责区域的属性,如果将这个属性放在⽤户实体中,如下:联系⽅式…多⼤了主键男/⼥描述键描述男/⼥多⼤了联系⽅式…数据类型及长度1字节的短整形或布尔型1字节的短整形20字节的字符型或长整形…是否可为空NONOYES描述男/⼥多⼤了联系⽅式………

4

这时我们会发现,除了销售⼈员外,其他⾮销售⼈员这个属性全都不存在,这就是特化的过程。可以另建⼀个销售⼈员的实体来泛化⽤户实体,如下:5

这样就完成了对⽤户实体的泛化,泛化的过程也就是抽出实体间公共属性的过程,但通常,除⾮特化的部分太多,才会考虑将⼀个实体抽象成两个1对1关系的实体,所有这个步骤是可选的。

2.2.7、检查模型(1)检查冗余⾸先检查实体:1对1关系的实体中有没有⾮外键的重复属性,或者就是同⼀个实体;其次检查关系:有没有通过其他关系也可以得到的重复属性;

当然有时,需要考虑时间维度,因为有些属性是有时效性的,也就是虽然是同⼀个属性,但不同的时间表⽰的却是不同的内容,这⼀点在后⾯的逻辑结构设计中会提到,这并不是真正的冗余。 (2)检查业务检查当前的E-R模型是否满⾜当前业务的场景。可以从某个实体开始,沿着当前E-R模型的各个节点去模拟业务场景。尤其需要和《需求规格说明书》去做校验。

到这⾥,也就完成了E-R模型建⽴的全过程,有时,对于⽐较复杂的E-R模型,⼀张图可能显得太过局促,可以建⽴全局、局部E-R模型图,以便于查看和分析。

发布者:admin,转转请注明出处:http://www.yc00.com/web/1690435338a349402.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信