Note/大学笔记/数据库系统原理/单元复习资料/数据库复习2.md

224 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 关系数据库
关系模型
#### 关系模式-规范化理论
RU,D,DOM,F
1. R 关系名
2. U为一组属性
3. D为属性组U中得属性所来自得域
4. DOM为属性到域得映射
5. F为属性组U上的一组数据依赖
关系模式可能存在的问题 数据冗余 更新异常 插入异常 删除异常 所以要做规范化 根据属性间的依赖关系判定
##### 数据依赖
1.数据依赖是一个关系内部属性与属性之间的一种约束关系,这种约束关系是通过属性间值得相等与否体现出来得数据间得相关联系。
2. 数据依赖的重要两种类型 函数依赖与多值依赖
###### 函数依赖
设RU是属性集U上的关系模式X,Y是U上的子集。若对于R(U)的任意一个可能的关系rr中不可能存在两个元组在X上的属性值相等而在Y上的属性值不等则称X函数决定Y或Y函数依赖于X.
<u>掌握完全函数依赖,部分函数依赖,传递函数依赖,这是规范化的基础。</u>
定义6.2 在R(U)中如果X→Y并且对于X的任何一个真子集X, 都有 X ↛ Y, 则称Y对X完全函数依赖记作X → Y。
若X→Y但Y不完全函数依赖于X则称Y对X部分函数依赖记作X → Y
定义6.3 在R(U)中如果X→Y(Y⊈X)Y↛XY→ZZ⊈Y, 则称Z对X传递函数依赖(transitive functional dependency)。记为X → Z。
<u>分清候选码 主码 主属性 非主属性</u>
候选码:若关系中的某艺术性组的值能唯一的标识一个元组,而其子集不能,则称该属性组为候选码。若一个关系中有多个候选码,则选定其中一个为主码。
候选码的诸属性称为主属性,不包含在任何候选码中的属性称为非主属性或非码属性。
##### 范式
范式:关系模式的规范化形式,衡量关系模式好坏的标准。
规范化:将一个给定的关系模式转化为某种范式的过程称为关系模式的规范化过程,简称规范化。
规范化一般采用分解的办法,将低级别范式向高级别范式转化,使关系的语义单纯化。
<u>1NF</u>
定义 设R是一个关系模式。如果R中每个属性的值域都是不可分的原子值则称R是第一范式记作1NF。
1NF是关系模式具备的最起码的条件。
确保每一列的原子性,如果每列都是不可再分的数据单元,则满足第一范式。
<u>2NF</u>
定义6.6 若关系模式R∈1NF并且每一个非主属性都完全函数依赖于任何一个候选码则R∈2NF
2NF的实质是不存在非主属性“部分函数依赖”于候选键的情况。即每个表只描述一件事情
*转换规则*
非2NF关系或1NF关系向2NF的转换原则
设关系模式R属性集合为U主键是WR上还存在函数依赖X→Z且X是W的子集Z是非主属性那么W→Z就是一个部分函数依赖。此时应把R分解成两个关系模式
R1XZ主键是X
R2Y其中Y=U-Z主键仍是W外键是X。
如果R1和R2还不是2NF则重复上述过程一直到每个关系模式都是2NF为止。
<u>3NF</u>
定义6.7 设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性ZZ ⊇ Y, 使得X→YY→Z成立Y ↛ X成立则称R<U,F> ∈ 3NF。
如果关系模式R是2NF而且R中所有非主属性对任何候选键都不存在传递函数依赖则称R是第三范式记作3NF。
3NF是从1NF消除非主属性对候选键的部分函数依赖和从2NF消除传递函数依赖而得到的关系模式。
3NF需要确保数据表中的每一列数据都和主键直接相关而不能间接相关
*转换规则*
2NF关系向3NF转换的原则
设关系模式R属性集合为U主键是WR上还存在函数依赖X→Z并且Z是非主属性Z不包含于XX不是候选键这样W→Z就是一个传递依赖。此时应把R分解成两个关系模式
R1XZ主键是X
R2Y其中Y=U-Z主键仍是W外键是X。
如果R1和R2还不是3NF则重复上述过程一直到每个关系模式都是3NF为止。
<u>BCNF</u>
在关系模式R<U,F>如果每一个决定属性集都包含候选码则R∈BCNF。
3NF关系向BCNF转换的原则是消除主属性对候选键的部分和传递函数依赖将3NF关系分解成多个BCNF关系模式。
BCNF的关系模式所具有的性质
所有非主属性都完全函数依赖于每个候选码
所有主属性都完全函数依赖于每个不包含它的候选码
没有任何属性完全函数依赖于非码的任何一组属性
如果一个关系数据库中的所有关系模式都属于BCNF那么在函数依赖范畴内它已实现了模式的彻底分解达到了最高的规范化程度消除了插入异常和删除异常。
**对于关系模式中只有一个候选码的情况达到3NF即达到了BCNF**
练习题 PPT 73-74页
ppt 154-156
### 关系操作
关系操作语言分为关系代数 关系演算 和SQL结构化查询语言语言。
##### 关系代数
关系代数分为传统的集合运算和专门的关系运算两类。
传统的集合运算:并 差 交 笛卡儿积
专门的关系运算:选择 投影 连接 除运算等(必须掌握运算方式)
练习题 课本p71页 6题
##### SQL结构化查询语言
SQL是关系数据库语言是高度非过程化语言
SQL功能
数据定义 create drop alter
数据查询 select
数据操纵 insert update delete
数据控制 grant revoke commit rollback
视图
**视图的作用**
1. 视图能够简化用户的操作
2. 视图使用户能以多种角度看待同一问题
3. 视图对重构数据库提供了一定程度的逻辑独立性
4. 视图能够对机密数据提供安全保护
5. 适当利用视图可以更清晰地表达查询
练习题
1.学校数据库中包括四个表,各属性的含义可由属性名体现,不再重复
学生表:S(Sno, Sname,Ssex,Sage, Sdept),
课程表:C(Cno, Cname,CTno, Ccredit)
学生选课表:SC(Sno,Cno,mid-exam, final-exam, Grade)
课程类别表CT(CTno,Type)
其中:CT由课程类别编码(CTno)、课程类别(Type)两个属性组成。
Type取值有:公共课、学科基础课、专业必修课、专业选修课、全校选修课等。
Grade是计算属性,由期中成绩(mid-exam)和期末成绩( final-exam)平均而得到。
用关系代数完成以下操作:
1成绩为95分以上的学生成绩单,包括学号、姓名、课程名、成绩四个属性。
2选修了全部“专业选修课”的学生学号、姓名、所在系。
用SQ语言完成以下操作:
3按系统计不同年龄的学生人数,输岀结果按照系名称的字母升序和学生的年龄降序。
4找出每个学生超过他自己所选修全部课程平均成绩的课程号、课程名称、成绩
5对选修数据库系统概论这门课的学生计算其该门课的总成绩,按照期中占40%,期末
占60%计算。
6査询没有选修过任何“全校选修课”的学生姓名及其所在系。
7统计每一门课程的选修人数及其平均成绩。要求每门课程都必须岀现在査询
结果中,不管有没有学生选修。
8按照总成绩从高到低的顺序输出学生名单(包括学号,姓名,总成绩),成绩相同时,
按照学号从小到大的顺序输出。
2. 有三个表它们的记录行数分别是10行、2行和6行三个表进行多表联合查询结果集中共有( )行数据
A18 B26 C不确定 D120
3. 下列聚集函数中不忽略空值(null)的是( )
A.SUM(列名) B.MAX(列名) C. COUNT(*) D.AVG(列名)
4. 当关系R和S自然联接时,能够把R和S原该舍弃的元组放到结果关系中的操作是( )
A.左外连接 B.右外连 C.外部并 D.外连接
5. SQL语言是 )的语言,易学习。
A.过程化 B.非过程化 C.格式化 D.导航式
6. 关系数据库管理系统应能实现的专门关系运算包括(
A. 排序、索引、统计 B.选择、投影、连接 C. 关联、更新、排序 D. 显示、打印、表
7. 在关系代数运算中,五种基本运算为(
A. 并、差、选择、投影、自然连接
B. 并、差、交、选择、投影
C并、差、选择、投影、乘积
D. 并、差、交、选择、乘积
8. SQL语言具有 的功能。
A关系规范化、数据操纵、数据控制
B. 数据定义、数据操纵、数据控制
C. 数据定义、关系规范化、数据控制
D. 数据定义、关系规范化、数据操纵
9. 1设学生课程数据库中有三个关系:
学生关系SS#SNAMEAGESEX
学习关系SCS#, C#GRADE
课程关系
C (C#, CNAME)
其中S#、C#、SNAME、AGE、SEX、GRADE、CNAME分别表示学号、课程号、姓名、年龄、性别、成绩
和课程名。
用SQL语句表达下列操作
1检索选修课程名称为“MATHS”的学生的学号与姓名
2检索年龄在18到20之间含18和20的女生的学号、姓名和年龄
3检索平均成绩超过80分的学生学号和平均成绩
4检索选修了三门课以上的学生的姓名
10.设学生-课程数据库中包括三个表:
学生表: Student(SnoSnameSex,Sage, Sdept)
课程表:CourseCno, Cname, Ccredit
学生选课表: SCSnoCnoGrade
其中Sno、Sname、Sex、Sage、Sdept、Cno、Cname、Ccredit 、Grade分别表示学号、姓名、性别、年龄、所在系名、课程号、课程名、学分和成绩。
试用SQL语言完成下列项操作:
1创建一个计科系学生信息视图S-CS-VIEW包括Sno学号、Sname 姓名、Sex性别
2通过上面第 2 题创建的视图修改数据,把王平的名字改为王慧平
3创建一选修数据库课程信息的视图视图名称为 datascore-view包含学号、姓名、成绩。