数据库技术复习提纲.docx
《数据库技术复习提纲.docx》由会员分享,可在线阅读,更多相关《数据库技术复习提纲.docx(18页珍藏版)》请在冰豆网上搜索。
![数据库技术复习提纲.docx](https://file1.bdocx.com/fileroot1/2022-11/20/05e6874e-94c3-4d7b-9c33-39bdb6ef3b6f/05e6874e-94c3-4d7b-9c33-39bdb6ef3b6f1.gif)
数据库技术复习提纲
第1章序言
1.1数据库系统相对文件系统的优势
1.数据库系统(DBS)的特点(相对文件系统)
(1)数据库系统由数据库管理系统(DBMS)管理和控制数据。
DBMS可以解决数据安全、数据完整性检查、并发控制和数据库恢复等问题。
由DBMS屏蔽数据存取细节:
应用程序DBMS数据库
(2)数据结构化程度高。
数据库存储了整个组织的数据,数据库既存储数据,又存储数据之间的联系。
(3)数据独立性高。
数据独立性包括数据的物理独立性和数据的逻辑独立性。
物理独立性指用户的应用程序与存储在磁盘上的数据(数据库中的数据)相互独立,即应用程序只处理数据的逻辑结构,而不关心数据的物理存储。
逻辑独立性指用户的应用程序与数据库的逻辑结构相互独立,即数据的逻辑结构发生改变,应用程序可以不变(如:
表中增加一个列,应用程序可以不变)。
应用程序按逻辑结构组织的数据按物理结构组织的数据
应用程序外模式模式内模式;或者,应用程序模式内模式
(4)数据的共享高,冗余度低,易扩充。
数据库的数据面向整个系统,而不是某个特定的应用,数据可以被多个用户、多个应用系统共享使用。
数据共享(集中控制)可以大大减少数据的重复性(冗余),节约存储空间,更容易保持数据的一致性。
由于数据面向整个系统,且结构化程度高,因此容易增加新的应用,易于扩充,可以适应各种用户的要求。
数据库存储整个企业或组织的数据
1.2数据库系统的组成
(1)数据库(DB)。
定义1:
自描述的集成的表的存储(有点片面,并不是所有数据库均采用表方式存储的)。
定义2:
长期存储在计算机内,有组织的,可共享的数据集合。
数据库一般包括:
用户数据、元数据、索引、存储过程、触发器、安全数据、备份/恢复数据等。
DB的内容?
(2)数据库管理系统(DBMS)及其开发工具。
是系统软件,主要功能包括:
数据库创建和维护功能、数据库运行管理功能、数据定义和操纵功能等。
商业系统:
Access、SQLServer、Oracle、Sybase等。
开源系统:
MySQL、PostgreSQL、SQLite、Firebird(Borland的InterBase)、SimpleSQL、BerkelyDB、Minosse等
(3)数据库应用系统。
(4)用户和数据库管理员(DBA)。
工作领域的知识工作者,建立数据分析模型,抽取数据进行分析;程序员,编写数据库应用系统;数据库管理员,决定数据库中的信息内容和结构,决定数据库的存储结构和存取策略,定义数据的安全性要求和完整性约束条件,监控数据库的使用和运行,数据库的改进和重组重构。
用户?
DBA?
职责?
第2章结构化查询语言简介
2.1SQL特点
(1)关系数据库的标准语言:
目前DBMS广泛接受的标准是ANSI-92(SQL2)。
(2)SQL是数据子语言:
用于数据查询、数据操纵、数据定义和数据控制等,核心包括数据定义语言(DDL)、数据操纵语言(DML)和数据控制语言(DCL)。
(3)非过程式语言:
SQL语句只提出“做什么”,而不关心“怎么做”(这步由DBMS负责完成)。
对用户隐藏了数据的访问路径
2.2SELECT语句的使用
2.2.1.SELECT语句框架(摘自JETSQL40.CHM)
1.SELECT[predicate]{*|table.*|[table.]field1[ASalias1][,[table.]field2[ASalias2][,...]]}
FROMtableexpression[,...][INExternaldatabase]
[WHERE...]
[GROUPBY...]
[HAVING...]
[ORDERBY...]
[WITHOWNERACCESSOPTION];
(1)predicate:
谓词,限定返回的记录数,可用的谓词包括ALL、DISTINCT、DISTINCTROW和TOP,没有指明谓词时,表示ALL。
(2)选择全部列使用*。
(3)table.*:
指定表的全部列(多表查询),table为表的名称。
(4)field1ASalias1:
列名称取别名。
别名不能用于WHERE子句、GROUPBY子句、HAVING子句和ORDERBY子句。
(5)WHERE子句:
记录的筛选条件。
(6)GROUPBY子句:
分组统计的依据,即根据哪些列进行分组和统计。
(7)HAVING子句:
设置分组统计结果的筛选条件。
(8)ORDERBY子句:
设置返回结果的排列顺序,ASC表示升序,DESC表示降序。
3.语法规则
(1)SQL语句以分号作为语句结束符。
(2)SQL语句的关键字大小写不敏感。
即,Select、select和SELECT的写法是一样的。
(3)标识符:
用以给数据对象命名,数据对象如:
表、列、约束、触发器、存储过程、视图等。
如果标识符会让DBMS产生歧义,则必须使用方括号将标识符括起来,如,假设订单表命名为Order,其中订单号命名为OrderNumber,选择订单号为1的订单资料应写成
SELECT*
FROM[Order]
WHERE[OrderNumber]=1;
(4)字符串常量:
用单引号括起来,常量中包含单引号字符时,该单引号字符必须使用两个连续的单引号代替。
如,'WaterSports'、'I''mastudent.'。
(5)比较运算符:
>,>=,=,<>,<=,<。
(6)逻辑运算符:
NOT,AND,OR,IN,BETWEEN…AND…,LIKE。
(7)优先级:
比较运算符>逻辑运算符;NOT>AND>OR,IN,BETWEEN,LIKE。
(8)BETWEEN:
例xBETWEEN100AND200,这个写法与x>=100ANDx<=200等价。
(9)IN:
例xIN('WaterSports','Camping'),这个写法与x='WaterSports'ORx='Camping'等价。
当x属于集合时为真。
(10)LIKE:
根据匹配模式定义,判断字符串x是否包含某个子串。
(11)通配符:
用于定义匹配模式。
例1:
xLIKE'Wh%',x以'Wh'开头时,结果为真。
如,'Wh'、'What'、'Why'等。
在Access软件中用*代替%,但在Microsoft®OLEDBProviderforJet中仍应该使用%。
例2:
xLIKE'Wh_',x由3个字符构成,且以'Wh'开头时,结果为真。
如,'Why'、'Who'等。
在Access软件中用?
代替_,但在Microsoft®OLEDBProviderforJet中仍应该使用_。
例3:
xLIKE'[张李]%',x以'张'或'李'开头时,结果为真。
如,'张三'、'李四'等。
例4:
xLIKE'[!
张李]%',x不以'张'或'李'开头时,结果为真。
如,'王五'等。
Access写法。
例5:
xLIKE'[^张李]%',x不以'张'或'李'开头时,结果为真。
如,'王五'等。
SQLServer写法。
例6:
xLIKE'%10[%]%',x包含'10%'时,结果为真。
如,'up10%.'等。
例7:
xLIKE'%Order[_]Number%',x包含'Order_Number'时,结果为真。
例8:
xLIKE'%[[]Sports]%',x包含'[Sports]'时,结果为真。
(12)统计函数:
MAX(求最大值),MIN(求最小值),AVG(求平均值),SUM(求和),COUNT(统计行数),Access不支持诸如COUNT(DISTINCTDepartment)的统计形式。
(13)使用GROUPBY子句时,只有分组统计的列可以在SELECT部分使用。
4.多表查询
(1)使用子查询(最终要显示的结果只来自一张表的时候,可以考虑使用子查询)
例:
有两张表,Student(SNo,SName)和Grade(SNo,CNo,Grade),列出选修1号课程且成绩合格的学生资料:
分两步查询,第一步,查则选修1号课程且成绩合格的学生的学号;第二步,查这些学号对应的姓名。
SELECT*
FROMStudent
WHERESNoIN
(SELECTSNo
FROMGrade
WHERECNo=1
ANDGrade>=60);
(2)使用连接
(a)内连接:
StudentsINNERJOINGradegONs.SNo=g.SNo,结果为包含列(SNo,SName,SNo,CNo,Grade)的表,表中只包含符合连接条件的行。
(b)左外连接:
StudentsLEFTOUTERJOINGradegONs.SNo=g.SNo,结果仍为包含列(SNo,SName,SNo,CNo,Grade)的表,表中除了包含符合连接条件的行之外,还包含没有选课的学生资料,如,/Tom没有选课,但他的记录也会出现在结果中,即,结果会包含一行(,Tom,NULL,NULL,NULL)。
保证左表数据完整。
(c)右外连接:
GradegRIGHTOUTERJOINStudentsONs.SNo=g.SNo,结果为包含列(SNo,CNo,Grade,SNo,SName)的表,表中除了包含符合连接条件的行之外,还包含没有选课的学生资料,如,/Tom没有选课,但他的记录也会出现在结果中,即,结果会包含一行(NULL,NULL,NULL,,Tom)。
保证右表数据完整。
(d)我们可以对连接后的表进行筛选、排序、分组统计等操作。
例:
列出没有选课的学生资料。
这个例子也可以用子查询实现。
SELECTs.*
FROMStudentsLEFTOUTERJOINGradegONs.SNo=g.SNo
WHEREg.SNoISNULL;
分数:
大约10分左右
第3章关系数据库
3.1数据模型
(1)数据模型定义:
数据模型是严格定义的一组概念的集合,这组概念精确地描述了系统的静态特性、动态特性和完整性约束条件。
(2)组成要素:
数据结构、数据操作和数据的约束条件。
(a)数据结构:
描述系统的静态特性。
如,关系模型用二维表结构描述数据及其联系。
(b)数据操作:
描述系统的动态特性,动态特性是指用户使用数据模型定义的操作,对数据进行检索和更新,使系统的状态发生变化。
如,关系模型提供了SQL语言作为操作数据的手段。
(c)数据的约束条件:
数据的约束条件是一组完整性规则的集合。
完整性规则:
是给定的数据模型中数据及其联系所具有的约束和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容。
如,数据库中存在学生表S(SNo,Name)、课程表C(CNo,Description)和选课表SC(SNo,CNo,Grade)。
我们希望有一个完整性规则,仅当指定有效的学生和有效的课程时,才能填入课程成绩,我们也希望有一个完整性规则,使填入的成绩符合5分制的要求,另外,我们还可能希望有一个完整性规则,当某个学生转学之后,除了删除这个学生在学生表S中的记录,同时删除与这个学生相关的其它资料。
这些完整性规则将影响数据操作,即保证数据库状态及状态变化符合要求。
数据的约束条件是由用户需求决定的。
(3)数据模型是DBMS实现的基础
3.2关系模型
1.重要概念
(1)关系模式:
表头,描述表的结构,红色框部分。
(a)属性:
列。
(b)域:
列数据的取值范围。
(c)主键:
某一列或列组合,通过它的一个值可以唯一地确定一行数据,如表中的学号。
(2)关系:
表中存储的数据,蓝色部分。
(a)元组:
一行数据。
(b)分量:
元组中特定列上的值。
(3)关系类型:
基本关系(或简称基表)、视图和查询表。
(a)基表:
实际存在的表,存储全局数据。
(b)视图:
由基表或其它视图导出(抽取)的表,是虚表,不实际存储数据,它反映特定用户的局部需求。
如,学生(学号,姓名,性别,籍贯,照片,…),这张表(基表)存储了符合大部分用户需求的学生资料,如果任课教师只关心学生的学号和姓名,我们可以导出一个虚表满足任课教师的需要,学生视图(学号,姓名)。
(c)查询表:
查询结果构成的表,我们无法对查询表进行任何数据操作。
(4)关系必须满足的最基本要求:
分量原子性,即分量不可再分。
基表的基本要求?
(5)基本关系(基表)的性质(6条):
(a)列是同质的,即每列中的分量是同一类型的数据,来自同一个域。
(b)列名称在表中不重复,不同的列可以出自同一个域,即取值范围相同。
(c)列顺序不重要。
(d)行数据不重复。
(e)行顺序不重要。
(f)分量原子性。
(6).关系的形式化定义
(1)域:
是一组具有相同数据类型的值的集合。
(2)笛卡尔积:
给定一组域D1,D2,…,Dn,这些域中可以有相同的。
D1,D2,…,Dn的笛卡尔积为D1xD2x…xDn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}。
(d1,d2,…,dn)称为n元组或元组,di称为分量。
D1=导师集合={张清玫,刘逸}
D2=专业集合={计算机,信息}
D3=研究生集合={李勇,刘晨}
D1xD2xD3={
(张清玫,计算机,李勇),
(张清玫,计算机,刘晨),
(张清玫,信息,李勇),
(张清玫,信息,刘晨),
(刘逸,计算机,李勇),
(刘逸,计算机,刘晨),
(刘逸,信息,李勇),
(刘逸,信息,刘晨)
}
(3)关系:
D1xD2x…xDn的子集称为在域D1,D2,…,Dn上的关系,表示为R(A1,A2,…,An),R为关系名,n为关系的目或度,分量名字Ai称为属性。
(7).关系模式的形式化定义
关系模式:
关系的描述称为关系模式,它可以形式化地表示为:
R〈U,D,dom,F〉,其中,R为关系名,U为组成该关系的属性名集合,D为属性组U中属性来自的域的集合,dom为属性向域的映射集合,F为属性间数据的依存关系集合。
关系模式经常简写为:
R(U)或R(A1,A2,…,An)。
2.数据结构
●关系模式+关系
(1)在一个给定的应用领域中,所有数据及其联系的关系的集合构成一个关系数据库。
(2)对关系数据库的描述,它包括若干域的定义以及在这些域上定义的若干关系模式。
3.数据操作
●SQL、关系代数和关系演算,三者的运算能力等价
●关系代数完备操作集:
并、差、笛卡尔积、投影和选择
4.数据完整性
●实体完整性约束?
RDBMS必须提供
实体完整性规则:
若属性A是基本关系(基表)R的主属性,则属性A不能取空值。
(a)若关系中的某个属性或属性组的值可以唯一地确定一个元组,则该属性或属性组称为候选键。
关系可以有多个候选键,如,学生(学号,姓名,籍贯,性别,身份证号,…),其中,学号和身份证号都是该表的候选键,系统实现时指定的候选键称为主键。
主键包含的属性称为主属性。
非候选键的属性称为非主属性。
(b)空值表示没有数据。
SQL用NULL表示空值,用xISNULL和xISNOTNULL判断x是否空值。
●参照完整性约束?
RDBMS必须提供
参照完整性规则:
若属性(或属性组)F是基本关系(基表)R的外键,它与基本关系(基表)S的主键KS相对应(基本关系R和S不一定是不同关系),则对于R中每个元组在F上的值必须为:
或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主键值。
(a)学生(学号,姓名,班长),班长属性是外键。
(b)课程(课程号,课程名)
(c)选课(学号,课程号,成绩),学号属性和课程号属性都是外键,且它们的组合是主键。
●用户定义的完整性约束:
默认值约束、空值约束、取值范围约束、触发器等等
任何RDBMS都应支持实体完整性和参照完整性,但对用户自定义完整性规则方面的支持不尽相同。
5.关系数据语言
(1)关系数据语言特点:
非过程式的集合操作语言;完备的表达能力。
(2)关系代数、关系演算和SQL的表达能力是相同的。
(3)关系代数的完备操作集由并、差、广义笛卡尔积、选择和投影构成。
第4章关系数据理论
4.1重要概念
1.函数依赖?
函数依赖的定义:
设R(U)是属性集U上的关系模式.X,Y是U的子集.若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数决定Y或Y函数依赖于X,记作X→Y.
2.候选键?
主属性?
非主属性?
候选键:
设K为R(U,F)中的属性或属性组合,若U完全函数依赖于K,则K为R的候选键.若候选键多于一个,则选定其中的一个作为主键.
主属性:
包含在任何一个候选键中的属性.
注意:
这与实体完整性规则提到的主属性的解释不同.DBMS只能对用户指定的主键属性进行实体完整性约束,而对其它候选键的存在是一无所知的.
非主属性:
不包含在任何候选键中的属性.
3.范式?
关系模式规范化?
范式实质
●关系需要满足的条件
●E.g.,符合第一范式(1NF)要求的关系必须满足分量原子性
范式关系
●5NF⊂4NF⊂BCNF⊂3NF⊂2NF⊂1NF
关系模式规范化
●低一级范式的关系模式通过模式分解转换成若干个高一级范式的关系模式集合的过程
1NF?
2NF?
3NF?
BCNF?
•若R∈1NF,且每个非主属性完全函数依赖于候选键,则称R∈2NF.
•若R∈2NF,且每个非主属性均不传递函数依赖于候选键,则称R∈3NF.
•定义1:
若R∈3NF,且每个主属性均完全函数依赖于候选键且均不传递函数依赖于候选键,则称R∈BCNF.
•定义2:
若R∈1NF,且每个函数依赖的决定因素都含候选键,则称R∈BCNF.
4.2规范化
1.Armstrong公理系统
●自反律?
增广律?
传递律?
关系模式R〈U,F〉,U为属性集,F为函数依赖集.对R有以下推理规则:
●A1:
自反律.若YXU(Y⊆X⊆U),则X→Y为F所蕴涵.
●A2:
增广律.若X→Y为F所蕴涵,且ZU(Z⊆U),则XZ→YZ为F所蕴涵.
●A3:
传递律.若X→Y及Y→Z为F所蕴涵,则X→Z为F所蕴涵.
Armstrong公理系统是有效的,完备的.
2.规范化过程
●数据语义函数依赖集
●函数依赖集候选键(求属性集闭包),确定主属性和非主属性
●通过模式分解,用高范式关系模式集替换低范式关系模式
4.3模式分解特性
1.分解的保持函数依赖性判别
2.分解的无损连接性判别
3.分解成3NF模式集可以既保持函数依赖又保证无损连接性
第5章使用E-R模型进行数据建模
5.1E-R模型
1.用途:
表达概念模型(信息世界)的工具;不同于数据模型(DBMS)
2.基本元素:
实体,属性,标识符,弱实体,超类实体,子类实体,HAS-A联系,最大粒度,最小粒度,ID依赖联系,IS-A联系
●传统画法和IE画法(鸦脚)
3.建模工具:
ERwin,Visio,PowerDesigner,Designer
5.2数据建模
1.找实体,找属性,确定标识符
实体:
用户想跟踪的事物.
a)两种理解:
实体类&实体实例
属性:
用于描述实体的特性.
b)多值属性和组合属性的问题
标识符:
用于区分实体的属性或属性组.
2.确定实体间的联系,确定联系的最大粒度和最小粒度
联系:
表达实体之间的关系.
a)联系类,实体类之间的关系;
b)联系实例,实体实例之间的关系.
联系的度:
联系中设计的实体个数.
二元联系,三元联系,etc.
联系的命名:
可从任一实体的角度命名,当实体之间存在多种联系时,应该给联系命名.
联系可以具有属性.
最大粒度
联系实例涉及的实体实例的最大数目.
最小粒度
联系实例涉及的实体实例的最小数目.
通常最小粒度是1或0.尽量准确.
第6章把E-R模型转换成关系数据库模式
6.1转换规则
1.实体转换成基表
2.联系的最大粒度如何转换?
3.最小粒度影响什么?
第7章SQLSERVER2K初步
7.1DML
1.INSERT,UPDATE,DELETE
(1).INSERT
•单记录插入
insertintoStudent(sname,gender,enroll,prof)
values('康','M',2004,'EC');
•批量插入
insertintoStudent(sname,gender,enroll,prof)
selectsname,gender,enroll,prof
fromImported_Student;
(2).UPDATE
•P181,带条件的更新
updateCUSTOMER
setCity=‘NewYorkCity’,State=‘NY’
whereCustomerID=1000;
•P181,批量更新
updateCUSTOMER
setCity=‘NewYorkCity’;
(3).DELETE(谨慎使用)
•P182,带条件删除
deletefromCUSTOMER
whereCustomerID=1000;
•全部删除
deletefromCUSTOMER;
•截断表
trancatetableCUSTOMER;(T-SQL)
delete逐行删除数据,触发器可用,标识列计数器不变
trancatetable整个表删除,触发器不可用,标识列重新计数,另外还有一些情况不能使用它,参考帮助
2.EXISTS,NOTEXISTS,INNERJOIN,LEFTOUTERJOIN,RIGHTOUTERJOIN
7.2事务
1.事务?
事务
a)用户定义的一个数据库操作序列,
b)是不可分割的工作单位,
c)是数据库应用程序的基本逻辑单元.
d)是数据库恢复技术和并发控制技术的基础.
2.事务特性?
(ACID)
原子性(Atomicity)
事务包含的操作序列是一个整体,
每个操作或者都成功执行,或者都不执行.
一致性(Consistency)
数据库如果在事务执行前是一致的,
则执行事务后仍然应该是一致的.
隔离性(Isolation)
事务之间互不干扰.(并发问题)
持续性(Durability)
事务一旦提交(成功执行),它对数据库的改变是永久性的.
ACID特性
acidrain:
酸雨
3.显式事务框架
7.3视图
1.视图?
视图是一个或几个基本表(或视图)构造出的一个虚拟表.
视图是一个SELECT语句.(见P186注释)
2.视图特性?
数据库只存放视图的定义,不存放视