数据库系统概论王珊第五版学习笔记.docx
《数据库系统概论王珊第五版学习笔记.docx》由会员分享,可在线阅读,更多相关《数据库系统概论王珊第五版学习笔记.docx(27页珍藏版)》请在冰豆网上搜索。
数据库系统概论王珊第五版学习笔记
第一章
1.数据库的四个基本概念:
数据、数据库、数据库管理系统、数据库系统。
数据:
是数据库中存储的基本对象。
描述事物的符号称为数据。
数据库:
是长期存储在计算机内、有组织的、可共享的大量数据的集合。
数据库数据具有永久存储、有组织和可共享三个基本特点。
数据库管理系统:
是计算机的基础软件。
数据库系统:
是由数据库、数据库管理系统、应用程序和人组成的存储、管理、处理和维护数据的系统。
2.数据处理和数据管理。
数据处理:
指对各种数据进行手机、存储、加工和传播的一系列活动的总和。
数据管理:
指对数据进行分类、组织、编码、存储、检索和维护。
3.数据独立性。
物理独立性:
指用户的应用程序与数据库中数据的物理存储是相互独立的。
逻辑独立性:
指用户的应用程序与数据库的逻辑结构是相互独立的。
4.数据模型是对现实世界数据特征的抽象(现实世界的模拟)。
数据模型是数据库系统的核心和基础。
概念模型:
信息模型,按照用户的观点来对数据和信息建模,主要用于数据库设计逻辑模型:
按照计算机系统的观点对数据建模。
物理模型:
描述数据在计算机内部的表示方式和存取方法。
数据模型组成要素:
数据结构、数据操作、数据的完整性约束条件。
5.信息世界中的基本概念。
实体:
客观存在并可相互区别的事物。
属性:
实体所具有的某一特征。
码:
唯一标识实体的属性集。
联系:
失误内部以及事物之间是有联系的。
实体内部的联系通常是指组成实体的个属性之间的联系,实体之间的联系通常是指不同实体集之间的联系。
实体之间的联系有一对一、一对多和多对多等各种类型。
6.数据完整性约束条件。
实体完整性:
检查主码值是否唯一,检查主码的各个属性是否为空。
实体完整性在
创建表时用primarykey主键来定义。
参照完整性:
检查增删改时检查外码约束。
在创建表时用外码foreignkey短语
定义。
用户定义完整性:
创建表中定义属性的同时,可以根据应用要求定义属性上的约束条件,即属性值限制。
列值非空(notnull)、列值唯一(unique)、检查列值是否满足一个条件表达式(check
短语)
7.数据库系统的模式。
型:
是指对某一类数据的结构和属性的说明,对结构的描述和说明。
值:
是型的一个具体赋值。
模式:
是数据库中全体数据的逻辑结构和特征的描述,对结构进行描述,仅仅涉及
型。
模式的一个具体值称为模式的一个实例。
模式反应的事数据的结构及其联系,而实例反应的是数据库某一时刻的状态。
8.数据库的三级模式结构。
模式(逻辑模式):
是数据库中全体数据的逻辑结构和特征的描述,需要定义数据
想的名字,类型,取值范围和数据之间的联系,安全性完整性要求等。
夕卜模式(子模式):
数据库中数据的局部逻辑结构。
内模式(存储模式):
是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
第二章
1.关系模型------关系数据结构、关系操作集合、关系完整性约束三部分组成。
2.关系。
域:
一组具有相同数据类型的值的集合。
关系:
笛卡尔积的有限子集。
候选码:
关系中某一属性组的值能唯一地标识一个元组。
候选码的诸属性称为主属性。
不包含在任何候选码中的属性称为非主属性。
3.表。
基本表(基本关系、基表):
实际存在的表,是实际存储数据的逻辑表示
查询表:
是查询结果对应的表。
视图表:
是由基本表或其他视图表导出的表,虚表,不对应实际存储的数据。
4.关系代数:
用对关系的运算来表达查询。
关系代数运算的三个要素:
1.运算对象:
关系;2.运算结果:
关系;3:
运算符:
四类
运算符
含义
运算符
含义
专门的关
0选择
逻辑运算
―■斗F
系
JT投影
符
A与
运算符
X连接
V或
■-
选择运算是从行的角度进行的运算
查询信息系(IS系)全体学生
投影操作主要是从列的角度进行运算。
且还可能取消某些元组(避免重复行)
投影之后不仅取消了原关系中的某些列,而
(Sdept='IS'(Student)
查询学生的姓名和所在系,即求Student关系上学生姓名和所在系两个属性上的投影
n$nameSdept(Student)
连接也称B连接:
连接运算从R和S的广义笛卡尔积RXS中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系的元组
等值连接斤XS
除
在关系R中.A可以取四个値{乩,a2,a3fa4}丙的象集为{(久Gj)f4(鸟,G)}
电的象集为{(為,叼),(鸟,q)}禺的象集为{(bvG)}和的象集为{(爲・Q〉}
廉(尺。
上的投影为
{(bbc2)t(b2fcl)r(b2rc3)}
只有遇的象集包含了雄⑻0属性组上的投影所以R^S={a]}
交:
RCS工R-(圧S)
连接二RXII?
=OA0H(RXS)
ABB
除:
R^S=HX(R)-nx(JIx(R)Xny(S)-R)
[例10]査询选修了全部课程的学生号码和姓名.
31血如&w(SC)m(Course31Sn<>,沁亡(Student)
第四章
什么是数据库的安仝杵
数据库的安全性是措保护数据库,阴止因ni户非法使用数据库造成数据泄露、更改或破坏.
数搦库系统的女全保护扌昔施是否有效是数踮库系统主変的熾能指标之一。
DBMS存邛展鲍J
申计
除件洁求
用户标识-ry^E-JSJ
数据库安全控制层次
1.数据库安全性控制
用户身份鉴别:
静态口令鉴别,动态口令鉴别、生物特征鉴别、智能卡鉴别
存取控制:
定义用户权限。
合法权限检查
自主存取控制:
授予不同对象不同权限
强制存取控制:
数据库中的内容带有密级标记,只有具有相应标记的用户才能够访
问。
■强制存取控制规则
旷当某一用户(或某一主休)以标记均bel注册入系统时,系统要求他对任何客体时存取必须遵循下面两条规则:
<1)仅当主体的许可证级别大于或等于客休的密级时扌该主休才能读取相应的客体;
(2)仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体。
■修正规则
h主休的许可证级别<二客体的密级9主体能写客体
■规则的共同点
严禁止了拥有髙许可证级别的主体更新低密级的数据对象
2.授权。
授权:
----对属性列授权必须指出相应的属性列名。
grantselect」nsert,delete,update…
ontableStudent,Sc
to用户1,用户2
收回权限:
revokeselect
ontableStudent,Sc
from用户1,用户2
3.角色。
数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。
仓U建角色、对角色进行授权、将角色授权给其他的角色或者用户、角色权限的收回。
创建角色:
createrole角色1,角色2
给角色授权:
grantselect,insert…
ontableStudent
to角色1,角色2
将角色授权给其他用户:
grant角色1
to用户1,用户2
收回角色权限:
Revokeselect
OntableStudent
From角色1
4.视图。
创建视图:
Createview视图1
As
Select*
FromStudent
WhereSdept=CS
第五章
1.数据库完整性。
数据库的完整性是指数据的正确性和相容性。
数据的正确性是指额数据是符合现实世
界语义、反应当前实际状况的。
数据的相容性是指数据库同一对象在不同的关系表中的数据是符合逻辑的。
2•保障数据库的完整性。
提供定义完整性约束条件的机制。
提供完整性检查的方法。
进行违约处理。
数据完整性约束条件前文中已经讲述,此处不再赘述。
第六章
1.函数依赖。
若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,
而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作XtY
珂以从不同角度分类二
•T凡函数依赖与#T凡函数依赖
•完全函数依赖与部分函数依赖■自接函数依枚与传诵阴数依極
如果X*dYcX,则tLY是平凡的鹹觴若果XT,但丫事则称XT是非平凡的函数依赖
如果X〜Y*并且对于X的任何一个真子集刘•都有X+人则称Y完全函数依赖于X,记作Yd
若Xf*但Y不完全函数依赖于X,则称Y部分函数依帧于心
记作X匸Y.
如果X—竹Y—Z且Y^X,Y^xX,则称Z传谨函数依赖于X
如果X—Y,则Z直接依敕于几
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程叫做规范化。
1NF(第一范式)如果一个关系模式R的所有属性都是不可分的基本数据项,则R€1NF
第一范式是对关系模式的最起码的要求。
不满足第一范式的数据库模式不能称为关系数
据库。
2NF:
如果R€1NF,且每一个非主属性完全依赖于码,则R€2NF
采用投影分解法将一个1NF的关系分解为多个2NF的关系
3NF:
如果R是2NF,且每个非主属性都不传递依赖于R的候选码,则R属于3NF。
2NF消除非主属性的部分依赖,3NF消除非主属性的传递依赖
2NF和3NF都是对非主屈性的要求,2NF要求每一个非主属性亢全网数依倾于码:
:
艷卩要求侮一个非主属性既不部分依赖于码也不传递依赖于码。
RF1NF.若X-YKY时X必含有码,则,
bcnf的定义:
REBCNFu
BCNF不仅对非主属性有要求,而且也对主属性有要求
如果一个关系模式只有两个属性构成,则该关系模式一定属于BCNF
例:
关系楔式中,£是学生孚号・J是课程号.r表亲名次〔没有并列名决八毎一个学生迭修每门课程的成绩有一定的名次・由诒丈可4#到濒做依鰻俸F如下Z
艮考・
'指皿该关系模式的候选码
指出主属性、非主属性
该关系模式是否是3NF?
该关系模式是否是BCNR
有两个:
(S,J)fCS,T)主属性占S.J.F;没有非主属性sjpe?
XF
SJPfeBCNF
INF
4消除非主属性对码的部分函数依赖2NF
4消除非主属性对码的传递函数依赖
3NF
*消除主属性对码的部分和传递函数依赖BCNF
>合并规则:
由片齐有4腹
例:
关糸篌式STJBTJ)中,S是学生孚号,T表不数帅编号,庠课稈号.每个教师只教一门课.每门课有若干教师讲毂,某一学生选定菜门课,就对应一个固定的教师。
由语义可得到函数依籁集刑□下=
*{(S,J)TT〜J}
I伪传递规则m由沪Z有册Z
I分解规则:
由4必有尸只x-^z.
判断一个函数依赖在R上是否成立
H(A,B,GD),F={A—B,BC—1)};问:
AC是否在K_t成立?
第一种解诀力法=计算看看ML-D是否在其中口该去肚计算量大,不可齐。
券二种解决方法:
如果MJ)成立,则》-定属于仇处十,因氐更先计算(AC)f*,如果DU(AC)f-”则成立,否则,不成
由于(AC)f+所以AC—D在R上成立*
己知关系模式RQbF>,其中1>{A,BF-{AB—C,B-^D,C-*E,EC—B,M—R}.
求关系的候选码并判断该关系模式星几范式?
过程:
肖先.找出所有没有在任何一个鬲数依頼右侧出现的属性,把他们组成一个属性组K,候选码一定含有K;计算坯―如果则K为候选码,而且貝有这一个;否则,基于K扩充属性,形成新的属性组(含有K但不含候选码的所有可能的属性组合》,计算新属性组的闭包,判断其是否为候选码°
候选禺:
{A3MA,C}
-1范式
第七章
1.数据库设计,数据库设计分6个阶段。
需求分析。
概念结构设计。
逻辑结构设计。
物理结构设计。
数据库实施。
数据库运行和维护。
2.
数据项是不可再分的数据单位
数据结构反映了数据之间的组合关系。
数据流是数据结构在系统内传输的路径。
数据存储是数据结构停留或保存的地方,也就是流的来源和去向之一。
具体处理逻辑一般用判定表或判定树来描述。
数据字典是关于数据库中数据的描述,是元数据,而不是数据本身。
数据字典在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善。
概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加
稳定。
自顶向下的进行需求分析,自低向上的设计概念结构。
定义数据库模式主要是从系统的时间效率、空间效率、易维护等角度出发。
物理设计的第一任务就是要确定选择那些存取方法,即建立哪些存取路径。
什么是数抵库的物理设计
■数据咋在物理设备上的存储结构与存取方法称为数据库的物理结构,它依颍于给定的计算方L系统O
■为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程,就是数据库的物理设计。
3.E—R图
实体型:
用矩形表示,矩形框内写明实体名
属性:
用椭圆形表示,并用无向边将其与相应的实体型连接起来
联系:
用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,
在无向边旁标上联系的类型(1:
1、1:
n或m:
n)
联系的属性:
联系本身也是一种实体型,也可以有属性。
如果一个联系具有属性,
(—学号—)(卑业)(性别J(岀生i期)
(奸名
3幽称)
届于
1
同时
则这
些属性也要用无向边与该联系连接起来
教职工
时吵(亦J
在关系总数尽量少的情况下,该E-R图转换后关系模式包括:
学生(学号,姓名,性别,专业,出生日期,学院编号)
课程(课程编号,课程名称,课程类别,学分)
学院(学院编号,学院名称,办公室电话,院长教职工编号)
教职工(教职工编号,姓名,参加工作时间,职称,学院编号)
选课(学号,课程号,成绩)
第八章
1.游标。
使用:
声明游标、打开游标、从一个游标中提取信息、关闭释放游标。
声明游标:
DeclareXXXcursor
Forselect******
打开游标:
openXXX
关闭游标:
closeXXX
释放游标:
deallocateXXX
声明一个名为curAllCourse的游标,完成统计有多少学生选修了全部课程,输出学生学号和姓名。
declarecurAllCoursecursor//声明游标
forSELECTSNO,sname
fromstudent
wheresnoin(selectsno
fromscgroupbysnohavingCOUN(T*)>=(
selectCOUN(T*)fromcourse)
)
opencurAllCourse
//打开游标
forreadonly
declare@snochar(10),@snamechar(10)//声明变量
set@sn=O
fetchnextfromcurAIICourseinto@sno@sname〃从游标中取数据while@@FETCH_STATUS
begin
if@snameisnull
set@sno=@sno+1
select@sno学号,@sname姓名
fetchnextfromcurAllCourseinto@sno@sname
end
CLOSEcurAllCourse//关闭游标
DEALLOCATEurAIICourse//释放游标
2.存储过程。
视图、存储过程和自定义函数
视图
存储过程
自定义函数
语句
只能是SELECT语句
可以包含程序流、逻辑以及SELl-Cr语句
町以包含程序流、逻辑以及SELECT语句
输入
不能接受参数
尙以有输入输出参数
有输入参数
返网值
只能返回结果集
返回值只能是整数
可以返回标量值“
恚
典盘应用
嗥个表格的连接查询
完成某个特定的较复杂的任务
可以完成比较复衆的任务,可以出现在sulwct语句中
类似与C语言中的函数。
编写一个存储过程,在sc表统计每个学生的平均分
createprocavergrade//创建存储过程as
begin
selectsno,avg(grade)平均分
fromsc
groupbysno
end
execavergrade//执行存储过程
dropprocedureavergrade//删除存储过程
对练习1的存储过程进行改进,添加一个输入参数——学号,使存储过程能根据输入的学号计算该学生的平均分
createprocavergrade
@snochar(10)
as
begin
selectsno,avg(grade)平均分
fromsc
wheresno=@sno
groupbysno
end
execavergrade'04'
dropprocedureavergrade
在练习2的基础上添加一个输出参数——平均分,计算指定学号的平均分,然后将平均分输出。
createprocavergrade
@snochar(10),
@savingintout
as
begin
select@saving=avg(grade)
fromsc
wheresno=@sno
groupbysno
end
declare@avgint
set@avg=0
execavergrade'02',@avgoutselect@avg平均分
dropprocedureavergrade
3.函数。
函数必须返回指定类型,可以返回表,有输入参数。
创建成绩转换函数,实现百分制成绩与优、良、中、及格、不及格五个等级的换算
CREATEFUNCTIONgrade_trans(@gradeFLOAT)
RETURNSCHAR(16)
AS
BEGIN
DECLARE@classCHAR(16)
SELECT@class=CASE
WHEN@gradeISNULLTHEN'还没参加考试'
WHEN@grade<60THEN'不及格'
WHEN@grade>=60and@grade<70THEN'及格'
WHEN@grade>=70and@grade<80THEN'中等'
WHEN@grade>=80and@grade<90THEN'良好'
ELSE'优秀!
'
END
RETURN(@class)
END
selectdbo.grade_trans(88)
查询某个院系所有学生所选的每门课的平均成绩。
createfunctionaver(@pchar(10))returnstable
as
return(
selectcno课程号,avg(grade)平均成绩
fromstudent,sc
wherestudent.sno=sc.snoandsdept=@p
groupbycno
)
select*fromdbo.aver('cs')
dropfunctionaver
求某个院系选修了某门课的学生人数。
createfunctionpeople(@p0char(10),@p1char(4))returnsint
as
begin
declare@renshuint
select@renshu=(
selectCOUN(T*)选课人数
fromstudent,sc
wherestudent.sno=sc.snoandcno=@p1andsdept=@p0
)
return@renshu
endselectdbo.people('cs','2')dropfunctionpeople
4.触发器。
CreatetriggerXXX
Ontable
[for/after/insteadof]
Insert,delete,update
As触发器实际需要触发内容
For:
用法同after
After:
执行完sql语句之后进行检查,检查不符合条件的话回滚rollbackafter触发器只能在表上指定。
Insteadof:
指定触发器时代替SQL语句执行的,其优先级高于触发语句的操
作。
例:
为student表建立触发器T1,当插入或更新表中的数据时,保证所操作的记录的sage值大于0
createtriggerT1
onstudent
afterinsert,update
as
begin
declare@sageint
select@sage=inserted.sagefrominserted
if(@sage<0)
begin
print'年龄错误'
rollbacktransaction
end
end
updatestudent
setsage=38
wheresno='01'
insertintostudent(sno,sname,ssex,sage,sdept)
values('2007011',‘张三',‘男',55,'ma')
为student表建立触发器T2,禁止删除编号为“0001”的学生
insertintostudent(sno,sname,ssex,sage,sdept)
values('0001','傻大个','男',19,'is')
createtriggerT2
onstudent
afterdelete
as
begin
declare@snochar(10)
select@sno=deleted.snofromdeleted
if(@sno='0001')
begin
print'禁止删除学号0001信息'
rollbacktransaction
end
end
deletestudent
wheresno='0001'
droptriggerT2
第十章
1事务。
是一系列的数据库操作,是数据库应用程序的基本逻辑单元。
是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割
的工作单元。
2.事务的四个特性。
原子性:
事务是数据库的逻辑工作单位,事务总包括的诸操作要么全做,要么全不做。
一致性:
数据库只包含成功事务提交的结果,就说数据库处于一致性状态。