《软件技术基础》之《数据库设计》

数据库设计理论

关系模式设计问题

关系模式的五元组表示:R(U, D, DOM, F)

  • R:关系名
  • U:组成该关系的属性名集合
  • D:属性组U中属性所来自的域
  • DOM:属性向域的映像集合
  • F:属性间数据的依赖关系集合

关系模式的简化三元组表示:R(U, F )

不好的模式举例

在这里插入图片描述
这个模式存在两个问题:

  • 数据冗余:浪费存储空间,引起异常
  • 操作异常:更新异常、删除异常、插入异常

模式分解

模式分解是解决数据冗余和操作异常的一种方法。
将前面的表按依赖关系集合F分成三个子表:
在这里插入图片描述

数据依赖

概念

  • 是现实世界属性间相互联系的抽象;
  • 是数据内在的性质;
  • 是语义的体现。

类型

  • 函数依赖(Functional Dependency,简记为 FD)
  • 多值依赖(Multivalued Dependency,简记为 MVD)

函数依赖

概念

  • 是属性(列)之间的联系;
  • 是属性之间在语义上的关联特性;
  • 是两个属性或属性集之间的约束。

符号说明

  • R表示一个有关系的模式
  • U={A1,A2,…,An}是R的所有属性的集合
  • F是R中函数依赖的集合
  • r是R所取的值
  • t[X]表示元组t在属性X上的取值,例如:t[Dname]= ‘ 杨勋 ’

定义
在这里插入图片描述
函数依赖图
左部(X)称为决定因子,右部(Y)称为依赖因子。
在这里插入图片描述
类型
在这里插入图片描述

逻辑蕴涵

定义
在这里插入图片描述
文字描述
若一个新的函数依赖不在集里,但能从集合里根据一定的规则推导出来,就说那个集合逻辑蕴涵这个新的函数依赖。

如果一个函数依赖能够由集合中的其他推出,则该函数依赖是多余的。

用函数依赖定义码

在这里插入图片描述
在这里插入图片描述

包含在任何候选码中的属性称为主属性(Prime Attribute)。不包含在任何候选码中的属性称为非主属性(Non-Key Attribute)

有时,单个属性是码;有时,整个属性组是码,称为全码(All-Key)

模式分解

定义
在这里插入图片描述
作用

  • 对关系模式进行分解,使之表达的语义概念单纯化;
  • 帮助消除不良设计中的一些问题,如冗余、不一致和异常。

时间代价
分解之后,检索操作需要做笛卡尔积或连接操作。

规范化

规范化主要作为验证和改进逻辑数据库设计的工具,使得逻辑设计能够:

  • 满足特定约束;
  • 避免不必要的数据重复。

范式(Normal Forma,NF)

概念
范式是一种关系的状态,是衡量关系模式的标准。

种类
1NF,2NF,3NF,BCNF

范式的种类与数据依赖有着直接的联系。

作用
数据冗余浪费存储空间,导致数据库难以保持一致性。
范式确保数据库模的一致性

为确定特定关系是否符合范式,需要检查关系中属性间的函数依赖,而不是检查关系中的当前实例。

1NF

在关系模式R的每个关系r中,如果每个属性值都是不可再分的原子值,那么称R是第一范式(1NF)的模式。

满足1NF的关系称为规范化的关系,否则称为非规范化的关系。

关系数据库研究的关系都是规范化的关系。

1NF不允许出现“表中有表”的现象。
在这里插入图片描述

2NF

在这里插入图片描述

只有在主键是复合属性下才可能不符合2NF

2NF分解算法
将关系模式R分解成2NF模式子集。
在这里插入图片描述

3NF

在这里插入图片描述
需要满足的两个条件:

  • R中的非主属性相互独立;
  • R中的非主属性函数依赖于主键。

在这里插入图片描述
3NF分解算法
将关系模式R分解成3NF模式子集。
在这里插入图片描述

2NF & 3NF

定理:如果R是3NF模式,那么R也是2NF模式。

局部依赖和传递依赖是关系模式产生数据冗余和异常的两个重要原因。由于3NF模式中不存在非主属性对候选键的局部依赖和传递依赖,因此3NF消除了很大一部分存储异常,具有较好的性能。而对于非1NF、1NF和2NF的关系模式,由于它们的性能较差,通常不宜作为数据库模式,需要将这些关系模式变换为3NF或更高级的范式,这种变换过程称为“关系的规范化处理”。

BCNF

在这里插入图片描述
原因:3NF模式中并未排除主属性对候选键的传递依赖。
在这里插入图片描述
BCNF分解算法
将R无损分解且保持依赖地分解成3NF模式集。
在这里插入图片描述

模式设计原则

关系模式分解一般应具有3个特性:

  • 达到BCNF,或3NF;
  • 无损分解;
  • 保持函数依赖。

一个好的模式设计方法应符合3条原则:

  • 表达性:数据等价和语义等价,即无损分解和保持依赖集
  • 分离性:关系中只存储有直接关系的属性值;清除冗余和异常现象
  • 最小冗余性:模式个数和模式中属性总数应最少

优化流程:
在这里插入图片描述

数据库应用设计方法

E-R模型

  • 面向问题的概念模型
  • 用简单的图形方式(E-R图)描述显示世界中的数据
  • E-R图中不涉及数据在数据库中的表示和存取方法
  • 非常接近人的思维方式

实体

  • 是客观世界中描述客观事物的概念,是一个数据对象
  • 方框表示,方框内注明实体的名称

属性

  • 实体具有的某种特性,用来详细描述一个实体
  • 椭圆形框表示,椭圆形框内注明属性的名称,并用无向边将属性与对应的实体连接起来
  • 实体的主键用下划线加以标注

在这里插入图片描述

联系

  • 一个或多个实体之间的关联关系
  • 菱形框表示,菱形框内注明联系的名称,并用无向边将其与相关的实体连接起来
  • 联系也可能会有自己的属性,用于描述联系的特征,但联系本身没有标识符

在这里插入图片描述

数量关系表示

两个实体型之间的联系:

  • 一对一联系(1:1)
    在这里插入图片描述
    在这里插入图片描述

  • 一对多联系(1:n)
    在这里插入图片描述
    在这里插入图片描述

  • 多对多联系(m:n)
    在这里插入图片描述
    在这里插入图片描述
    同一实体型之内的联系:
    在这里插入图片描述
    多个实体型之间的联系:
    在这里插入图片描述

属性分类

简单属性和复合属性

简单属性是不可再分的属性
复合属性是可以再划分为更小的部分(即属性可以嵌套)
在这里插入图片描述
单值属性和多值属性
在这里插入图片描述
多值属性的2种变换方法:

  • 方法一:将原来的多值属性用几个新的单值属性来表示。例如患者的联系电话可以用家庭电话、办公电话、移动电话等进行分解
  • 方法二:将原来的多值属性用一个新的实体类型表示。这个新的实体类型和原来的实体类型之间是 1∶N联系,新的实体依赖于原来的实体而存在,因此称新的实体为弱实体

在E-R模型中,弱实体用双线矩形框表示,与弱实体相关的联系用双菱形框表示

在这里插入图片描述
派生属性

  • 通过具有相互依赖的属性推导出来的属性称为派生属性
  • 虚线椭圆形框表示,虚线椭圆形框内注明派生属性的名称,并用无向边将派生属性与对应的实体连接起来
    在这里插入图片描述
    空值属性
    当实体在某个属性上没有值时应该用空值(Null Value)。

数据库设计方法

在这里插入图片描述
在这里插入图片描述
软件的生命周期可以分为6个阶段:
在这里插入图片描述
在这里插入图片描述

需求分析

在软件的生命周期中,需求分析阶段是最为重要的一个阶段。
在这里插入图片描述
需求分析步骤:
在这里插入图片描述

数据字典

在这里插入图片描述

模型设计(概念、逻辑、 物理)

概念设计

概念设计的目标是生成能够准确反映用户组织和使用信息需求的抽象结构,即概念模式。
设计人员把客观世界的具体需求通过提炼和抽象,转换为信息世界的概念模式,再将概念模式转换为数字化的数据模型。

最常用的模式就是 实体-关系模型(E-R)

E-R方法
在这里插入图片描述
全局E-R视图集成过程中的冲突消除
在这里插入图片描述

逻辑结构设计

在这里插入图片描述

ER转换

在这里插入图片描述
在这里插入图片描述
实例:
在这里插入图片描述

模式优化

用关系规范化理论对数据模型进行优化

  • 确定范式的使用
    采用各级范式来确定关系模式中的各种关系是否符合规范,检测数据依赖关系、函数依赖关系,传递依赖等。
  • 实施规范化
    根据需求规则说明书,分析实际应用环境中,确定对关系模式的选择和使用是否得当,以及是否需要调整和改进。

物理设计

在这里插入图片描述

运行与维护

DB连接访问

在这里插入图片描述
在这里插入图片描述
ODBC的体系结构:
在这里插入图片描述
ODBC的开发使用:
在这里插入图片描述

ADO

在这里插入图片描述

JDBC

在这里插入图片描述
在这里插入图片描述

数据库高级开发技术

游标

在这里插入图片描述
游标操作
在这里插入图片描述

存储过程

在这里插入图片描述
存储过程类型:
在这里插入图片描述
在这里插入图片描述
示例:
在这里插入图片描述
在这里插入图片描述

触发器

在这里插入图片描述
在这里插入图片描述
触发器操作:
在这里插入图片描述
在这里插入图片描述

函数

在这里插入图片描述
函数的优点:
在这里插入图片描述
自定义函数:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

存储过程和自定义函数的区别:
在这里插入图片描述

嵌入式SQL(ESQL)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值