第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章 关系运算

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章 关系规范基础

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=(职工号,商品号)