首页 > 编程知识 正文

数据库设计就是数据结构的设计,数据库设计基本概念

时间:2023-05-04 18:28:23 阅读:218750 作者:2337

一、数据模型

以下概念在一些教科书中都会有讲到,比如:《数据库原理与应用》。这里作了一下总结。

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、标识实体

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

2.2.2、标识关系

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

不仅仅是实体有属性,关系同样也有属性,这些属性在实体间建立关系时才会存在。
有时属性太多,无法在图上一一列出,可以用表格,在后面的步骤中这个表格同样会用到,如下:

实体属性描述…用户性别
年龄
电话
…男/女
多大了
联系方式
……


2.2.4、确定属性域

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

实体属性描述数据类型及长度是否可为空用户性别
年龄
电话
…男/女
多大了
联系方式
…1字节的短整形或布尔型
1字节的短整形
20字节的字符型或长整形
…NO
NO
YES


2.2.5、确定键
键就是可用于标识实体的属性,有:主键、唯一键、外键。

实体属性描述键用户用户编号
性别
年龄
电话
…男/女
多大了
联系方式
…主键


2.2.6、实体的特化/泛化
也就是面向对象模型中父类和子类的概念,这是个可选的步骤。
举个例子,用户中大部分人都是普通员工,但有一小部分是从事销售的,销售人员有个负责区域的属性,如果将这个属性放在用户实体中,如下:

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

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

2.2.7、检查模型

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

当然有时,需要考虑时间维度,因为有些属性是有时效性的,也就是虽然是同一个属性,但不同的时间表示的却是不同的内容,这一点在后面的逻辑结构设计中会提到,这并不是真正的冗余。

(2)检查业务
检查当前的E-R模型是否满足当前业务的场景。可以从某个实体开始,沿着当前E-R模型的各个节点去模拟业务场景。尤其需要和《需求规格说明书》去做校验。

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

转载自:http://blog.csdn.net/seusoftware/article/details/5493661

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。