数据库系统(中):建模与设计

数据建模

思想是抽象

抽象是理解-区分-命名-表达

E-R模型

Entity-Relationship Model

世界是由一组称作实体的基本对象和这些对象之间的联系构成

是表达方法

给出概念

  • 实体
  • 属性
  • 联系
  • 关键字

实体与实例

实体的形态成为类,一个具体的个体是一个实例

属性

单一属性与复合属性

多值属性和单值属性

多值属性和复合属性一定要转化成单一属性,因为为了满足关系数据库第一范式

可空属性和非空属性

导出属性:可以通过其他属性计算得到

关键字/码:可以唯一区分的属性或者属性组合

联系

一个实体的实例和其它实体的实例可能发生的联系,例如读者和图书会产生借阅关系

要区分发生联系的实体的数目,例如读者和图书是两个实体,他们之间的联系就是二元联系

三元联系的例子:供货商,零件,工程项目

一元联系是实体自己与自己发生联系,例如无级分类,为了区别每个实例参与联系的方式,需要用到角色role

联系种类

二元联系:一对一,一对多,多对多

联系的基数

实体实例之间的联系的数量

一个实体的实例通过一个联系能够与另一个试题中相关联的实例数目

最小基数和最大基数

例如一本图书最少属于一个图书分类,所以他的最小基数是1,是完全参与联系

部分参与联系是最小基数可以为0的情况

区分这个是为了考虑可能有为空值的情况

E-R模型表达方法之Chen方法

实体:矩形框

属性:椭圆

多值属性:双线椭圆

导出属性:虚线椭圆

关键字:下划线

连接实体和属性:直线

联系:菱形框

连接联系和属性

符合关键字:下划线下面标相同数字

多组关键字:标有不同数字

一对一联系:箭头指向实体

一对多或者多对多,多的那一方联系没有箭头

完全参与联系:双直线

部分参与联系:单直线

也可以用数字标明联系关系

例如1,m,n

请注意,联系本身有可能也有属性,例如一个关系的建立时间,创建人等等

E-R模型表达方法之Crow’s foot方法

实体:矩形框,实体名称写在横线上面

属性:实体矿横线的下面

关键字:属性下面加下划线

可以通过菱形表达联系

联系的基数

双竖线:1

单竖线和三角形是1或多

圆圈和三角是0或多

剩下以此类推

数据库设计中的抽象

抽象出一个型,型和值之间的关系就是类和实例的关系

数据模型与模式

模式与实例

类与对象

其实都是类似的关系

数据模型

概念和概念之间的关系

用统一的模型建模

表达计算机世界是数据模型

表达信息世界的模型为概念模型

信息世界是对现实世界的理解与抽象

现实世界抽象到概念层(独立于计算机系统)

概念模型有E-R和O-O模型

逻辑层独立于物理系统,例如关系,网状,层次模型和O-O模型,这些模型是不依赖具体的物理存储数据结构

最后是物理层,是数据真正落地到计算机磁盘或者内存里面的数据结构,也就是每个数据在0与1二进制世界中的组成方式

IDEF1x

将E-R模型扩充语义含义而形成的,IDEF1x是E-R图的细化,它是一种数据建模或者数据库设计工程化的方法

它是ICAM计划为了项目规范化管理提出了一系列的项目描述方法,被称为IDEF(ICAM Definition)

包括

  • IDEF0,function model的描述方法
  • IDEF1,information model的描述方法
  • IDEF2,dynamics model的描述方法

实体

分为独立实体和从属实体

在扩展E-R图中,独立实体又称为强实体,从属实体又称为弱实体

表示一个现实和抽象事物的集合

这些事务必须具有相同的属性和特征

这个集合的一个元素就是该实体的一个实例

独立实体

一个实体的实例都被唯一标识,而不决定于它与其他的实体联系

直角方形框

主关键字没有外键

从属实体

一个实体的实例的唯一标识需要依赖于该实体与其他实体的联系

圆角方形框

主关键字有外键

关于属性的工程化要求

唯一规则

单主规则

非空规则

非重复规则

外来关键字

标明了FK就是外键

为了确定联系的主体,必须需要这个外来关键字

存在一个联系只能有一个外来关键字

被继承属性只能是主关键字所包含的属性

标定联系

子实体的实例都是由他与父实体的联系而确定的

父实体的主关键字是子实体主关键字的一部分

也就是说需要继承父实体的一部分结合自己的属性,才能确定唯一一个主关键字

例如零件号和加工序号

竖线加一个圆圈

非标定联系

子实体的实例能够被唯一标识而无需依赖与其实体的联系

父实体的主关键字不是子实体的主关键字

例如顾客和合同的关系

虚线加一个圆圈

分类联系

一个一般实体实例和多个分类实体实体构成

零件是一个一般实体,但是零件有区分自制零件和外购零件,因此需要一个外键进行标识类别

分类的过程也叫具体化

每个分类实体一定要有能够区分其他分类的属性

底层实体会继承高层实体的属性

分类联系也有完全分类和非完全分类联系

非完全分类集是指有可能还有其他分类但是没有写出来的

非确定联系

非确定是多对多联系

例如图书和读者就是多对多

需要引入一个相关实体或者相交实体

数据库设计

需求分析:收集理解需求,构建源表

概念数据库设计:建立概念模型:E-R图/IDEF1x图

逻辑数据库设计:建立逻辑模型(关系模型),包括全局模式和用户模式外模式

物理数据库设计:和具体DBS相结合,进行建表

需求分析

需求分析报告

分析清除数据表之间的处理关系和业务关系,具有前瞻性的分析未来可能实施的需求

概念设计

对源表进行分析,分析出信息属性之间的内在本质联系,分析是否要把属性进一步拆分

可以通过E-R图进行分析

确定属性和联系的分析与定义

外部视图和概念视图的定义

可以先局部到全局

确定局部结构范围然后合并两个局部E-R模式,检查并且消除冲突之后就进行全局模式优化,最后生成全局概念设计

实体联系矩阵的绘制

逻辑设计

逻辑数据库设计报告

将E-R或者IDEF1x转换成逻辑模式

遵循关系范式的设计原则

也要注意折中(适当的反范式设计)

外模式和概念模式的定义

考虑用关系模型、网状模型或者层次模型规定的模式描述方法进行描述

E-R图(Chen方法)

关系模式(Schema)给出关系模式的属性和取值域

E-R图实体转换为关系,属性转换为关系的关键字,关键字转换为关系的关键字

复合属性的转换将每个分量数据合并或者拆分

多值属性与所在实体的关键字构成新的属性

联系的转换

一对多可以把多方的id放到单方

泛化和具体属性的区分,具体化的关系继承父级关系的关键字

不正确设计数据库引发的问题

冗余

非受控冗余

非受控冗余

插入异常:插入的时候有一些关联的信息没有存在,违反完整性约束,无法插入

删除异常:删除某些数据,连带导致其他关联数据删除,导致关联关系丢失

更新异常

规范的数据库设计需要遵循数据库设计理论

  • 数据依赖理论
  • 关系范式理论
  • 模式分解理论

物理设计

提交物理数据库设计报告

确定DBMS选型

确定数据库的存储结构,文件类型

函数依赖

定义

设R(U)是属性集合 {A_1, A_2, …, A_n} 上的一个关系模式,X Y 是U上的两个子集,若对R(U)的任何一个可能的关系 r , r 中不可能有两个元组满足在X中的属性值相等而在Y中的属性值不等,则称“X函数决定Y”或“Y函数依赖于X”,记作X→Y

函数依赖的分析取决于问题领域的限定和分析

非平凡的函数依赖

X推导出Y,但是Y不包含于X(Y有不同于X的属性)

X为决定因素

X推导出Y,则任意两个元组,若X上的值相等,则Y上面的值必然相等

X和Y互相决定

X决定Y,Y决定X

Y不依赖于Y

若Y不依赖于函数X

X决定Y,有基于模式R的,则要求对任意的关系r成立

有基于具体关系r的,则要求对某一关系r成立

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

在R(U)中,如果X→Y并且对于X的任何真子集X’都有X’不依赖于Y,则称Y完全函数依赖于X,记为X→(full)Y,否则称Y部分函数依赖于X,记为X→(P)Y

传递函数依赖

在R(U)中,若X→Y,Y→Z,且Y不包含于X,Z不包含于Y,Z不包含于X,X不形成Y,则称Z传递函数依赖于X

候选键

K是R(U)中的属性或者属性组合,如果K能够完全决定U,则称K为R(U)上的候选键(Candidate Key)

可以任选一个候选键作为R的组件

包含在任意候选键中的属性称为主属性,其他属性称为非主属性

若K是R的一个候选键,S包含K,则S为R的一个超键,超键就是包含候选键的属性组

外键

若R(U)中的属性或属性组合X并非R的候选键,但X却是另一关系的候选键,则称X为R的外来键,简称外键

逻辑蕴涵

设F是关系模式R(U)中的一个函数依赖集合,X Y是R的属性子集,如果从F中的函数依赖能够推导出X→Y,则称F逻辑蕴涵X→Y,或称X→Y是F的逻辑蕴涵

闭包

被F逻辑蕴涵的所有函数依赖集合称为F的闭包(Closure),记作F^+

如果F^+=F,则说F是一个全函数依赖族(函数依赖完备集)

Armstrong Axioms

R(U, F),F是R(U)的一组函数依赖

属性集闭包

属性闭包的计算算法与覆盖

函数依赖集的最小覆盖

关系范式

1NF

若关系R(U)中的关系每个分量都是不可分的数据项(值,原子),则称R(U)属于第一范式,记为:R(U)属于1NF

不符合1NF的处理,进行转换,继续分割或者组合

2NF

若R(U)属于1NF,且U中的每一个非主属性完全函数依赖于候选键,则称R(U)属于第二范式,记为:R(U)属于2NF

3NF

若R(U, F)属于2NF,且R中不存在这样的情况:候选键X,属性组Y包含于U和非主属性A,且A不属于X,A不属于Y,Y不属于X,Y无法函数推导出X,使得X→Y,Y→Z成立

满足以上条件则称R(U)属于第三范式,记为R(U)属于3NF

BCNF

若R(U)属于1NF,若对于任何X→Y属于F或者X→A属于F,当Y不包含于X或者A不真子集包含于X时,X必含有候选键,则称R(U)属于Boyce-Codd范式,记为R(U)属于BCNF

多值依赖

对于R(U),有X和Y属于U,若对于R(U)的任意关系式r,若元组t属于r,s属于r,t[X]=s[X]则必有u属于r,v属于r使得

  • u[X]=v[X]=t[X]=s[X]
  • u[Y]=t[Y] && u[U-X-Y]=s[U-X-Y]
  • v[Y]=s[Y] && v[U-X-Y]=t[U-X-Y]

同一个课同一个老师可以有多个上课时间和教室的属性组合

4NF

设R(U)属于1NF,D是其上的一组依赖(函数依赖,多值依赖),对任意的X多值依赖Y属于D,Y不包含于X,XY≠U,比有X为超键,则称R(U)满足第四范式

针对多值依赖的范式