专升本数据库系统概论总复习.docx
《专升本数据库系统概论总复习.docx》由会员分享,可在线阅读,更多相关《专升本数据库系统概论总复习.docx(25页珍藏版)》请在冰豆网上搜索。
专升本数据库系统概论总复习
数据库系统概论总复习
一数据库概论
一)概论
1数据、数据库、数据库系统、数据库管理系统的概念
数据:
描述事物的符号记录称为数据。
数据的种类有文字、图形、图象、声音、正文等等。
数据与其语义是不可分的。
数据库:
数据库是长期储存在计算机内、有组织的、可共享的数据集合。
数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
数据库系统:
数据库系统(DBS)是指在计算机系统中引入数据库后的系统构成。
数据库系统由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。
数据库管理系统:
数据库管理系统(DBMS)是位于用户与操作系统之间的一层数据管理软件。
用于科学地组织和存储数据、高效地获取和维护数据。
DBMS主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护功能。
2数据库的特征
数据按一定的数据模型组织、描述和储存
可为各种用户共享
冗余度较小
数据独立性较高
易扩展
3数据管理技术的发展过程
人工管理阶段、文件系统阶段、数据库系统阶段
4简述数据库的数据独立性
数据物理独立性:
指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的,由模式/内模式映像来控制。
数据逻辑独立性:
指用户的应用程序与数据库的逻辑结构是相互独立的,由外模式/模式映像来控制。
5DBMS对数据的控制功能(数据库保护问题包括)
数据的安全性保护、数据的完整性检查、并发控制、数据库恢复
二)数据模型
1数据模型:
在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。
通俗地讲数据模型就是现实世界的模拟
2数据模型分成两个不同的层次(概念模型和数据模型)
3数据模型的组成要素:
数据结构、数据操作、数据的约束条件
4概念模型的基本概念:
(1)实体:
客观存在并可相互区别的事物称为实体。
可以是具体的人、事、物或抽象的概念。
(2)属性:
实体所具有的某一特性称为属性。
一个实体可以由若干个属性来刻画。
(3)码:
唯一标识实体的属性集称为码。
(4)域:
属性的取值范围称为该属性的域。
(5)实体型:
用实体名及其属性名集合来抽象和刻画的同类实体称为实体型
(6)实体集:
同型实体的集合称为实体集
(7)联系:
现实世界中事物内部以及事物之间的联系在信息世界
中反映为实体内部的联系和实体之间的联系
实体型间联系:
一对一联系(1:
1)、一对多联系(1:
n)、多对多联系(m:
n)
5概念模型的表示方法:
实体-联系方法(E-R方法)
1)实体型:
用矩形表示,矩形框内写明实体名
2)属性:
用椭圆形表示,并用无向边将其与相应的实体连接起来
3)联系:
联系本身:
用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:
1、1:
n或m:
n)
E-R图实例:
真题:
图书数据库管理数据库要求提供如下服务:
1)可随时查阅图书的基本信息,包括:
书号、书名、价格、作者、出版社、数量、存放位置
2)借阅人的信息包括:
借书证号、姓名、单位、办证日期
3)借阅信息包括借书日期、还书日期
一个借阅者可以同时借阅多本书,一种书可以被多个人借阅
要求:
1)为本系统设计E-R图
2)转换为等价的关系模式,并指出每个关系的码。
6数据库系统的三级模式结构与二级映象
数据库系统的三级模式结构为内模式、模式、外模式
模式(也称逻辑模式)
数据库中全体数据的逻辑结构和特征的描述
所有用户的公共数据视图,综合了所有用户的需求
一个数据库只有一个模式
外模式(也称子模式或用户模式)
数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述,数据库用户的数据视图,是与某一应用有关的数据的逻辑表示,一个数据库可以有多个外模式,模式与外模式的关系:
一对多
内模式(也称存储模式)
是数据物理结构和存储方式的描述
是数据在数据库内部的表示方式
一个数据库只有一个内模式
三级模式是对数据的三个抽象级别
二级映象在DBMS内部实现这三个抽象层次的联系和转换
外模式/模式映象
定义外模式与模式之间的对应关系
每一个外模式都对应一个外模式/模式映象
映象定义通常包含在各自外模式的描述中
外模式/模式映象的用途
保证数据的逻辑独立性
当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变
应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
模式/内模式映象
模式/内模式映象定义了数据全局逻辑结构与存储结构之间的对应关系
数据库中模式/内模式映象是唯一的
该映象定义通常包含在模式描述中
模式/内模式映象的用途
保证数据的物理独立性
当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变
应用程序不受影响。
保证了数据与程序的物理独立性,简称数据的物理独立性。
7数据库系统的组成
数据库
数据库管理系统(及其开发工具)
应用系统
数据库管理员
(用户)
数据库概论习题
二关系数据库
一)关系的基本术语、关系的定义及关系的性质
1常用的关系操作
查询:
选择、投影、连接、除、并、交、差
数据更新:
插入、删除、修改
2关系数据语言的种类
关系代数语言
关系演算语言
具有关系代数和关系演算双重特点的语言
3关系的三类完整性约束(关系模型完整性规则)
实体完整性
参照完整性
用户定义的完整性
4关系的基本概念
1)域:
是一组具有相同数据类型的值的集合整数、实数
2)笛卡尔积:
给定一组域D1,D2,…,Dn,这些域中可以是相同的域。
D1,D2,…,Dn的笛卡尔积为:
D1×D2×…×Dn={(d1,d2,…,dn)|diDi,i=1,2,…,n}
所有域的所有取值的一个组合
不能重复
3)元组(Tuple)
笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组。
关系中的每个元素是关系中的元组,通常用t表示。
4)分量(Component)
笛卡尔积元素(d1,d2,…,dn)中的每一个值di叫作一个分量。
5)基数
若Di(i=1,2,…,n)为有限集,其基数为mi(i=1,2,…,n),则D1×D2×…×Dn的基数M为:
在上例中,基数:
2×2×3=12,即D1×D2×D3共有2×2×3=12个元组
6)笛卡尔积的表示方法
笛卡尔积可表示为一个二维表。
表中的每行对应一个元组,表中的每列对应一个域。
7)关系
D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为
R(D1,D2,…,Dn)
R:
关系名
n:
关系的目或度
关系是笛卡尔积的有限子集
8)属性
关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性(Attribute)。
n目关系必有n个属性
9)候选码(Candidatekey)
若关系中的某一属性组的值能唯一地标识
一个元组,则称该属性组为候选码
在最简单的情况下,候选码只包含一个属性。
在最极端的情况下,关系模式的所有属性组
是这个关系模式的候选码,称为全码(All-key)
10)主码
若一个关系有多个候选码,则选定其中一个
为主码(Primarykey)
主码的诸属性称为主属性。
不包含在任何侯选码中的属性称为非码属性
5三类关系
基本表(基表):
实际存在的表,实际存储数据的逻辑表示(基本关系)
查询表:
查询结果对应的表
视图表:
由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
6基本关系的性质
①列是同质的,每一列中的分量是同一类型的数据,来自同一个域
②不同的列可出自同一个域
其中的每一列称为一个属性
不同的属性要给予不同的属性名
③列的顺序无所谓,列的次序可以任意交换
④任意两个元组不能完全相同由笛卡尔积的性质决定
⑤行的顺序无所谓行的次序可以任意交换
⑥分量必须取原子值每一个分量都必须是不可分的数据项。
这是规范条件中最基本的一条
7关系模式
关系模式(RelationSchema)是型,关系是值,关系模式是对关系的描述
关系模式可以形式化地表示为:
R(U,D,dom,F)
R关系名
U组成该关系的属性名集合
D属性组U中属性所来自的域
dom属性向域的映象集合
F属性间的数据依赖关系集合
关系模式通常可以简记为
R(U)或R(A1,A2,…,An)
R关系名
A1,A2,…,An属性名
8关系模式与关系
关系模式:
对关系的描述,静态的、稳定的
关系:
关系模式在某一时刻的状态或内容
动态的、随时间不断变化的
关系模式和关系往往统称为关系
9关系数据库
在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库。
二)关系的完整性
关系模型的完整性规则是对关系的某种约束条件。
1关系模型中三类完整性约束:
实体完整性
参照完整性
用户定义的完整性
2实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性
3实体完整性
实体完整性规则:
若属性A是基本关系R的主属性,则属性
A不能取空值(空值就是“不知道”或“无意义”的值)
注意:
实体完整性规则规定基本关系的所有主属性都不能取空值
4外码
设F是基本关系R的一个或一组属性,但不是关系R的码。
如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码。
基本关系R称为参照关系,基本关系S称为被参照关系
目标关系S的主码Ks和参照关系的外码F必须定义在同一个(或一组)域上外码并不一定要与相应的主码同名,当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别
5参照完整性规则
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
或者取空值(F的每个属性值均为空值)
或者等于S中某个元组的主码值。
例:
学生关系中每个元组的“专业号”属性只取下面两类值:
(1)空值,表示尚未给该学生分配专业
(2)非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配到一个不存在的专业中
6用户定义的完整性
用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
例:
课程(课程号,课程名,学分)
“课程号”属性必须取唯一值
非主属性“课程名”也不能取空值
“学分”属性只能取值{1,2,3,4}
三)关系代数
传统的集合运算
专门的关系运算
1关系代数:
一种抽象的查询语言,用对关系的运算来表达查询
2关系代数运算的三个要素
运算对象:
关系
运算结果:
关系
运算符:
四类
3关系代数运算符
4关系代数运算的分类
传统的集合运算:
并、差、交、广义笛卡尔积
专门的关系运算:
选择、投影、连接、除
5并
R和S(并差交运算中)
具有相同的目n(即两个关系都有n个属性)
相应的属性取自同一个域
R∪S
仍为n目关系,由属于R或属于S的元组组成
R∪S={t|tR∨tS}
6差
R-S
仍为n目关系,由属于R而不属于S的所有元组组成
R-S={t|tR∧tS}
7交
R∩S
⏹仍为n目关系,由既属于R又属于S的元组组成
R∩S={t|tR∧tS}
R∩S=R–(R-S)
8广义笛卡尔积
R:
n目关系,k1个元组
S:
m目关系,k2个元组
R×S
列:
(n+m)列的元组的集合
元组的前n列是关系R的一个元组
后m列是关系S的一个元组
行:
k1×k2个元组
R×S={trts|trR∧tsS}
专门的关系运算
选择投影连接除
1选择
选择运算符的含义
在关系R中选择满足给定条件的诸元组
σF(R)={t|tR∧F(t)='真'}
选择运算是从行的角度进行的运算
σSdept='IS'(Student)
或σ5='IS'(Student)
σSage<20(Student)
或σ4<20(Student)
2投影
投影运算符的含义
从R中选择出若干属性列组成新的关系
πA(R)={t[A]|tR}
A:
R中的属性列
投影操作主要是从列的角度进行运算
但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)
3连接
连接运算的含义
从两个关系的笛卡尔积中选取属性间满足一定条件的元组
A和B:
分别为R和S上度数相等且可比的属性组
θ:
比较运算符
连接运算从R和S的广义笛卡尔积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系的元组。
两类常用连接运算
等值连接(equijoin):
θ为“=”的连接运算称为等值连接
等值连接的含义:
从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:
自然连接(Naturaljoin)
什么是自然连接:
自然连接是一种特殊的等值连接
两个关系中进行比较的分量必须是相同的属性组
在结果中把重复的属性列去掉
自然连接的含义
R和S具有相同的属性组B
一般的连接操作是从行的角度进行运算。
自然连接还需要取消重复列,所以是同时从行和列的角度进行运算
4除
给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。
R中的Y与S中的Y可以有不同的属性名,但必须出自相同
的域集。
R与S的除运算得到一个新的关系P(X),P是R中
满足下列条件的元组在X属性列上的投影:
元组在X上分
量值x的象集Yx包含S在Y上投影的集合。
R÷S={tr[X]|trR∧πY(S)Yx}
Yx:
x在R中的象集,x=tr[X]
除操作是同时从行和列角度进行运算
在关系R中,A可以取四个值{a1,a2,a3,a4}
a1的象集为{(b1,c2),(b2,c3),(b2,c1)}
a2的象集为{(b3,c7),(b2,c3)}
a3的象集为{(b4,c6)}
a4的象集为{(b6,c6)}
S在(B,C)上的投影为
{(b1,c2),(b2,c1),(b2,c3)}
只有a1的象集包含了S在(B,C)属性组上的投影
所以R÷S={a1}
三关系数据库标准语言SQL
一基本表的建立与修改
1定义语句格式
CREATETABLE<表名>
2常用完整性约束
主码约束:
PRIMARYKEY
唯一性约束:
UNIQUE
非空值约束:
NOTNULL
参照完整性约束
3[例2]建立一个“学生选课”表SC,它由学号Sno、课程号Cno,修课成绩Grade组成,其中(Sno,Cno)为主码。
CREATETABLESC(
SnoCHAR(5),
CnoCHAR(3),
Gradeint,
Primarykey(Sno,Cno));
4删除基本表
DROPTABLE<表名>;
5修改基本表
ALTERTABLE<表名>
[ADD<新列名><数据类型>[完整性约束]]
[DROP<完整性约束名>]
[MODIFY<列名><数据类型>];
6建立与删除索引
⏹聚簇索引
⏹建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。
也即聚簇索引的索引项顺序与表中记录的物理顺序一致
⏹在一个基本表上最多只能建立一个聚簇索引
⏹聚簇索引的用途:
对于某些类型的查询,可以提高查询效率
7删除索引
DROPINDEX<索引名>;
二查询
1语句格式
SELECT[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]…
FROM<表名或视图名>[,<表名或视图名>]…
[WHERE<条件表达式>]
[GROUPBY<列名1>[HAVING<条件表达式>]]
[ORDERBY<列名2>[ASC|DESC]];
SELECT子句:
指定要显示的属性列
FROM子句:
指定查询对象(基本表或视图)
WHERE子句:
指定查询条件
GROUPBY子句:
对查询结果按指定列的值分组,该属性列值相等的元组为一个组。
通常会在每组中作用集函数。
HAVING短语:
筛选出只有满足指定条件的组
ORDERBY子句:
对查询结果表按指定列值的升序或降序排序
3示例数据库
学生-课程数据库
学生表:
Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:
Course(Cno,Cname,Cpno,Ccredit)
学生选课表:
SC(Sno,Cno,Grade)
4单表查询
查询仅涉及一个表,是一种最简单的查询操作
选择表中的若干列,选择表中的若干元组,对查询结果排序
1)选择表中的若干列
查询全体学生的学号与姓名。
SELECTSno,SnameFROMStudent;
查询全体学生的姓名、学号、所在系。
SELECTSname,Sno,SdeptFROMStudent;
查询全体学生的详细记录。
SELECTSno,Sname,Ssex,Sage,Sdept
FROMStudent;或SELECT*FROMStudent;
查全体学生的姓名及其出生年份
SELECTSname,2000-SageFROMStudent;
2)选择表中的若干元组
消除取值重复的行:
DISTINCT短语
DISTINCT短语的作用范围是所有目标列
SELECTDISTINCTSnoFROMSC
查询满足条件的元组
常用查询条件
%(百分号)代表任意长度
_(下横线)代表任意单个字符
3)对查询结果排序
使用ORDERBY子句
可以按一个或多个属性列排序
升序:
ASC;降序:
DESC;缺省值为升序
4)使用集函数:
COUNT()函数应用:
主要用作计数器,统计满足某种条件的行数
例列出在授课表中有多少位教师(不能重复统计)
SELECTCOUNT(DISTINCT教师名)FROM授课表
SELECTCOUNT(DISTINCT教师名)‘教师人数’FROM授课表
例统计学生表中一共有多少位19岁以上的女同学
SELECTCOUNT(*)FROM学生表WHERE年龄>=19.AND.性别=’女’
MIN()和MAX()、AVG()函数的应用:
找出表中的最大值和最小值以及平均值
例SELECTMAX(年龄)‘年龄最大’,MIN(年龄)‘年龄最小’FROM学生表
SELECTAVG(年龄)‘平均年龄’FROM学生表
SUM()的应用
对指定字段列求和
例SELECTSUM(年龄+1)‘1年后年龄总和’FROM学生表
SELECTSUM(年龄)‘女生年龄总和’FROM学生表WHERE性别=‘女’
5)对查询结果分组
使用GROUPBY子句分组
细化集函数的作用对象
未对查询结果分组,集函数将作用于整个查询结果
对查询结果分组后,集函数将分别作用于每个组
*使用GROUPBY子句后,SELECT子句的列名列表中只能出现分组属性和集函数
使用HAVING短语筛选最终输出结果
例查询有3门以上课程是90分以上的学生的学号及(90分以上的)课程数
SELECTSno,COUNT(*)
FROMSC
WHEREGrade>=90
GROUPBYSno
HAVINGCOUNT(*)>=3;
只有满足HAVING短语指定条件的组才输出
HAVING短语与WHERE子句的区别:
作用对象不同
WHERE子句作用于基表或视图,从中选择满足条件的元组。
HAVING短语作用于组,从中选择满足条件的组。
5连接查询
同时涉及多个表的查询
用来连接两个表的条件称为连接条件或连接谓词
等值连接、自然连接、自身连接、嵌套查询
例查询每个学生的学号、姓名、选修的课程名及成绩。
SELECTStudent.Sno,Sname,Cname,Grade
FROMStudent,SC,Course
WHEREStudent.Sno=SC.Sno
andSC.Cno=Course.Cno;
SELECTSname
FROMStudent
WHERESnoIN
(SELECTSnoFROMSCWHERECno='2');
将下列关系代数查询转换为用SQL语句实现查询:
1)σsname=‘刘丽’(S)
2)ΠXDM,XHM(W)
3)ΠXDM,XHM(σsname=‘李红’(W)
1)select*fromSwheresname=‘刘丽’
2)selectdistinctXDM,XHMfrom(W)
3)selectdistinctXDM,XHMfrom(W)
wheresname=‘李红’
6数据更新
例1
INSERTINTOStudent
VALUES('95020','陈冬','男','IS',18);
例2
UPDATEStudent
SETSage=22
WHERESno='95001';
例3
DELETE
FROMStudent
WHERESno='95019';
四关系数据库理论
1规范化
规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。
2函数依赖
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。
若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。
X称为这个函数依赖的决定属性集(Determinant)。
Y=f(x)
3完全函数依赖与部分函数依赖
在关系模式R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有
4传递函数依赖
在关系模式R(U)中,如果X→Y,Y→Z,且YX,Y→X,则称Z传递函数依赖于X。
注:
如果Y→X,即X←→Y,则Z直接依赖于X
5各种范式之间存在联系:
61NF的定义
如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。
72NF的定义
若关系模式R∈1NF,并且每一个非主属性都完全函数依赖