<数据库原理>DB2 关系数据库

本文最后更新于:2024年4月3日 晚上

DB2 关系数据库

DB2.1 关系模型

#基本术语

关系模型:用二维表格表示实体集,用关键码表示实体集关系的模型。

关系模式:对关系模型的语义描述。

例 2.1.1

如下关系模型

学号(sNo) 姓名(sName) 性别(Sex) 年龄(Age) 出生日期(dtBirthDate) 身份证号(ID)
1320001 乐正绫 F 16 2014-08-26 ……
1320002 绛雨 F 27 2016-09-29 ……
1320003 胡桃 F 16 2021-03-02 ……

对应的关系模式为

学生模式(sNo, sName, Sex, Age, dtBirthDate, ID)
  • 属性:实体的字段。关系模型中,一列就是一个属性。属性的个数称为 元数(列数)

  • 记录(元组):一个具体的实体。关系模型中,一行就是一个记录。记录的个数称为 基数

  • 关系(实例):记录的集合

  • 键(关键码,Key):能唯一标识元组的一个或多个属性。

    有以下几种键:

    • 超键

      能唯一标识元组的属性或属性集。超键不是唯一的。

      例 2.1.1 中,{sNo}, {sNo, sName}, {sNo, ID}, {ID}\{sNo\},\ \{sNo,\ sName\},\ \{sNo,\ ID\},\ \{ID\} 均为超键

    • 候选键

      没有多余属性的超键。候选键中的属性称为 主属性,否则为 非主属性

    • 主键

      用户指定的,元组唯一标识符的候选键。

      候选键可能不唯一,但主键只能有一个。

    • 外键

      若关系模式 RR 的属性 kk 是另一关系模式 TT 的主键,则该属性 kkRR 的外键。此时 TT 称为主表,RR 称为附表。

#关系模型的完整性规则

任何数据模型都有三个要素:数据结构、数据操作、数据约束。对于关系模型来讲:

  • 数据结构:数据库中全部数据及其相互联系,被表示为 **关系(二维表格)**的形式

  • 数据操作:关系模型提供一组完备的高级关系运算

  • 数据约束:

    关系模型的完整性规则包括

    • 实体完整性原则

      关系中的主键不能为空,否则主键将不能唯一标识元组

    • 参照完整性原则

      关系中的外键要么为空,要么为主表中的某个主键值,以体现实体间的 1:n1:n 关系

    • 用户定义的完整性原则

      根据应用环境的不同,定义各自的特殊约束条件

DB2.2 关系数据库语言 SQL

SQL 是 R-DBMS(关系数据库管理系统)的一个组成部分,是用户与 DBMS 通信的工具。

graph LR
A[SQL 请求]
C[数据]
RDBMS[R-DBMS]
OS((OS))
DB[(数据库)]
A-->RDBMS-->OS-->DB
C---RDBMS
DB-->OS-->RDBMS

(SQL 与 R-DBMS 的交互方式)

SQL 数据库的体系结构,其术语与传统关系模型术语有所不同,区别如下表:

关系模型 SQL 数据库
关系模式:属性、元组 基本表:列、行
存储模式、Schema 存储文件、Database
子模式 视图

核心的 SQL 主要由四部分组成,也称 SQL 的四大功能

  • 数据定义功能

    SQL 通过数据定义语言(Data Define Lanuage,DDL)来定义 数据库(Database)基本表(Table)视图(View)、**索引(Index)**等结构,并执行 创建(Create)修改(Alter)、**删除(Drop)**等操作

  • 数据操纵功能

    SQL 通过数据操纵语言(Data Manipulation Language,DML)实现 查询 和 更新 两种操作。其中,更新包括 插入(Insert)更新(Update)删除(Delete)

  • 数据控制功能

    SQL 通过数据控制语言(Data Control Language,DCL)实现四大保护功能:数据库恢复、完整性、并发、安全性控制

  • 嵌入式 SQL 使用规则

    涉及 SQL 嵌入宿主语言程序中使用的规则

#SQL 数据定义功能

包括对数据库、基本表、视图、索引的定义。

操作对象 创建 修改 删除
数据库 Create Database 数据库名 Alter Database 数据库名 Drop Database 数据库名
基本表 Create Table 表名 Alter Table 表名 Drop Table 表名
视图 Create View 视图名 - Drop View 视图名
索引 Create Index 索引名 - Drop Index 索引名

视图是基本表的虚拟表,而索引依附于基本表,故 SQL 不提供二者的修改功能。想修改时,可先删除,再新建。

下略

DB2.3 关系数据库规范化设计

#数据依赖

数据依赖指数据间存在的各种联系,其通过一个关系中间值的相等与否进行体现。

通常,一个关系模式由三元组组成:R(U, F)R(U,\ F)。其中,RR 为关系名,UURR 的所有属性的集合,FF 为属性间的函数依赖集

设计失当时,数据依赖会产生诸多问题:

  • 数据冗余。同一数据在数据库系统中多次出现。其必定导致操作异常、操作数不一致。

  • 数据操作异常。由于数据冗余,操作数据时必定发生异常。

    包括:插入异常、修改异常、删除异常

  • 数据不一致。由修改异常导致,本应相同的数据却不一致。

模式分解 是解决数据冗余的有效方法。规范化的准则之一:关系模式若有冗余,就分解它

#函数依赖

  • 函数依赖(functional dependency,FD)、函数决定

    对于关系模式 R(U)R(U),其关系集 UU 存在两个子集 XU, YUX\subseteq U,\ Y\subseteq UrrRR 的任一当前关系。

    rr 中任意两元组 s, ts,\ t,满足 s[X]=t[X]s[X]=t[X] 时,都必有 s[Y]=t[Y]s[Y]=t[Y],则称 XX 函数决定 YY,或 YY 依赖 XX

    记为 XYX\rarr Y

    函数依赖又分为以下几种:

    • 部份依赖、完全依赖

      对于 XYX\rarr Y,若存在 WXW\subset X,且 WYW\rarr Y,则称 XYX\rarr Y部份依赖。否则,称其为 完全依赖

    • 传递依赖

      XY, YAX\rarr Y,\ Y\rarr A,且 Y↛X, A∉XY\not\rarr X,\ A\not\in X,则称 XAX\rarr A传递依赖

  • 候选键、超键

    对于关系模式 R(U)R(U),其关系集 UU 存在两个子集 XU, YUX\subseteq U,\ Y\subseteq U

    XUX\rarr URR 上成立,则称 XXRR超键

    若超键 XX 的任意真子集都不是超键,则 XXRR候选键

  • 平凡依赖、非平凡依赖

    对于 XYX\rarr Y,若 YXY\subset X,则称 XYX\rarr Y平凡依赖,否则为 非平凡依赖

  • 多值依赖(multi-valued dependency,MVD)

    对于关系模式 R(U)R(U),其关系集 UU 存在两个子集 XU, YUX\subseteq U,\ Y\subseteq U,另有 Z=UXYZ=U-X-YrrRR 的任一当前关系。

    rr 对于 XX 的任一给定值,必有多个 YY 的值与之对于,且该组 YY 取值与 ZZ 无关,则称 XX 多值决定 YY,或 YY 多值依赖 XX

    记为 XYX\rarr\rarr Y

#关系模式的范式

**范式(Normal Forms)**是评价关系模好坏的标准。共有 6 种范式:1NF、2NF、3NF、BCNF、4NF、5NF。级别越高的范式,其要求也更高。

低一级范式的关系模式,通过模式分解,化为几个高一级范式的关系模式,这样的过程称为 关系模式的规范化

  • 第一范式(1NF)

    若关系模式 RR 的每个关系,其属性值都是不可分的原子值,则称 RR 为第一范式

  • 第二范式(2NF)

    若关系模式 RR 为 1NF,且 RR 的每个非主属性都完全函数依赖于候选键,则称 RR 为第二范式

    不满足 2NF 的关系模式,必定存在非主属性对主键的局部依赖,进而存在数据冗余

  • 第三范式(3NF)

    若关系模式 RR 为 1NF,且 RR 的每个非主属性都不传递依赖于候选键,则称 RR 为第三范式

    可见,若 RR 是 3NF,则其必然为 2NF。

    证明过程如下

    R(U)R(U) 不是 2NF,则存在非主属性 A∉WA\not\in W,其部份依赖于主键 WW

    即,存在 XWX\sub W 使得 XAX\rarr A

    此时必有 WX, XAW\rarr X,\ X\rarr A

    R(U)R(U) 存在传递依赖

  • BCNF

    若关系模式 RR 为 1NF,且 RR 的每个属性都不传递依赖于候选键,则称 RR 为 BCNF

  • 第四范式(4NF)

    若关系模式 RR 为 1NF,FFRR 上函数依赖、多值依赖的集合。

    FF 中任一平凡的多值依赖 XYX\rarr\rarr Y 的左部 XX 都是 RR 的超键,则称 RR 为第四范式

  • 第五范式(5NF)

    与链接依赖有关,多数情况不必考虑第五范式


<数据库原理>DB2 关系数据库
https://i-melody.github.io/2024/04/03/数据库原理/DB2 关系数据库/
作者
Melody
发布于
2024年4月3日
许可协议