数据库设计方案

1.数据库应用架构设计
在不同应用需求场景中,数据库的应用架构方式是不同的。数据库应用架构可分为单用户结构、集中式结构、客户/服务器结构和分布式结构。
2.数据库结构模型设计
数据库结构模型设计一般分为概念层、逻辑程、物理层设计,它们的设计模型分别为概念数据模型、逻辑数据模型和物理数据模型。
3.数据库应用访问方式设计
数据库应用对数据库访问可以有多种方式,如直接本地接口连接访问、基于标准接口连接访问、基于数据访问层框架连接访问

数据库结构模型

概念数据模型

(Concept Data Model,CDM)是一种面向用户的系统数据模型,它用来描述现实世界的系统概念化数据结构。使数据库设计人员在系统设计的初始阶段,摆脱计算机系统及DBMS的具体技术问题,集中精力分析业务数据以及数据之间的联系等,描述系统的数据对象及其组成关系。

逻辑数据模型

(Logic Data Model,LDM)是在概念数据模型基础上,从系统设计角度描述系统的数据对象组成及其关联结构,并考虑这些数据对象
符合数据库对象的逻辑表示。

物理数据模型

(Physical Data Model,PDM)是在逻辑数据模型基础上,针对具体DBMS所设计的数据模型。它用于描述系统数据模型在具体DBMS中的数据对象组织、存储方式、索引方式、访问路径等实现信息。

数据库开发过程及设计策略

数据库开发过程

图片损坏

1)数据需求分析阶段
从现实业务获取数据表单、报表、查询、业务规则、数据更新的说明
分析系统的数据特征、数据类型、数据取值约束
描述系统的数据关系、数据处理要求
建立系统的数据字典
2)数据库设计阶段
数据库模型结构设计(概念数据模型、逻辑数据模型、物理数据模型)
数据库索引、视图、查询设计
数据库表约束设计
数据库触发器、存储过程设计
3)数据库实现阶段
数据库创建
数据模型物理实现
4)数据库测试阶段
数据库数据上线
数据库系统测试

设计策略

自底向上设计
自顶向下设计
自内向外设计
混合策略设计

E-R模型

E-R模型是“实体-联系模型”(Entity-Relationship Model)的简称。它是一种描述现实世界概念数据模型、逻辑数据模型的有效方法。

E-R模型的基本元素

实体

实体(Entity)是指问题域中存在的人、事、物、地点等客观事物在逻辑层面的数据抽象。它用于描述事物的数据对象,如客户、交易、产品、订单等。

属性

属性是指描述实体特征的数据项。每个实体都具有1个或多个属性。

标识符

标识符是指标识不同实体实例的属性。标识符可以是1个或多个属性。
标识符与主键的区别是标识符是一个逻辑概念,主键是物理概念。

联系

联系(Relationship)是指实体之间的联系,如“学生”与“成绩”的联系、“孩子”与“父亲”、“母亲”的联系等。
联系中关联的实体数目称为联系度数。

实体-联系类型

图片损坏 上述实体之间的联系反映了一个给定实体有多少实例与另一实体实例存在的数量对应关系。通常采用术语**基数**(Cardinality)来表示。 在实体之间除了需要反映了数量对应关系,有时还需要反映实体参与关系的必要性,即**可选(optional)或强制**(mandatory)。 图片损坏 鸟足版本: 图片损坏

E-R模型方法

理解E-R模型的继承联系
理解E-R模型中的强弱实体联系
掌握E-R模型扩展建模方法

实体继承联系

在E-R模型中,实体之间除了基本联系外,还存在继承联系。继承联系用于表示实体之间的相似性关系。
在实体继承联系中,一端是具有公共属性的实体,称为父实体;另一端是与父实体具有相似属性,同时也具有特殊性的一个或多个实体,称为子实体。
在继承联系中,还可以分为互斥性继承联系和非互斥性继承联系。
图片损坏
还可以分为完整继承和非完整继承。如果父实体实例必须属于子实体中的某一个,则称为完整继承联系;否则是非完整继承联系。
图片损坏

强弱实体联系

在E-R模型中,按照实体之间的语义关系,可以将实体分为弱实体和强实体。弱实体是指那些对于另外实体有依赖关系的实体,即一个实体的存在必须以另一实体的存在为前提。而被依赖的实体称为强实体。
其中,根据弱实体在语义上对强实体依赖程度的不同,弱实体又分为标识符(ID)依赖弱实体和非标识符(非ID)依赖弱实体两类。如果弱实体的标识符中含有所依赖实体的标识符,则该弱实体称为标识符(ID)依赖弱实体。在有依赖联系的弱实体中,并非所有弱实体都是标识符(ID)依赖弱实体,它们可以有自己的标识符,这样的弱实体即为非标识符(ID)依赖弱实体。

数据库建模设计

概念数据模型

概念数据模型设计是通过对现实世界中数据实体进行抽取、分类、聚集和概括等处理,建立反映系统业务数据组成结构的过程,一般是采用E-R模型方法进行建模设计。
设计步骤:
1.业务数据分析,抽取数据实体
2.定义实体属性及其标识(类图)
3.建立实体联系,构建局部E-R模型图(类图间通过鸟足版本建立联系)
4.分类、聚集和概括各个部分E-R模型图(添加新类图和联系)
5.完善全局E-R模型图,建立系统业务数据组成结构

CDM/LDM/PDM模型转换设计

数据模型元素对应关系

图片损坏

不同层次数据模型转换方案

图片损坏

转换原理

CDM/LDM到PDM转换原理:
当使用关系数据库时,物理数据模型(PDM)即为关系模型。CDM/LDM到PDM的转换其实就是E-R模型到关系模型的转换。
E-R模型到关系模型转换原理:
1.将每一个实体转换成一个关系表,实体属性转换为关系表的列,实体标识符转换为关系表的主键或外键。
2.将实体之间的联系转化为关系表之间的参照完整性约束。
将实体转换为关系关系表时,注意如果是弱实体,应在弱实体的关系表中添加一项属性,也就是其所依赖的实体的标识符(主键)

实体联系转换参照完整性约束

“1:1实体联系”转换表示

将其中任意一个实体的主键放入另一个实体中做外键

“1:N实体联系”转换表示

两个实体分别转换为关系表,然后将父实体关系表的主键放入子实体关系表中做外键,便可将1:N实体联系转换为关系表参照完整性约束。

“M:N实体联系”转换表示

M:N实体联系不能像1:1和1:N实体联系那样直接转换。需要创建一个新的关联表,该关联表分别参照原有实体对应的关系表。(新的关系表中存放两个关系表的主键,在这个新关系表中,它们既是主键又是外键)

实体继承联系转换参照完整性约束

当带有实体继承联系的E-R模型转换关系模型时,首先父实体和子实体都各自转换为表,其属性均转换为表的列,然后将父表中的主键放置到子表中,既做主键又做外键。

实体递归联系转换参照完整性约束

“1:N实体递归联系”的转换

首先将递归实体转换为表,其属性转换为列,标识符转换为主键,同时还将标识符转换为外键,实现自己对自己的参照。
图片损坏

“M:N实体递归联系”的转换

增加一个关联表,该表分别参照原实体对应的关系表,并对原关系表建立两个参照完整性约束。
图片损坏

数据库规范化设计

1.减少数据库中的冗余数据,尽量使同一数据在数据库中仅保存一份,有效降低维护数据一致性的工作量。
2.设计合理的表间依赖关系和约束关系,便于实现数据完整性和一致性。
3.设计合理的数据库结构,便于系统对数据高效访问处理。
非规范数据关系在数据操作中出现的问题:
不规范的关系表可能存在数据冗余,引出数据访问操作异常现象,难以使数据库保持数据的一致性。

函数依赖

定义:设有一关系模式R(U), U 为关系R的属性集合,X和Y为属性U的子集。设t,s是关系R中的任意两个元组,如果t[X] = s[X],则t[Y] = s[Y]。那么称Y函数依赖于X,表示为X→Y。
函数依赖的左部称为决定因子,右部称为依赖函数。决定因子和依赖函数都是属性的集合。
理解:比如说一个实体有五个属性A,B,C,D,E,其中A,B是候选键(A,B任意一个可以指明这个实体,从而得到它的所有属性,这时X包含A或B,则Y中的任一元素均能被A推出,则Y函数依赖于X)
函数依赖反映属性或属性组之间相互依存、互相制约的关系,即关系表中属性之间的依赖关系。

完全函数依赖和部分函数依赖

X能推出Y,但X的任意子集不能推出Y,则Y完全依赖于X,否则Y部分依赖于X
这表明这个关系模式的实体应该是复合键

属性传递依赖

设X、Y、Z是某关系的不同属性集,有X→Y,Y推不出X, Y→Z,若X→Z,称Z对X存在函数传递依赖。

多值传递依赖

设U是关系模式R的属性集,X和Y是U的子集,Z=U-X-Y,xyz表示属性集XYZ的值。对于R的关系r,在r中存在元组(x, y1, z1)和(x, y2, z2)时,也存在元组(x, y1, z2)和(x, y2, z1),那么在模式R上存在多值函数依赖。
例 对于教学关系R(课程, 教师, 课程参考书),一门课程可以有多个任课教师,也可以有多本参考书;每个任课教师可以任意选择他的参考书。该关系存在多值函数依赖。

关系规范化范式

关系规范化是把一个有访问异常的关系分解成结构良好的关系的过程,使得这些关系有最小的冗余或没有冗余。
规范化范式(Normal Form,NF)是指关系表符合特定规范化程度的模式。

第一范式

如果关系表中的属性不可再细分,该关系满足第1范式。反之,该表就不是关系表。

第二范式

如果关系满足第1范式,并消除了关系中的属性部分函数依赖,该关系满足第2范式。
有一个关系(A,B,N,O,P),其复合主键为(A,B),那么N,O,P这三个非键属性都不存在只依赖A或只依赖B情况,则该关系满足第2范式,反之,不满足第2范式。

第三范式

如果关系满足第2范式,并切断了关系中的属性传递函数依赖,该关系满足第3范式。
若有一个关系(A,N,O,P),主键为(A),那么非键属性N,O或P都不能由单个的N,O或P或它们的组合所确定。该关系满足第3范式。

巴斯-科德范式(BCNF)

在关系中,所有函数依赖的决定因子都是候选键,该关系满足BCNF范式。
关系STUDENT(StudentNum, Name, Email)中,决定因子StudentNum也是候选键,该关系满足BCNF范式。

第四范式

如果关系满足BCNF范式,并消除了多值函数依赖,该关系满足第4范式。
设学校中某一门课程由多个教师讲授,每个教师可有自己的参考书。用关系模式Teaching(Course,Teacher,Book)来表示课程、教师和参考书之间的关系。 该关系Teaching(Course,Teacher,Book),属于BCNF范式;但是存在多值函数依赖,即不满足4NF。
将原表进行分解处理,可分解为Teaching(TeachID,CourseID,TeacherID,BookID)、Course(CourseID,CourseName)、 Teacher(TeacherID,TeacherName)、Book(BookID,BookName)后,即可消除多值依赖,便可满足4NF范式。

关系规范化程度利弊

关系的规范化程度越高,关系数据库存储的冗余数据就越少,可消除的数据访问异常就越多。
不过关系的规范化程度越高,分解出来的关系表就越多,但实现数据查询访问时,需关联多表,其效率降低。

逆规范化处理

所谓逆规范化,就是适当降低规范化范式约束,不再要求一个关系表必须达到很高的规范化程度,而是允许适当的数据冗余性,以获取数据访问性能。
逆规范化处理的基本方法:
(1)增加冗余列或派生列
(2)多个关系表合并为一个关系表