请使用支持现代 CSS 与 JavaScript 的浏览器播放课件
DBPA · 2.1

关系模型的数据
结构及形式化定义

把二维表还原为属性、元组、域与关系

VER. 2608 Built with impress.js

学习目标

从二维表开始理解关系,检查关系性质,并区分模式与实例

  1. 01从二维表中指出属性、元组、分量、度和基数
  2. 02用域和笛卡儿积解释所有可能组合,判断哪些元组能组成有意义的关系
  3. 03用六条基本性质诊断不合格的关系,并区分基本关系、查询结果和视图
  4. 04判断候选码,区分关系模式、关系实例、数据库模式与数据库值
  5. 05说明逻辑关系由谁表达、物理存储由谁组织
2/20
LEARNING OBJECTIVES

把表拆成列、行、单元格和关系

列、行和单元格分别对应属性、元组和分量;整张表对应一个关系

二维表示例中列、行、单元格和整张表分别对应属性、元组、分量和关系

三张表的形状相同

StudentCourseSC 都由有名称的列和一行行记录组成

记录不同事实

Student 记录学生,Course 记录课程,SC 记录选课

查询结果也是表

基本关系、查询结果和视图都由属性与元组组成,可以继续参与关系操作

3/20
RELATIONAL MODEL

一列能接受哪些值,由域 Domain 决定

域是一组具有相同数据类型的值的集合

\(D_1\):导师姓名域

{张清玫,刘逸}

\(D_2\):专业域

{计算机科学与技术,信息管理与信息系统}

\(D_3\):学生姓名域

{李勇,刘晨,王敏}

“导师”与“研究生”都可以取自 PERSON 域,但必须用不同属性名

Takeaway

域说明属性允许取哪些值,属性名说明这些值在业务中的角色

4/20
DOMAIN

笛卡儿积列出所有可能的组合

域的基数统计允许值的个数;笛卡儿积的基数统计所有可能元组的个数

$$ D_1 \times D_2 \times \cdots \times D_n = \{(d_1,d_2,\ldots,d_n)\mid d_i\in D_i,\ i=1,\ldots,n\} $$
$$ M=\lvert D_1\times D_2\times D_3\rvert =\lvert D_1\rvert\cdot\lvert D_2\rvert\cdot\lvert D_3\rvert =2\cdot2\cdot3=12 $$
Takeaway

笛卡儿积的基数 \(M\) 表示可能组合数,关系的基数 \(\lvert R\rvert\) 表示实际元组数

5/20
CARTESIAN PRODUCT

域、元组与基数

用表格区分笛卡儿积中的形式化概念及其例子

概念形式化含义导师-专业-研究生例子
\(n\)参与组合的域的个数\(n=3\)
元组笛卡儿积中的一个元素(张清玫,计算机科学与技术,李勇)
分量元组中的一个值张清玫或李勇
域的基数一个域允许的不同取值个数\(D_1=2\),\(D_2=2\),\(D_3=3\)
\(M\)域基数的乘积,可能元组数\(M=2\times2\times3=12\)
\(\lvert R\rvert\)实际保留的元组数由业务语义决定,且 \(\lvert R\rvert\le M\)
6/20
CARTESIAN PRODUCT DETAILS

关系从所有可能组合中选择有意义的部分

三个域产生 12 个可能组合,实际只有 3 个导师-专业-研究生组合成立

笛卡儿积中的十二个可能组合经过业务语义保留三个有意义元组

所有可能组合 → 按业务语义筛选 → 有意义的关系

形式化

关系是给定域的笛卡儿积的子集:\(R \subseteq D_1 \times D_2 \times \cdots \times D_n\)

关系 \(\mathrm{SMP}\subseteq D_1\times D_2\times D_3\)

关系的度 \(\operatorname{deg}(\mathrm{SMP})=3\)

关系的基数 \(\lvert\mathrm{SMP}\rvert=3\)

哪些组合在现实中成立

“导师指导研究生”关系只保留确实存在的导师、专业和研究生组合

7/20
RELATION AS SUBSET

判断一张表能否作为基本关系

先确认它是有限的元组集合,再逐项检查列、行、码和分量

编号基本性质课堂判断
1列同质每列分量来自同一个域
2同域列仍须有不同属性名即使多个属性同属一个域,也要区分列名
3列序无关调换列顺序不改变关系
4任意两个元组的码不能相同不能用相同码值识别两行
5行序无关调换行顺序不改变关系
6分量必须是原子值一个单元格不能再装一个小表
8/20
RELATION PROPERTIES

分量原子性:每个分量作为一个值处理

每个分量只包含一个在当前关系模式中不可再分的数据项

不符合基本要求符合基本要求
订单商品:商品 A、商品 B订单项分别保存商品 A 与商品 B
一格中包含多个值每个分量只有一个不可再分的值
查询和更新需要拆解字符串分量在当前关系模式中是一个处理对象

分量不能再包含一个关系或一组并列值;现实对象可以很复杂,只要在当前关系模式中作为一个值处理即可

9/20
ATOMIC COMPONENT

关系可以来自存储、查询或导出

区别在于数据是独立保存、查询时临时产生,还是只保存一个视图定义

基本关系

实际存在并独立保存的表,如Student,是基础数据的逻辑表示

查询结果

查询执行后产生的临时关系,如可供显示或后续处理的某班成绩列表

视图

由基本表或其他视图导出的虚关系,如学生成绩视图

Takeaway

先问数据从哪里来、是否独立保存,再判断关系类型

10/20
THREE RELATION TYPES

先用 Student 写结构,再展开关系模式

简写先列关系名与属性,完整形式再补域映射和数据依赖

课堂中常用 \(R(A_1,A_2,\ldots,A_n)\) 书写关系名和属性

需要精确说明属性来自哪个域、属性间有哪些数据依赖时,再展开完整形式

$$R(U,D,DOM,F)$$
Takeaway

\(R(D1,…,Dn)\) 强调关系和域;\(R(U,D,DOM,F)\) 描述关系模式

11/20
RELATION SCHEMA

\(R(U,D,DOM,F)\) 中的符号

关系模式的组成部分Student 中的对应

符号准确定义Student 中的对应
\(R\)关系模式名(关系名)Student
\(U\)属性名集合Sno, Sname, Ssex, Sbirthdate, Smajor
\(D\)属性所属的域集合学号域、姓名域、性别域等
\(DOM\)属性到域的映像\(DOM(Sno)\) = 学号域
\(F\)属性间数据依赖关系的集合由关系模式表示的属性依赖
12/20
RELATION SCHEMA SYMBOLS

候选码的成立依赖业务规则

候选码先由唯一性和最小性确定,主码再从候选码中选定

候选码 Candidate Key

某属性或属性组能够唯一标识元组,且该属性组的任何真子集都不能

主码 Primary Key

从候选码中选定一个,作为关系元组的主要标识。由 DBA 选定

主属性与非主属性

属于任一候选码的属性叫主属性;不属于任何候选码的属性,叫非主属性

Takeaway

若允许重修、跨学期重复或多个教学班,候选码会是什么?

13/20
KEYS

用唯一性与最小性检查候选码

Enrollment 为例,逐项检查单属性和属性组是否满足候选码条件

候选标识唯一性最小性结论
Sno否:同一学生可修多门课不能作为候选码
Cno否:同一课程可有多名学生不能作为候选码
(Sno, Cno)是:同一学生同一课程只登记一次是:任一单属性均不唯一候选码;可以选为主码
14/20
CANDIDATE KEY CHECK

关系模式与关系实例

关系模式列出属性、域和规则,关系实例是此刻保存在这些属性下的一组记录

同一关系模式对应两个时刻的关系实例

关系模式

列出属性名称、取值域和规则,不包含某个时刻的具体学生记录

Student(Sno, Sname, Ssex, Sbirthdate, Smajor)

关系实例

某一时刻的学生记录集合

新增、删除或修改记录都会改变实例

Takeaway

关系模式是型,关系实例是值

15/20
SCHEMA AND INSTANCE

三张关系在某一时刻组成数据库值

关系模式集合描述结构,某一时刻的关系集合描述数据库值

$$ \mathrm{DB}_t = \{\mathrm{Student}_t,\mathrm{Course}_t,\mathrm{SC}_t\} $$

上式表示某一时刻的学生选课关系数据库值

层次描述学生选课例子
关系数据库模式所有关系模式的集合StudentCourseSC
关系数据库值某一时刻对应关系的集合某学年某时刻的三组记录

关系型数据管理系统(RDBMS)是管理这些模式和值的 DBMS

16/20
RELATIONAL DATABASE

RDBMS 把逻辑关系映射为内部存储结构

用户用关系语言表达数据,RDBMS 负责内部存储

逻辑层

关系、关系模式和关系语言描述用户能够理解的逻辑结构与操作

存储层

RDBMS 选择并组织文件、页、索引等内部存储结构;具体实现可以不同

Takeaway

同一逻辑关系可采用不同的内部存储组织

17/20
STORAGE STRUCTURE

练习:给一张表做三步检查

任选订单项表或玩家对局表,不看前页结论,完成下面三项检查

标出结构

指出属性、元组和分量,计算关系的度与基数,并说明每个属性来自什么域

检查是否合格

检查六条基本性质,根据来源和保存方式判断它是基本关系、查询结果还是视图

解释型和值

写出关系模式和候选码前提,说明实例、数据库与 RDBMS 物理存储各处在哪一层

Takeaway

为什么当前样例中没有重复,仍不足以证明某组属性是候选码?

18/20
SECTION REVIEW

本节思维导图

19/20
KNOWLEDGE MAP

本节问题

  1. 01在导师-专业-研究生例子中,域、笛卡儿积、元组、分量和关系如何联系?
  2. 02六条基本性质分别限制什么?
  3. 03基本关系、查询结果和视图的保存方式和生命周期有什么不同?
  4. 04候选码和主码有什么区别?为什么样例不重复仍不足以证明候选码成立?
  5. 05把学生选课案例换成订单与订单项后,怎样区分关系模式、关系实例、数据库模式和数据库值?为什么用户不必直接指定物理文件、页和索引?
20/20
SECTION QUESTIONS