第1章 数据库系统概论
1.1 数据处理技术发展经历(P1)
数据:声音、文字、图形、绘画、图像。
数据处理:查找、统计、分类、修改、变换等运算。
1.2 概念数据模型(P7)
概念数据模型:实体联系(Entity Relationship)模型(ER 模型)。
1.2.1 ER 模型的有关概念
1.实体
实体(Entity):事物或活动,如人、书、会议。
实体集(Entity Set):同类实体的集合,如班级。
实体型(Entity Type):同类实体的共有特征的抽象定义,
如人的共有特征:姓名、年龄、……。
实体值(Entity Value):符合实体定义的具体实体,
如林木森,22岁、……。
2.联系(P8)
联系(Relationship):实体之间的相互关系。
如订单,涉及商品、客户和销售员之间的关系。
3.属性(P9)
属性(Attribute):描述实体或联系中的特征。
如人资料中的身份证号码。
主属性(键)、非主属性。
码(Key):键,实体间相互区别的惟一标识。
域(Domain):实体中相应属性的取值范围。
如职称取值范围:助教、讲师、教授。
4.联系分类(P10)
1对1联系(1:1):如公司与总经理。
1对多联系(1:n):如班级与学生。
多对多联系(m:n):如学生与所选课程。
1.2.2 ER 模型(P14)
ER 模型:描述数据及其联系的概念数据模型。
2 个实体联系
实体1 1 联系 1 实体2
实体1 1 联系 n 实体2
实体1 m 联系 n 实体2
购物联系的 ER 图:3 个实体联系,顾客、售货员、商品
顾客 m n 售货员
||
||
购物
p|
|
商品
学生关系:学号、姓名、性别、专业。
课程关系:课程号、课程名、学分。
选课关系:学号、课程号、成绩。
学生选课的 ER 图:3 个实体联系,学生、课程、教师
学生 m 选课 n 课程 课程号
p|
|
讲授
|
1|
教师
1.3 逻辑数据模型
1.3.1 层次数据模型(P17)
层次模型:树型结构模型。
学校
|
|
| |
系 处
| |
| |
| |
教研室 班级
1.3.3 关系数据模型(P20)
关系模型:二维表格结构。
属性 | |||||
关系的型(表结构) | 职工号 | 姓名 | 性别 | 年龄 | 职务 |
关系的值
记录 元组 |
3050 | 林木森 | 男 | 36 | |
3051 | 易昌晶 | 男 | 48 | ||
3052 | 吕口品 | 男 | 32 | ||
3053 | 林从众 | 女 | 43 | ||
3054 | 肖月朋 | 女 | 28 | ||
3055 | 刘炎焱 | 男 | 36 |
年龄属性(不重复取值):28,32,36,43,48。
职工的年龄的域(可能取值的范围):18—60。
选课联系的 ER 图
学生 m 选课 n 课程
|
|
成绩
连接属性:关系之间共同使用的相同属性。
学生关系:学号、姓名、性别、专业。
选课关系:学号、课程号、成绩。
课程关系:课程号、课程名、学分。
学生关系和选课关系通过学号连接,
新关系和课程关系通过课程号连接。
新关系:学号、姓名、性别、专业、课程号、成绩、课程名、学分。
查询选课:姓名、课程名、成绩。
1.4 数据库系统简介
1.4.1 数据库系统构成(P26)
硬件—数据库—操作系统—数据库管理系统—数据库应用开发工具—
数据库应用系统—终端用户。
1.4.2 数据库系统用户
数据库管理员、数据库设计员、应用程序员、终端用户。
1.4.3 数据库体系结构(P27)
数据库—内模式—模式/内模式映象—模式—模式/外模式映象—
外模式—应用。
模式(Schema):数据库逻辑结构和特征的描述。
内模式:数据库存储结构和特征的描述。
外模式:数据视图,终端用户和应用程序员所见到的数据库。
数据映象:模式之间的数据转换。
2.1 关系数据结构(P33)
1.域(Domain)
域:有相同特性的数据集合。
例如,100内的奇数集合{1,3,5,...,99}。
2.笛卡儿积(P34)
笛卡儿积:一组域上的集合。
例2-1 设一组域
D1={1,3,5,7},
D2={2,4,6}
笛卡儿积:D1×D2=
{(1,2),(1,4),(1,6),(3,2),(3,4),(3,6),
(5,2),(5,4),(5,6),(7,2),(7,4),(7,6)}
D1的基数=4,D2的基数=3,D1×D2的基数=12,
每个元素都是一个二元组。
例2-2 设一组域
D1=学生={王力,赵火,孙平},
D2=导师={刘华,张明},
D3=专业={计算机,电子},
笛卡儿积:D1×D2×D3={
(王力,刘华,计算机),(王力,刘华,电子),(王力,张明,计算机),(王力,张明,电子),
(赵火,刘华,计算机),(赵火,刘华,电子),(赵火,张明,计算机),(赵火,张明,电子),
(孙平,刘华,计算机),(孙平,刘华,电子),(孙平,张明,计算机),(孙平,张明,电子)}
D1×D2×D3的基数=3×2×2=12
每个元素都是一个三元组。
所有可能的组合是:
D1中的每个学生,选择D2中的每个导师,学习D3中的每个专业。
笛卡儿积的二维表
n个域,n元关系 | 域 | ||
元组 | 学生 | 导师 | 专业 |
王力 | 刘华 | 计算机 | |
王力 | 刘华 | 电子 | |
王力 | 张明 | 计算机 | |
王力 | 张明 | 电子 | |
赵火 | 刘华 | 计算机 | |
赵火 | 刘华 | 电子 | |
赵火 | 张明 | 计算机 | |
赵火 | 张明 | 电子 | |
孙平 | 刘华 | 计算机 | |
孙平 | 刘华 | 电子 | |
孙平 | 张明 | 计算机 | |
孙平 | 张明 | 电子 |
3.关系(Relation)
关系是笛卡儿积的一个子集。
例2-5 关系 R(学生、导师、专业),三个域上笛卡儿积的一个子集。
给出每个学生所选择的导师和专业情况。
学生 | 选师 | 专业 |
王力 | 刘华 | 电子 |
赵火 | 刘华 | 电子 |
孙平 | 张明 | 计算机 |
例2-6 表结构带嵌套。
(学号、姓名、性别、专业、成绩(数学、物理、化学))。
消除表结构嵌套变成一个关系。
(学号、姓名、性别、专业、数学成绩、物理成绩、化学成绩)。
变成二个关系。
学生关系:(学号、姓名、性别、专业)。
成绩关系:(学号、数学、物理、化学)。
查询时通过学号把两个关系连接起来。
4.关系模式(P36)
关系模式:关系的型,关系的结构。
R(U,D,DOM,F,I)
U:属性名集合,
D:域的集合,
DOM:属性向域映射的集合,
F:各属性向域映射的集合,
I:完整性规则的集合。
例 2-8 学生关系模式
属性名集合U:{学号、姓名、性别、年龄、专业},
属性对应的域的集合D:{6位数字字符串,6个字节字符串,
{男,女},14—35,{计算机,电子,电机}},
属性向域映射的集合DOM:{学号属于6位数字字符串域,……},
5.码(Key)(P37)
码:键、关键字。
超码(Super Key):惟一标识每个元组的属性或属性组。
候选码(Candidate Key):惟一标识每个元组的最少属性或属性组。
主码(Primary Key):从候选码中选择一个作为该关系的主码。
备用码(Alternate Key):主码外的候选码。
例 2-9 关系R(学号,姓名,性别,年龄,专业,身份证号)。
超码:学号、身份证号、属性组(学号、姓名)。
外码:在关系R1中的属性或属性组若在关系R2中作为主码使用,
则称该属性或属性组为R1的外码。
例 2-10 关系R1(学号,姓名,性别,班级号),
关系R2(班级号,班级名,班主任,班长)。
班级号是R1的外码。
包含在候选码中的属性。
非主属性:不包含在候选码中的属性。
例 2-11 关系R(学号、姓名、性别、年龄、专业,身份证号)。
主属性:学号,身份证号。
非主属性:姓名、性别、年龄、专业。
2.2 关系完整性(P39)
关系完整性:关系模型中数据的正确性、一致性和有效性。
关系完整性包括实体完整性、参照完整性、用户定义的完整性。
实体完整性(Entity Integrity):主码不能为空。
参照完整性(Reference Integrity):
一个关系中的外码值或者为空,或者为被参照关系中的一个主码值。
例2-15 客户关系和订单关系(P40)
订单(订单号,客户号,雇员号,订单日期)
客户(客户号,姓名,性别,联系电话,联系地址)
用户定义的完整性(User - defined Integrity):
对关系中的属性的取值所作出的限定。
2.3 关系运算
2.3.1 传统的集合运算(P41)
传统的集合运算符:
并(∪)、交(∩)、差(-)、笛卡儿积(×)。
逻辑运算符:与(∧)、或(∨)、非(—)。
元组变量 t 属于关系 R:t ∈ R
1.并运算(Union)
R∪S= {t|t∈R ∨ t∈S|}
关系 R、S 并运算的结果得到关系值是
它们所有元组共同组成的集合。
例 2-16 关系 R 篮球爱好者、关系 S 足球爱好者。
R∪S并运算的结果为足、蓝球爱好者。
2.交运算(Intersect)
R∩S= {t|t∈R ∧ t∈S|}
关系 R、S 交运算的结果得到关系值是
它们共同具有的元组的集合。
例 2-17 关系 R 篮球爱好者、关系 S 足球爱好者。
R∩S交运算的结果为足、蓝球同时爱好者。
3.差运算(Difference)
R-S= {t|t∈R ∧ t不属于S|}
关系 R、S 差运算的结果得到关系值是
从 R 中去掉在 S 中同时出现的元组后,
由 R 中剩余元组所组成的集合。
4.笛卡儿积运算(P43)
R×S= {tRtS|tR∈R ∧ tS∈S|}
有 n个属性的关系 R和有 m个属性的关系 S 的笛卡儿积是一个关系。
该关系的结构是 R 和 S 的结构之连接,该关系的值是
R 中的每个元组连接 S 中的每个元组所构成元组的集合。
R 关系 | S 关系 | R×S 关系 | |||||||||
A | B | C | D | E | A | B | C | D | E | ||
1 | 10 | 20 | a | b | 1 | 10 | 20 | a | b | ||
3 | 15 | 25 | b | c | 1 | 10 | 20 | b | c | ||
5 | 36 | 48 | 3 | 15 | 25 | a | b | ||||
3 | 15 | 25 | b | c | |||||||
5 | 36 | 48 | a | b | |||||||
5 | 36 | 48 | b | c |
2.3.2 专门的关系运算(P43)
专门的关系运算:选择δ、投影∏、连接、除÷。
1.选择运算δ(Select)
从一个关系 R 中选择出满足给定条件的所有元组,横向划分关系。
对关系 R 按 F(t) 条件做选择运算
δF(t)(R)= {t|t∈R ∧ F(t)= TRUE}
例 2-20 选择出一、二年级的足球爱好者:δt.年级=1 ∨ t.年级=2(R)。
2.投影运算∏(Project)
从一个关系 R 中按所需顺序选取若干属性构成新关系,
纵向划分关系。
对关系 R 按属性子集 A 做投影运算
∏A(R)= {t.A|t∈R}
t.A:t 元组中属性子集 A 所对应的分量值。
例 2-21 选课关系 R(学生号,课程号,成绩)。
∏课程号,成绩(R)的投影结果(课程号,成绩)。
3.连接运算(Join)
把两个关系 R 和 S 按相应属性值的比较条件连接起来。
RR.AθS.BS=δR.AθS.B(R×S)=
{t|tR∈R ∧tS∈S ∧ R.AθS.B = TRUE}
θ连接:>连接、<连接、=连接。
例 2-22 两个关系 R 和 S 进行大于连接 RR.B>S.CS。
R 关系 | S 关系 | 大于连接 | |||||||||
A | B | C | C | D | R.A | R.B | R.C | S.C | S.D | ||
XC | 30 | 15 | 15 | TT | XC | 30 | 15 | 15 | TT | ||
WR | 18 | 20 | 20 | TF | XC | 30 | 15 | 20 | TF | ||
XK | 12 | 20 | 30 | FF | WR | 18 | 20 | 15 | TT | ||
… | … | … | … | … | … | … | … | … | … |
自然连接:把两个关系按属性名相同进行等值连接。
例 2-23
学生关系 S:学号、姓名、性别、专业。
选课关系 SC:学号、课程号、成绩。
课程关系 C:课程号、课程名、学分。
学生关系和选课关系通过学号自然连接,
新关系和课程关系通过课程号自然连接。
SSCC 得到新关系:
学号、姓名、性别、专业、课程号、成绩、课程名、学分。
2.3.3 综合运算举例(P47)
例 2-24 从学生、课程和选课构成的关系数据库中,
查询出姓名为 lhy 的学生的学号、所选课程的每门课程及相应成绩。
分析:从学生关系 S 中选择出“lhy”,投影出学生“D0301”,
用它同选课关系 SC 自然连接。
(∏学号(δ姓名=‘lhy'(S)))SC
3.1 数据依赖(P51)
定义1 设一个关系为 R(U),X 和 Y 为属性集 U 上的子集,若对于元组中 X 上的每个值都有 Y 上的一个惟一值与之对应,则称 X 和 Y 具有函数依赖关系,并称 X 函数决定 Y,或称 Y 函数依赖于 X,记作X→Y,称 X 决定因素。
例 3-1 职工关系(职工号,姓名,性别,年龄,职务)
职工号函数决定姓名,姓名函数依赖于职工号。职工号→姓名。
定义2 设一个关系为 R(U),X 和 Y 为属性集 U 上的子集,若 X→Y 且 X Y,则称 X→Y 为非平凡函数依赖,否则若 X Y,则必有 X→Y ,称此 X→Y 为平凡函数依赖。
例 职工关系(职工号,姓名,性别,年龄,职务)
平凡函数依赖:职工号函数决定职工号本身。
非平凡函数依赖:职工号函数决定姓名,性别,年龄,职务。
定义3 设一个关系为 R(U),X 和 Y 为属性集 U 上的子集,若 X→Y 同时 X 的一个真子集 X' 也能够函数决定 Y,即 X'→ Y,则称 X 部分函数决定 Y,或 Y 部分函数依赖 X,记作 X p Y,
否则若不存在一个真子集 X',使得 X'也能够函数决定 Y,则称 X 完全函数决定 Y,或 Y 完全函数依赖 X,记作 X f Y。
例 (职工号,性别)→年龄,
真子集:职工号→年龄,
所以(职工号,性别) p 年龄。
定义4 设一个关系为 R(U),X,Y 和 Z 为属性集 U 上的子集,其中X → Y,Y→Z,但 Y 不能函数决定 X,Y Z,则存在 X→Z,称此为传递函数依赖,即 X 传递函数决定 Z,Z 传递函数依赖 X。
例 3-3 学生关系 S(学号,姓名,性别,系号,系名,系主任名)。
由于“学号→系号,系号→系名”,
所以“学号”传递函数决定“系名”。
定义5 设一个关系为 R(U),X,Y 和 Z 为属性集 U 上的子集,若X → Y,则存在 XZ→YZ 和 XZ→Y。
函数依赖的增广性规则,
例:“系号 →系名”成立,则“系号,学号→系名,学号”也成立。
函数依赖的分解性规则:若XZ→YZ,则 XZ→Y。
例:若“教工号,课程号→姓名,课程号”,
则“教工号,课程号→姓名”。
函数依赖的合并性规则:若X→Y,X→Z,则 X→YZ。
例:若“教工号→姓名”,“教工号→课程号”
则“教工号→姓名,课程号”。
定义6 设一个关系为 R(U),X 和 Y 为属性集 U 上的子集,若 X →Y,并且为完全非平凡函数依赖,同时 Y 为单属性,则称 X → Y 为 R 的最小函数依赖。由 R 中所有最小函数依赖构成 R 的最小函数依赖集,其中不含有冗余的传递函数依赖。
例 3-4 关系 R(A,B,C,D),函数依赖集 FD={A→B,B→C,A→C,B→D},
是否为最小函数依赖集。
分析:A→B,B →C 包含 A→C,应去掉。
定义7 设一个关系为 R(U),X 为 U 的一个子集,若 X 能够函数决定 U 中的每个属性,并且 X 的任何真子集都不能函数决定 U 中的每个属性,则称 X 为关系 R 的一个候选码。
例 3-6 职工关系中,职工号能够函数决定职工号,姓名,性别,年龄,职务等所有属性,并且职工号为单属性。所以职工号为候选码。
函数依赖的常用规则
设关系为 R(U),X、Y、Z、W 是 U 上的子集,则:
1)自反性:若 X Y,则存在 X →Y。
2)增广性:若 X →Y,则存在 XZ→YZ。
3)传递性:若 X →Y,Y→Z,则存在 X →Z。
4)合并性:若 X →Y,X →Z,则存在 X →YZ。
5)分解性:若 X →Y,Y Z,则存在 X →Z。
6)伪传递性:若 X →Y,WY→Z,则存在 WX →Z。
7)复合性:若 X →Y,Z→W,则存在 XZ→YW。
8)自增性:若 X →Y,则存在 WX →Y。
3.2 关系规范化
3.2.1 第一范式(First Normal Form)(P57)
定义8 设一个关系为 R(U),若 U 中的每个属性都不可再分的,或者说都是不被其他属性所包含的独立属性,则称关系 R(U)是符合第一范式的。
例 3-9 对 T 关系进行规范化。
通讯录关系 T(姓名,性别,单位,电话(长途,办公,家庭))。
变为第一范式
通讯录关系T(姓名,性别,单位,长途电话,办公电话,家庭电话)。
3.2.2 第二范式(Second Normal Form)(P60)
定义9 设一个关系为 R(U),它是满足第一范式的,若 R 中不存在非主属性对候选码的部分函数依赖,则称该关系是符合第二范式的。
例 3-11 学生选课关系
SSC(学号,姓名,性别,专业,课程号,课程名,学分,成绩)
关系模式的语义:每个学生只能属于一个专业,……。
得到函数依赖:学号→专业,……。
最小函数依赖集 FD 为:
FD={学号→姓名,学号→性别,学号→专业,
课程号→课程名,课程号→学分,
(学号,课程号)→成绩}
非主属性对主码部分依赖,
如姓名,性别,专业依赖于学号,消除部分依赖。
对应学生选课关系 SSC 分解成三个关系:
学生关系 S=(学号,姓名,性别,专业)
课程关系 C=(课程号,课程名,学分)
选课关系 SC=(学号,课程号,成绩)
对应最小函数依赖集分别为:
FD1={学号 →姓名,学号 →性别,学号 →专业}
FD2={课程号→课程名,课程号 →学分}
FD3={(学号,课程号)→成绩}
3.2.3 第三范式(Third Normal Form)(P63)
定义10 设一个关系为 R(U),它是满足第一范式的,若 R 中不存在非主属性对候选码的传递函数依赖,则称该关系是符合第三范式的。
例 3-12 传递函数依赖关系:学生,系,宿舍。
SDH
(学号,姓名,性别,籍贯,系号,系名,系地址,系电话,宿舍号,宿舍电话)
关系模式的语义:
每个学生只能属于一个系,一个系有许多学生……。
得到函数依赖:学号→系号,……。
最小函数依赖集 FD 为:
FD={学号→姓名,学号→性别,学号→籍贯,学号→系号,学号→,
系号→系名,系号→系地址,系号→系电话,
学号→宿舍号,宿舍号→宿舍电话}
学号直接决定:姓名,性别,籍贯,系号,宿舍号。
学号传递决定:系名,系地址,系电话,宿舍电话。
消除传递依赖:
对应 SDH 关系分解成三个关系:
D=(系号,系名,系地址,系电话)
H=(宿舍号,宿舍电话)
S=(姓名,性别,籍贯,系号,宿舍号)
对应最小函数依赖集分别为:
FDD={系号→系名,系号→系地址,系号→系电话}
FDH={宿舍号→宿舍电话}
FDS=
{学号→姓名,学号→性别,学号→籍贯,学号→系号,学号→宿舍号,}
3.2.4 BC 范式(Boyce-Codd Normal Form)(P67)
定义11 若一个关系为 R(U),它是满足第一范式的,若 R 中不存在任何属性对候选码的传递函数依赖时,则称 R 是符合 BCNF 的。
例 3-15 库存管理关系 W(仓库号,商品号,职工号,商品数量)。
关系模式的语义:
一个职工只能属于一个仓库,一个仓库有多名职工,……。
得到函数依赖:职工号→仓库号,……。
最小函数依赖集 FD 为:
FD={职工号→仓库号,(仓库号,商品号)→职工号,(仓库号,商品号)→商品数量}
消除传递依函数赖得:
W1=(仓库号,商品号,商品数量)
WW=(仓库号,商品号,职工号)
消除传部分函数赖得:
W2=(职工号,仓库号)
W3=(职工号,商品号)