还剩71页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
数据库系统概论笔记数据():就是数据库中存储的基本对象Data数据的定义描述事物的符号记录数据的种类文字、图形、图象、声音等数据的特点数据与其语义就是不可分的数据库(简称)就是足期储存在计算机内、有组织的、可共享的大量数据集合Database,DB:数据库的特征■数据按一定的数据模型组织、描述与储存■可为各种用户共享■冗余度较小■数据独立性较高■易扩展数据库管理系统(简称):就是位于用户与操作系统之间的一层数据管Database ManagementSystem,DBMS理软件的用途科学地组织与存储数据、高效地获取与维护数据DBMS的主要功能DBMS数据库的运行管理保证数据的安全性、完整性、多用户对数据的并发使用发生故障后的系统恢复■数据库的建立与维护功能(实用程序)数据库数据批量装载数据库转储介质故障恢复数据库的重组织性能监视等数据库系统(简称)就是指在计算机系统中引入数据库后的系统构成Database System,DBS■数据库系统的构成■由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(与用户)构成■数据管理■对数据进行分类、组织、编码、存储、检索与维护,就是数据处理的中心问题数据模型这个工具来抽象、表示与处理现实世界中的数据与信息■数据模型应满足三方面要求■能比较真实地模拟现实世界■容易为人所理解■便于在计算机上实现■数据模型分成两个不同的层次⑴概念模型也称信息模型,它就是按用户的观点来对数据与信息建模⑵数据模型主要包括网状模型、层次模型、关系模型等,它就是按计算机系统的观点对数据建模■客观对象的抽象过程---两步抽象■现实世界中的客观对象抽象为概念模型;■把概念模型转换为某一支持的数据模型DBMS■数据结构于中每个元组在上的值必须为R F•或者取空值的每个属性值均为空值F•或者等于中某个元组的主码值S、、用户定义的完整性233■用户定义的完整性就是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求■关系模型应提供定义与检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能运算,操作Operation算子Operator操作数Operand、关系代数1一种抽象的查询语言用对关系的运算来表达查询.关系代数运算的三个要素2运算对象关系运算结果关系运算符四类关系代数运算符集合并比较大于U运运算2大于等于小于差算符符小于等于等于不交n等于X广义笛卡尔积专门的关系选择投逻辑运算符非与或影连接运算符除关系代数运算的分类传统的集合运算
4.并、差、交、广义笛卡尔积专门的关系运算选择、投影、连接、除表示记号
5.lR,teR,t[Ai]设关系模式为RAl,A2,•••,An它的一个关系设为表示就是的一个元组R t£R tR则表示元组中相应于属性的一个分量t[Ai]t Ai⑵A,t[A],A若其中就是中的一部分,则称为属性列或域列A={Ail,Ai2,,Aik},Ail,Ai2,.Aik Al,A2,,An A表示元组在属性列上诸分量的集合贝表示中去掉t[A]=t[Ail],[Ai2],…,t[Aik]t AA U{Al,A2,,An}后剩余的属性组{Ail,Ai2,…,Aik}■3tr ts为目关系,为目关系称为元组的连接它就是一个列的元组,前个分R nS mtr£R,tseS,tr tsn+m n量为中的一个元组,后个分量为中的一个元组R n m Sm■象集4Zx给定一个关系与为属性组当时,在中的象集为RX,Z,X Zt[X]=x x R ImagesSetZx={t[Z]|t eR,t[X]=x它表示中属性组上值为的诸元组在上分量的集合R Xx Z、并1Union与■R S■具有相同的目即两个关系都有个属性n n■相应的属性取自同一个域■RUS■仍为目关系,由属于或属于的元组组成n R SRUS={tteRVteS}与■R S■具有相同的目n■相应的属性取自同一个域■R-S■仍为目关系,由属于而不属于的所有元组组成n R SR.S={tt RAteS}金与■R S■具有相同的目n■相应的属性取自同一个域■RAS■仍为目关系,由既属于又属于的元组组成n R SRnS={tteRAteS}RCS=R-R-S、广义笛卡尔积4Extended Cartesian Product■R目关系,个元组■n kl■s目关系,个元组■m k2■RxS■歹列的元组的集合Un+m■元组的前列就是关系的一个元组n R■后列就是关系的一个元组m S■行个元组klXk2■RXS={tr ts|tr£R Ats£S}专门的关系运算选择1Selection选择又称为限制■1Restriction选择运算符的含义■2■在关系中选择满足给定条件的诸元组RoF R={tlteRAF t-真}选择条件,就是一个逻辑表达式,基本形式为■F[-]X10Yl[][p[-]X2eY2[]]...■:比较运算符,=或02,,W,◊等属性名、常量、简单函数;属性名也可以用它的序号来代替;XI,Y1■逻辑运算符人或V■[]:表示任选项■…表示上述格式可以重复下去选择运算就是从行的角度进行的运算
3、投影2Projection投影运算符的含义■1■从中选择出若干属性列组成新的关系R7AR={t[A]|t ER}中的属性列A:R投影操作主要就是从列的角度进行运算2■但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组避免重复行、连接3Join连接也称为连接■1连接运算的含义■2■从两个关系的笛卡尔积中选取属性间满足一定条件的元组S={|treRAts£SAtr[A]ts[B]}R与分别为与上度数相等且可比的属性组■A B:R S:比较运算符■9■连接运算从与的广义笛卡尔积中选取关系在属性组上的值与关系R SRXS RA S在属性组上值满足比较关系的元组B两类常用连接运算■3■等值连接equijoin■什么就是等值连接为“二”的连接运算称为等值连接■0■等值连接的含义■从关系与的广义笛卡尔积中选取、属性值相等的那些元组,即等值R S A B连接为RS={|tr£RAts£SAtr[A]=ts[B]}一般的连接操作就是从行的角度进行运算4自然连接还需要取消重复列,所以就是同时从行与列的角度进行运算象集4Z给定一个关系与为属性组当时,在中的象集为RX,Z,X Zt[X]=x xR ImagesSetZx={t[Z]|t ER,t[X]=x}它表示中属性组上值为的诸元组在上分量的集合R Xx Z、除4Division给定关系与其中为属性组RX,Y SY,Z,X,Y,Z中的与中的可以有不同的属性名,但必须出自相同的域集与的除运算得到一个新的关系R YS YR SPX,P就是R中满足下列条件的元组在X属性列上的投影:元组叔上分量值x的象集Yx包含S在Y上投影的集合R^S={r[X]|tr eRAiYScYx}在中的象集,Yx:xRx=tr[X]除操作就是同时从行与列角度进行运算2第三章关系数据库标准语言SQL、概述31SQL的特点■SQL■、综合统一1■、高度非过程化2■、面向集合的操作方式3■、以同一种语法结构提供两种使用方法4■、语言简洁,易学易用
5、语言简捷,易学易用
5、2数据定表3J SQLi吾言的动词_S Q
3、数义据庭格式丽蔬的数握定义语句
3、21CRE数名据操象类型[〈孙费生约成人>删除修改«r[,例名数表居类打取税性约束条件X[IF EDRDP蛰数线据控性的束条件甲,L,CFN REVOKETABLE ALTER TABLE■禳名所要定N矍苯表的名字DROFVIEW〈歹名〉一组成该装的客个属性列)ij广星耳咧的完整性性约应属■寥级先整cREATE约束条件涉及在INDEX■常用完整性约束■主码约束PRIMARYUNIQUE■唯一性约束:NOT NULL■非空值约束:功能动词L■参照完整性约束
三、删除基本表SELECT〈表名〉;DROP TABLE基本表删除数据、表上的索引都删除表上的视图往往仍然保留,但无法引用删除基本表时,系统会从数据字典中删去有关该基本表及其索引的描述标准中没有,认为表建立后就永久存在
二、修改基本表〈表名〉ALTER TABLEKEY〈新列名X数据类型〉[完整性约束]][ADD〈完整性约束名〉][DROP〈列名X数据类型)];[MODIFY■〈表名〉要修改的基本表■子句增加新列与新的完整性约束条件ADD■子句删除指定的完整性约束条件DROP■子句用于修改列名与数据类型MODIFYALTER TABLEStudent ADDScome DATE;不论基本表中原来就是否已有数据,新增加的列一律为空值■删除属性列直接/间接删除把表中要保留的列及其内容复制到一个新表中■删除原表■再将新表重命名为原表名直接删除属性列(新)例ALTER TABLEStudent DropScome;ALTER TABLEStudent MODIFYSage SMALLINT;■注修改原有的列定义有可能会破坏已有数据建立与删除索引■建立索引就是加快查询速度的有效手段■建立索引或表的属主(即建立表的人)根据需要建立■DBA■有些自动建立以下列上的索引DBMS■PRIMARY KEY■UNIQUE■维护索引自动完成■DBMS■使用索引自动选择就是否使用索引以及使用哪些索引■DBMS
一、建立索引■语句格式〈索引名〉〈表名〉(〈列名〉[<次序〉][,<列名〉CREATE[UNIQUE][CLUSTER]INDEX ON[<次序用〈表名》指定要建索引的基本表名字■索引可以建立在该表的一列或多列上,各列名之间用逗号分隔■用〈次序>指定索引值的排列次序,升序降序缺省值■ASC,DESCo ASC表明此索引的每一个索引值只对应唯一的数据记录■UNIQUE表示要建立的索引就是聚簇索引■CLUSTER■唯一值索引■对于已含重复值的属性列不能建索引UNIQUE■对某个列建立索引后,插入新记录时会自动检查新记录在该列上就是否取UNIQUE DBMS了重复值这相当于增加了一个约束UNIQUE■聚簇索引■建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放也即聚簇索引的索引项顺序与表中记录的物理顺序一致例()CREATE CLUSTERINDEX StusnameON Student Sname;在表的(姓名)列上建立一个聚簇索引,而Student Sname且表中的记录将按照值的升序存放StudentSname■在一个基本表上最多只能建立一个聚簇索引■聚簇索引的用途对于某些类型的查询,可以提高查询效率■聚簇索引的适用范围■很少对基表进行增删操作■很少对其中的变长列进行修改操作
二、删除索引〈索引名〉;DROPINDEX■删除索引时,系统会从数据字典中删去有关该索引的描述、查询33■语句格式目标列表达式》SELECT[ALL DISTINCT]〈目标列表达式L〈表名或视图名》[,〈表名或视图名》]…FROM[WHERE〈条件表达式]〈歹名〉[〈条件表达式〉]][GROUP BYU1HA VING〈歹名[ORDER BYU2[ASC|DESC]];子句指定要显示的属性列■SELECT子句指定查询对象(基本表或视图)■FROM子句指定查询条件■MERE子句对查询结果按指定列的值分组,该属性列值相等的元组为一个组通■GROUP BY常会在每组中作用集函数短语筛选出只有满足指定条件的组■HAVING子句对查询结果表按指定列值的升序或降序排序■ORDER BY、、单表查询332查询仅涉及一个表,就是一种最简单的查询操作
一、选择表中的若干列
二、选择表中的若干元组
三、对查询结果排序
四、使用集函数
五、对查询结果分组查询经过计算的值子句的目标列表达式》为表达式SELECT■算术表达式■字符串常量■函数■列别名■等
二、选择表中的若干元组■消除取值重复的行■查询满足条件的元组、消除取值重复的行1■在子句中使用短语SELECT DISTINCT假设表中有下列数据SC、查询满足条件的元组2子句常用的查询条件WHERE()比较大小1在子句的〈比较条件》中使用比较运算符WHERE■二,,,=,=,!=或,!,!〈,◊■逻辑运算符+比较运算符NOT⑵确定范围■使用谓词BETWEEN...AND...AND・・・NOT BETWEEN⑶确定集合使用谓词值表〉,值表,IN NOTIN〈值表》:用逗号分隔的一组取值⑷字符串匹配〈匹配串〉’〈换码字符》]■[NOT]LIKE[ESCAP E〈匹配串〉:指定匹配模板匹配模板固定字符串或含通配符的字符串当匹配模板为固定字符串时:可以用工运算符取代谓词LIKE用!二或运算符取代谓词NOT LIKE通配符%(百分号)代表任意长度(长度可以为)的字符串♦0■例表示以开头,以结尾的任意长度的字符串如等都满足该匹配串a%b ab acb,addgb,ab_(下横线)代表任意单个字符◊例表示以开头,以结尾的长度为的任意字符串如等都满足该匹配串查■a_b ab3acb,afb询课程向课程号与学分DB_DesignSELECT Cno,CcreditFROM CourseWHERECname LIKEDB\_DesignESCAPE⑸涉及空值的查询使用谓词或■ISNULL ISN0TNULL不能用〃=〃代替■〃IS NULL”NULL(
⑥)多重条件查询用逻辑运算符与来联结多个查询条件AND OR的优先级高于■AND OR■可以用括号改变优先级可用来实现多种其她谓词■[NOT]IN■[NOT]BETWEEN...AND
三、对查询结果排序使用子句ORDER BY可以按一个或多个属性列排序■升序降序缺省值为升序■ASC;DESC;当排序列含空值时排序列为空值的元组最后显示■ASC:排序列为空值的元组最先显示■DESC:
四、使用集函数类主要集函数5■计数([)COUNT DISTINCT|ALL1*([]〈歹名〉)COUNT DISTINCT|ALL U■计算总与([]〈列名〉)SUM DISTINCTIALL■计算平均值([]〈列名〉)AVG DISTINCTIALL求最大值([<列名>)M AXDISTINCTJALL1求最小值([〈列名»MIN DISTINCTIALL!短语在计算时要取消指定列中的重复值-DISTINCT短语不取消重复值-ALL一为缺省值ALL
五、对查询结果分组使用子句分组GROUP BY细化集函数的作用对象■未对查询结果分组,集函数将作用于整个查询结果对查询结果分组后,集函数将分别作用于每个组子句的作用对象就是查询的中间结果表■GROUP BY分组方法按指定的一列或多列值分组,值相等的为一组■使用子句后,子句的列名列表中只能出现分组属性与集函数■GROUPBY SELECT使用短语筛选最终输出结果HAVING只有满足短语指定条件的组才输出■HAVING短语与子句的区别作用对象不同■HAVING WHERE子句作用于基表或视图,从中选择满足条件的元组■WHERE短语作用于组,从中选择满足条件的组■HAVING连接查询同时涉及多个表的查询称为连接查询用来连接两个表的条件称为连接条件或连接谓词一般格式[〈表名>、列名比较运算符》[〈表名>、]<列名>1IX22比较运算符=、>、<、>=、<=>!=■卜表名>、卜列名[〈表名〉、卜列名>[<表名>、列名>1^BETWEEN22AND23■连接字段■连接谓词中的列名称为连接字段■连接条件中的各连接字段类型必须就是可比的,但不必就是相同的连接操作的执行过程■嵌套循环法NESTED-LOOP■首先在表中找到第一个元组,然后从头开始扫描表逐一查找满足连接件的元组,找到后12,就将表中的第一个元组与该元组拼接起来,形成结果表中一个元组1■表全部查找完后,再找表中第二个元组,然后再从头开始扫描表逐一查找满足连接条212,件的元组,找到后就将表中的第二个元组与该元组拼接起来,形成结果表中一个元组1■重复上述操作,直到表中的全部元组都处理完毕1排序合并法SORT-MERGE常用于二连接■首先按连接属性对表与表排序12■对表的第一个元组,从头开始扫描表顺序查找满足连接条件的元组,找到后就将表中12,1的第一个元组与该元组拼接起来,形成结果表中一个元组当遇到表中第一条大于表21连接字段值的元组时,对表的查询不再继续2■找到表的第二条元组,然后从刚才的中断点处继续顺序扫描表查找满足连接条件的元12,组,找到后就将表中的第一个元组与该元组拼接起来,形成结果表中一个元组直接遇1到表中大于表连接字段值的元组时,对表的查询不再继续212■重复上述操作,直到表或表中的全部元组都处理完毕为止12索引连接INDEX-JOIN■对表按连接字段建立索引2■对表中的每个元组,依次根据其连接字段值查询表的索引,从中找到满足条件的元组,找12到后就将表中的第一个元组与该元组拼接起来,形成结果表中一个元组1中连接查询的主要类型SQL■广义笛卡尔积■等值连接含自然连接■非等值连接查询■自身连接查询■外连接查询■复合条件连接查询
一、广义笛卡尔积■不带连接谓词的连接■很少使用
二、等值与非等值连接查询等值连接■连接运算符为二的连接操作■[〈表名>、列名〉二[〈表名>、卜列名〉1122■任何子句中引用表与表中同名属性时,都必须加表名前缀引用唯一属性名时可以加12也可以省略表名前缀自然连接■等值连接的一种特殊情况,把目标列中重复的属性列去掉非等值连接查询连接运算符不就是二的连接操作
三、自身连接■一个表与其自己进行连接,称为表的自身连接■需要给表起别名以示区别■由于所有属性名都就是同名属性,因此必须使用别名前缀
四、外连接Outer Join■外连接与普通连接的区别■普通连接操作只输出满足连接条件的元组■外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出■在表名后面加外连接操作符*或+指定非主体表■非主体表有一“万能”的虚行,该行全部由空值组成■虚行可以与主体表中所有不满足连接条件的元组进行连接■由于虚行各列全部就是空值,因此与虚行连接的结果中,来自非主体表的属性值全部就是空值■左外连接■外连接符出现在连接条件的左边■右外连接■外连接符出现在连接条件的右边
五、复合条件连接子句中含多个连接条件时,称为复合条件连接WHERE■嵌套查询概述■一个语句称为一个查询块SELECT-FROM-WHERE■将一个查询块嵌套在另一个查询块的子句或短语的条件中的查询称为W HEREHAVING嵌套查询■子查询的限制■不能使用子句ORDER BY■层层嵌套方式反映了语言的结构化SQL■有些嵌套查询可以用连接运算替代■不相关子查询子查询的查询条件不依赖于父查询■相关子查询子查询的查询条件依赖于父查询■不相关子查询就是由里向外逐层处理即每个子查询在上一级查询处理之前求解,子查询的结果用于建立其父查询的查找条件■相关子查询■首先取外层查询中表的第一个元组,根据它与内层查询相关的属性值处理内层查询,若子句返回值为真,则取此元组放入结果表;WHERE■然后再取外层表的下一个元组;■重复这一过程,直至外层表全部检查完为止引出子查询的谓词■带有谓词的子查询IN■带有比较运算符的子查询■带有或谓词的子查询ANY ALL■对象类型的集合数据结构就是对系统静态特性的描述■两类对象■与数据类型、内容、性质有关的对象■与数据之间联系有关的对象■数据操作■对数据库中各种对象型的实例值允许执行的操作及有关的操作规则■数据操作的类型■检索■更新包括插入、删除、修改■数据模型对操作的定义■操作的确切含义■操作符号■操作规则如优先级实现操作的语言■数据操作就是对系统动态特性的描述■数据模型对约束条件的定义■反映与规定本数据模型必须遵守的基本的通用的完整性约束条件提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件信息世界中的基本概念⑴实体Entity客观存在并可相互区别的事物称为实体属性2Attribute实体所具有的某一特性称为属性一个实体可以由若干个属性来刻画码3Key唯一标识实体的属性集称为码域4Domain属性的取值范围称为该属性的域实体型5Entity Type用实体名及其属性名集合来抽象与刻画同类实体称为实体型实体集6Entity Set同型实体的集合称为实体集联系Relationship实体型间联系两个实体型一对一联系1:1三个实体型一个实体一对多联系多l n型对多联系m:n两个实体型间的联系■一对一联系现实世界中事物内部以及事物之间的联系在信息世界中反映为实体内部的联系与实体之间的联系■带有谓词的子查询EXISTS
一、带有谓词的子查询IN
二、带有比较运算符的子查询■当能确切知道内层查询返回单值时,可用比较运算符(,〈=,〉=,二,!=或).◊■与或谓词配合使用ANY ALL
三、带有或谓词的子查询谓词语义ANY ALL任意一个值■ANY:所有值■ALL:需要配合使用比较运算符大于子查询结果中的某个值ANY大于子查询结果中的所有值ALL小于子查询结果中的某个值ANY小于子查询结果中的所有值ALL大于等于子查询结果中的某个值=ANY大于等于子查询结果中的所有值=ALL〈二小于等于子查询结果中的某个值ANY小于等于子查询结果中的所有值v=ALL等于子查询结果中的某个值=ANY等于子查询结果中的所有值(通常没有实际意义)=ALL!=(或)不等于子查询结果中的某个值◊ANY!=(或)不等于子查询结果中的任何一个值◊ALL
四、带有谓词的子查询EXISTS、谓词1EXISTS、谓词2NOTEXISTS、不同形式的查询间的替换
3、相关子查询的效率
4、用实现全称量词5EXISTS/NOT EXISTS、用实现逻辑蕴函6EXISTS/NOT EXISTS、谓词•1EXISTS-存在量词3-带有谓词的子查询不返回任何数据,只产生逻辑真值〃或逻辑假值〃EXISTS true”false”・若内层查询结果非空,则返回真值・若内层查询结果为空,则返回假值-由引出的子查询,其目标列表达式通常都用*,因为带的子查询只返回真值EXISTS EXISTS或假值,给出列名无实际意义、谓词•2NOT EXISTS、不同形式的查询间的替换3一些带或谓词的子查询不能被其她形式的子查询等价替换EXISTS NOT EXISTS所有带谓词、比较运算符、与谓词的子查询都能用带谓词的子查询等价替换1N ANYALL EXISTS、用实现全称量词(难点)5EXISTS/NOT EXISTS语言中没有全称量词()■SQL VFor all■可以把带有全称量词的谓词转换为等价的带有存在量词的谓词(Vx)P、3x(i P))、用实现逻辑蕴函难点6EXISTS/NOTEXISTS语言中没有蕴函逻辑运算■SQL Implication■可以利用谓词演算将逻辑蕴函谓词等价转换为:pVq鱼杏询Q QC A需准直能支持的集合操作种类QL并操作一般商用数据库支持的集合操作种类UNION并操作UNION交操作INTERSECT差操作MINUS并操作
1.■形式〈查询块〉UNION〈查询块》■参加操作的各结果表的列数必须相同;对应项的数据类型也必须相同UNION交操作
2.标准中没有提供集合交操作,但可用其她方法间接实现SQL差操作
3.、对集合操作结果的排序4■子句只能用于对最终查询结果排序,不能对中间结果排序ORDER BY■任何情况下,子句只能出现在最后ORDER BY■对集合操作结果排序时,子句中用数字指定排序属性ORDER BY、数据更新
34、、插入数据341■两种插入数据方式■插入单个元组■插入子查询结果、插入单个元组1■语句格式INSERT〈表名[属性列〈属性列INTO1[,
2.…・]〈常量常量VALUES1[,2]■功能将新元组插入指定表中句■INT0T■指定要插入数据的表名及属性列■属性列的顺序可与表定义中的顺序不一致■没有指定属性列表示要插入的就是一条完整的元组,且属性列属性与表定义中的顺序一致■指定部分属性列插入的元组在其余属性列上取空值子句■VALUES■提供的值必须与子句匹配INTO值的个数值的类型、插入子查询结果2■语句格式INSERT〈表名[〈属性列〈属性列INTO1[,
2...]子查询;■功能将子查询结果插入指定表中INSERTINTO DeptageSdept,Avgage SELECTSdept,AVGSage FROMStudent GROUP BY Sdept;子句与插入单条元组类似■INTO■指定要插入数据的表名及属性列■属性列的顺序可与表定义中的顺序不一致■没有指定属性列表示要插入的就是一条完整的元组■指定部分属性列插入的元组在其余属性列上取空值■子查询子句目标列必须与子句匹配■SELECT INTO■值的个数■值的类型、、修改数据342■语句格式〈表名〉UPDATESET列名=表达式[,列名=表达式].・・・〈条件];[WHERE■功能修改指定表中满足子句条件的元组WHERE■三种修改方式■修改某一个元组的值■修改多个元组的值■带子查询的修改语句UPDATE SCSETGrade=0WHERE CS=SELETE SdeptFROMStudentWHERE StudentSno=SCSno;■子句SET指定修改方式要修改的列修改后取值■WHERE子句指定要修改的元组缺省表示要修改表中的所有元组在执行修改语句时会检查修改操作DBMS就是否破坏表上已定义的完整性规则■实体完整性■主码不允许修改用户定义的完整性■NOTNULL约束■约束UNIQUE■值域约束DELETE〈表名>FROM[WHERE〈条件>];-功能删除指定表中满足子句条件的元组♦WHERE子句-WHERE指定要删除的元组♦缺省表示要修改表中的所有元组♦-三种删除方式删除某一个元组的值♦删除多个元组的值♦带子查询的删除语句♦在执行插入语句时会检查所插元组DBMS就是否破坏表上已定义的完整性规则-参照完整性•不允许删除•级联删除更新数据与数据一致性在执行插入、删除、更新语句时必DBMS须保证数据库一致性・必须有事务的概念与原子性・完整性检查与保证、视图35视图的特点■虚表,就是从一个或几个基本表(或视图)导出的表■只存放视图的定义,不会出现数据冗余■基表中的数据发生变化,从视图中查询出的数据也随之改变基于视图的操作■查询■删除■受限更新■定义基于该视图的新视图、建立视图1■语句格式CREATE VIEW〈视图名>[〈列名>L〈列名>]・・・.]〈子查询》AS[WITH CHECKOPTION];执行语句时只就是把DBMS CREATE VIEW视图的定义存入数据字典,并不执行其中的语句SELECT在对视图查询时,按视图的定义从基本表中将数据查出组成视图的属性列名全部省略或全部指定■省略由子查询中目标列中的诸字段组成SELECT■明确指定视图的所有列名⑴某个目标列就是集函数或列表达式目标列为*2多表连接时选出了几个同名列作为视图的字段3需要在视图中为某个列启用新的更合适的名字4■WITH CHECKOPTION透过视图进行增删改操作时,不得破坏视图定义中的谓词条件即子查询中的条件表达式带表达式的视图定义一个反映学生出生年份的视图CREATEVIEWBT_SSno,Sname,SbirthASSELECT Sno,Sname,2000-SageFROM Student设置一些派生属性列,也称为虚拟列一Sbirth带表达式的视图必须明确定义组成视图的各个属性列名■一类不易扩充的视图■以方式创建的视图可扩充性差,应尽可能避免SELECT*、删除视图2■DROP VIEW〈视图名>;■该语句从数据字典中删除指定的视图定义■由该视图导出的其她视图定义仍在数据字典中,但已不能使用,必须显式删除■删除基表时,由该基表导出的所有视图定义都必须显式删除、、查询视图352■从用户角度查询视图与查询基本表相同实现视图查询的方法■DBMS■实体化视图View Materialization■有效性检查检查所查询的视图就是否存在■执行视图定义,将视图临时实体化,生成临时表■查询视图转换为查询临时表■查询完毕删除被实体化的视图(临时表)■视图消解法(View Resolution)■进行有效性检查,检查查询的表、视图等就是否存在如果存在,则从数据字典中取出视图的定义■把视图定义中的子查询与用户的查询结合起来,转换成等价的对基本表的查询■执行修正后的查询■视图实体化法■视图消解法、、更新视图353■用户角度更新视图与更新基本表相同实现视图更新的方法■DBMS■视图实体化法()View Materialization■视图消解法(View Resolution)■指定子句后WITH CHECKOPTION在更新视图时会进行检查,防止用户通过视图对不属于视图范围内的基本表数据进行更新更新DBMS视图的限制■一些视图就是不可更新的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更新(对两类方法均如此)■允许对行列子集视图进行更新■对其她类型视图的更新不同系统有不同限制对视图更新的限制DB2⑴若视图就是由两个以上基本表导出的,则此视图不允许更新⑵若视图的字段来自字段表达式或常数,则不允许对此视图执行与操作,但允许执行INSERT UPDATE操作DELETE若视图的字段来自集函数,则此视图不允许更新⑷若视图定义中含有子句,则此视图不允许更新GROUPBY⑸若视图定义中含有短语,则此视图不允许更新DISTINCT)若视图定义中有嵌套查询,并且内层查询的子句中涉及的表也就是导出该视图的基本表,则此视6FROM图不允许更新⑺一个不允许更新的视图上定义的视图也不允许更新视图对重构数据库提供了一定程度的逻辑独立性■物理独立性与逻辑独立性的概念■视图在一定程度上保证了数据的逻辑独立性■视图只能在一定程度上提供数据的逻辑独立性■由于对视图的更新就是有条件的,因此应用程序中修改数据的语句可能仍会因基本表结构的改变而改变视图能够对机密数据提供安全保护对不同用户定义不同视图,使每个用户只能瞧到她有权瞧到的数据■通过对关键数据定义操作时间限制■WITH CHECKOPTION、数据控制
36、、授权■
361、、收回权限■362数据控制亦称为数据保护,包括数据的■安全性控制■完整性控制■并发控制■恢复语言的数据控制功能SQL语言提供了数据控制功能,能够在一定程度上保证数据库中数据的完全性、完整性,并提供了一定的SQL并发控制及恢复能力、完整性1■数据库的完整性就是指数据库中数据的正确性与相容性语言定义完整性约束条件SQL语句CREATE TABLE语句ALTERTABLE■码■取值唯一的列■参照完整性■其她约束条件、并发控制2■并发控制当多个用户并发地对数据库进行操作时,对她们加以控制、协调,以保证并发操作正确执行,保持数据库的一致性■语言并发控制能力SQL提供事务、事务开始、事务结束、提交等概念、恢复3■恢复当发生各种类型的故障导致数据库处于不一致状态时,将数据库恢复到一致状态的功能■语言恢复功能SQL提供事务回滚、重做等概念(、)UNDO REDO、安全性4■安全性保护数据库,防止不合法的使用所造成的数据泄露与破坏■保证数据安全性的主要措施存取控制控制用户只能存取她有权存取的数据规定不同用户对于不同数据对象所允许执行的操作实现数据安全性保护的过程DBMS■用户或把授权决定告知系统DBA■的与SQL GRANT REVOKE■把授权的结果存入数据字典DBMS■当用户提出操作请求时,根据授权定义进行检查,以决定就是否执行操作请求DBMS、、授权361■语句的一般格式GRANT〈权限>[,<权限>]、、、GRANT〈对象类型X对象名》][ON〈用户》[,<用户>]、、TO[WITH GRANTOPTION];■谁定义?与表的建立者(即表的属主)DBA功能将对指定操作对象的指定操作权限授予指定的用户■REVOKE对、象L对象类型操作权限2)用户的权限1ABLESELECT,INSERT,(CREATET建表的权限属于授>UPDATE ABLA BE-视D B通用启普表或视图vPBAs_基本,I,T属一切操作权限的权限的用CT NSERTJPDATE■接受注拥有对该表或视图的户个具体用基木或多户(全体用SELECT,INSERT,UPDATEPUBLIC户)DELETE ALTER,INDEX,ALL PRIVIEGES⑴操作权限叫!子句⑷朋定C了咫邺H1©Wr OPTION子句获得某种权限的用户还可以把这种权限再授予别的用户没有指定子句■WITH GRANTOPTION获得某种权限的用户只能使用该权限,不能传播该权限查询表权限授给用户Student U1GRANT SELECTONTABLE StudentTOUI;把对表与表的全部权限授予用户与Student CourseU2U3GRANTALLPRIVILIGESON TABLEStudent,CourseTO U2,U3;、、收回权限362语句的一般格式为■REVOKE<权限》<权限>]、、、REVOKE L(对象类型X对象名>][ON〈用户><用户>]、、;FROM L,功能从指定用户那里收回对指定对象的指定权限■、嵌入式37SQL语言提供了两种不同的使用方式■SQL■交互式■嵌入式■为什么要引入嵌入式SQL语言就是非过程性语言■SQL■事务处理应用需要高级语言这两种方式细节上有差别,在程序设计的环境下,语句要做某些必要的扩充、、嵌入式SQL371SQL的一般形式■为了区分语句与主语言语句,需要SQL■前缀EXEC SQL■结束标志随主语言的不同而不同■以为主语言的嵌入式语句的一般形式C SQL<语句》;EXEC SQL SQL处理宿主型数据库语言的方法DBMS SQL■预编译■修改与扩充主语言使之能处理语句SQL预编译由的预处理程序对源程序进行扫描,识别出语句
1.DBMS SQL.把它们转换成主语言调用语句,以使主语言编译程序能识别它2最后由主语言的编译程序将整个源程序编译成目标码
3.嵌入语句SQL说明性语句嵌入语句数据定义SQL可执行语句数据控制数据操纵允许出现可执行的高级语言语句的地方,都可以写可执行语句SQL允许出现说明语句的地方,都可以写说明性语句SQL、、嵌入式语句与主语言之间的通信372SQL将嵌入到高级语言中混合编程,程序中会含有两种不同计算模型的语句SQL语句■SQL■描述性的面向集合的语句■负责操纵数据库■高级语言语句■过程性的面向记录的语句■负责控制程序流程工作单元之间的通信方式、通信区1SQL向主语言传递语句的执行状态信息SQL主语言能够据此控制程序流程、主变量2)主语言向语句提供参数1SQL)将语句查询数据库的结果交主语言进一步处理2SQL、游标3解决集合性操作语言与过程性操作语言的不匹配■为什么要使用游标语言与主语言具有不同数据处理方式■SQL语言就是面向集合的,一条语句原则上可以产生或处理多条记录■SQL SQL■主语言就是面向记录的,一组主变量一次只能存放一条记录■仅使用主变量并不能完全满足语句向应用程序输出数据的要求SQL■嵌入式引入了游标的概念,用来协调这两种不同的处理方式SQL■什么就是游标■游标就是系统为用户开设的一个数据缓冲区,存放语句的执行结果SQL■每个游标区都有一个名字■用户可以用语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理■使SQL用游标的步骤、说明游标■
1、打开游标■
2、移动游标指针,然后取当前记录■
3、关闭游标■
4、说明游标1■使用语句DECLARE■语句格式游标名EXEC SQLDECLARECURSOR语句〉;FOR SELECT■功能■就是一条说明性语句,这时并不执行指定的查询操作DBMS SELECT、打开游标2■使用语句OPEN■语句格式〈游标名;EXEC SQLOPEN■功能■打开游标实际上就是执行相应的语句,把所有满足查询条件的记录从指定表SELECT取到缓冲区中■这时游标处于活动状态,指针指向查询结果集中第一条记录之前、移动游标指针,然后取当前记录3■使用语句FETCH■语句格式EXECSQLFETCH[[NEXTIPRIORI〈游标名〉FIRSTILAST]FROM]〈主变量〉卜指示变量》]INTO,■功能■指定方向推动游标指针,然后将缓冲区中的当前记录取出来送至主变量供主语言进一步处理指定推动游标指针的方式■NEXTIPRIORIFIRSTILAST:■向前推进一条记录NEXT:■向回退一条记录PRIOR:■推向第一条记录FIRST:■推向最后一条记录LAST:■缺省值为NEXT■说明主变量必须与语句中的目标列表达式具有一一对应关系■1SELECT语句通常用在一个循环结构中,通过循环执行语句逐条取出结果集中的■2FETCH FETCH行进行处理为进一步方便用户处理数据,现在一些关系数据库管理系统对语句做了扩充,允■3FETCH许用户向任意方向以任意步长移动游标指针、关闭游标4■使用语句CLOSE■语句格式游标名〉;EXECSQL CLOSE■功能■如果对于实体集中的每一个实体,实体集中至多有一个实体与之联系,反之亦然,A B则称实体集与实体集具有一对一联系记为A B1:1■一对多联系■如果对于实粽中的每一个实体,实体集中有个实体与之联系,反之,对于实A Bn n20体集中的每一个实体,实体集中至多只有一个实体与之联系,则称实体集与实体B AA集有一对多联系B记为l:n多对多联系m:n■如果对于实体集中的每一个实体,实体集中有个实体与之联系,反之,对于实ABn n20体集中的每一个实体,实体集中也有个实体与之联系,则称实体集与实B Am mKA体具有多对多联系记为B m:n概念模型的表示方法■实体一联系方法方法E-R■用图来描述现实世界的概念模型E-R■方法也称为模型E-R E-R常用数据模型■非关系模型■层次模型Hierarchical Model■网状模型Network Model■数据结构以基本层次联系为基本单位基本层次联系两个记录以及它们之间的一对多包括一对一的联系关系模型Relational Model■数据结构表■面向对象模型Object OrientedModel■数据结构对象■层次模型满足下面两个条件的基本层次联系的集合为层次模型、有且只有一个结点没有双亲结点,这个结点称为根1结点、根以外的其它结点有且只有一个双亲结点2■表示方法实体型用记录类型描述每个结点表示一个记录类型属性用字段描述每个记录类型可包含若干个字段联系用结点之间的连线表示记录类型之间的一对多的联系网状数据模型的数据结构■网状模型满足下面两个条件的基本层次联系的集合为网状模型、允许一个以上的结点无双亲;
1、一个结点可以有多于一个的双亲2■表示方法与层次数据模型相同实体型用记录类型描述每个结点表示一个记录类型■关闭游标,释放结果集占用的缓冲区及其她资源■说明■游标被关闭后,就不再与原来的查询结果集相联系■被关闭的游标可以再次被打开,与新的查询结果相联系第四章关系系统及其查询优化、关系系统41■能够在一定程度上支持关系模型的数据库管理系统就是关系系统■由于关系模型中并非每一部分都就是同等重要的■并不苛求一个实际的关系系统必须完全支持关系模型■关系数据结构域及域上定义的关系■关系操作■并、交、差、广义笛卡尔积、选择、投影、连接、除等■关系完整性■实体完整性、参照完整性、用户自己定义的完整性一个数据库管理系统可定义为关系系统,当且仅当它至少支持、关系数据库(即关系数据结构)1系统中只有表这种结构、支持选择、投影与(自然)连接运算2对这些运算不要求用户定义任何物理存取路径对关系系统的最低要求、关系系统的查询优化
42、、查询优化概述421■查询优化的必要性■查询优化极大地影响的性能RDBMS■查询优化的可能性■关系数据语言的级别很高,使可以从关系表达式中分析查询语义DBMS■用户不必考虑如何最好地表达查询以获得较好的效率■系统可以比用户程序的优化做得更好()优化器可以从数据字典中获取许多统计信息,而用户程序则难以获得这些信息1⑵如果数据库的物理统计信息改变了,系统可以自动对查询重新优化以选择相适应的执行计划在非关系系统中必须重写程序,而重写程序在实际应用中往往就是不太可能的⑶优化器可以考虑数百种不同的执行计划,而程序员一般只能考虑有限的几种可能性⑷优化器中包括了很多复杂的优化技术■查询优化的总目标选择有效策略,求得给定关系表达式的值■实际系统的查询优化步骤、将查询转换成某种内部表示,通常就是语法树
1、根据一定的等价变换规则把语法树转换成标准2(优化)形式、选择低层的操作算法3对于语法树中的每一个操作■计算各种执行算法的执行代价■选择代价小的执行算法、生成查询计划查询执行方案4■查询计划就是由一系列内部操作组成的、、关系代数等价变换规则424■关系代数表达式等价■指用相同的关系代替两个表达式中相应的关系所得到的结果就是相同的■上面的优化策略大部分都涉及到代数表达式的变换、、优化的一般步骤426把查询转换成某种内部表示
1..代数优化把语法树转换成标准优化形式
2.物理优化选择低层的存取路径
3.生成查询计划,选择代价最小的4第五章关系数据理论
二、关系模式的形式化定义关系模式由五部分组成,即它就是一个五元组RU,D,DOM,F关系名R组成该关系的属性名集合U:属性组中属性所来自的域D:U属性向域的映象集合DOM:F:属性间数据的依赖关系集合
三、什么就是数据依赖、完整性约束的表现形式1■限定属性取值范围■定义属性值间的相互关连主要体现于值的相等与否,这就就是数据依赖,它就是数据库模式设计的关键、数据依赖2■就是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系■就是现实世界属性间相互联系的抽象■就是数据内在的性质■就是语义的体现、数据依赖的类型3■函数依赖简记为Functional Dependency,FD■多值依赖简记为Multivalued Dependency,MVD■其她
四、关系模式的简化表示•关系模式RU,D,DOM,F简化为一个三兀组RU,F•当且仅当上的一个关系满足时称为关系模式的一个关系U rF rRU,F
五、数据依赖对关系模式的影响数据冗余太大
1.■浪费大量的存储空间例每一个系主任的姓名重复出现更新异常
2.Update Anomalies■数据冗余,更新数据时,维护数据完整性代价大例某系更换系主任后,系统必须修改与该系学生有关的每一个元组插入异常
3.Insertion Anomalies■该插的数据插不进去例,如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息存入数据库删除异常
4.DeletionAnomalies■不该删除的数据不得不删原因由存在于模式中的某些数据依赖引起的解决方法通过分解关系模式来消除其中不合适的数据依赖、规范化
52、、函数依赖521
一、函数依赖定义、设就是一个属性集上的关系模式,与就是的子集51RU UX YU若对于的任意一个可能的关系中不可能存在两个元组在上的属性值相等,而在上的属性RU r,r X Y值不等,则称函数确定或函数依赖于记作“X Y”“Y X”,X—Y称为这个函数依赖的决定属性集X DeterminantY=fx、函数依赖不就是指关系模式的某个或某些关系实例满足的约束条件,而就是指的所有关系实例均1R R要满足的约束条件、函数依赖就是语义范畴的概念只能根据数据的语义来确定函数依赖2例如“姓名一年龄”这个函数依赖只有在不允许有同名人的条件下成立、数据库设计者可以对现实世界作强制的规定3
二、平凡函数依赖与非平凡函数依赖在关系模式中,对于的子集与RU UX Y,如果但则称就是非平凡的函数依赖X-Y,YNot cX,X-Y若但则称就是平凡的函数依赖X-Y,YcX,X—Y在关系中,SCSno,Cno,Grade非平凡函数依赖一Sno,Cno Grade平凡函数依赖一Sno,Cno SnoSno,Cno—Cno
三、完全函数依赖与部分函数依赖定义、在关系模式中,如果并且对于的任何一个真子集都有52RU X—Y,X XX1Y,则称Y完全函数依赖于X,记作X fYo若但不完全函数依赖于则称部分函数依赖于记作X-Y,Y x,Y x,X pYo
四、传递函数依赖定义、在关系模式中,如果且则称传递函数依赖于53RU X—Y,Y\—Z,YcX,Y—X,Z X注如果即,则直接依赖于Y-X,X--Y ZX、、码522定义、设为关系模式中的属性或属性组合若则称为的一个侯选码54K RU,F KLU,K RCandidate Key若关系模式有多个候选码,则选定其中的一个做为主码R Primary key■主属性与非主属性■ALLKEY外部码定义、关系模式中属性或属性组并非的码,但就是另一个关系模式的码,则称就是的外55R X R XXR部码也称外码Foreign key、、范式523某一关系模式为第范式,可简记为R nR£nNF、、5242NF■的定义1NF如果一个关系模式的所有属性都就是不可分的基本数据项,则R R£1NF■第一范式就是对关系模式的最起码的要求不满足第一范式的数据库模式不能称为关系数据库⑴插入异常删除异常2⑶数据冗余度大⑷修改复杂■的定义2NF定义、若关系模式并且每一个非主属性都完全函数依赖于的码,则56R£1NF,R R£2NF■的定义3NF定义
5、8关系模式中若不存在这样的码、属性组及非主属性使得一RU,2X Y ZZ\cY,X Y,Y\—X,Y—Z,成立,则称RvU,F£3NF■若则的每一个非主属性既不部分函数依赖于候选码也不传递函数依赖于候选码R£3NF,R■如果R63NF,则R也就是2NF■采用投影分解法将一个的关系分解为多个的关系,可以在一定程度上解决原关系中2NF3NF2NF存在的插入异常、删除异常、数据冗余度大、修改复杂等问题■将一个关系分解为多个的关系后,并不能完全消除关系模式中的各种异常情况与数据冗2NF3NF余、、范式526BC BCNF■定义、设关系模式〈〉£如果对于的每个函数依赖若不属于贝必含有59R U,F1NF,R X-Y,Y X,iJX候选码,那么RWBCNF若RGBCNF■每一个决定属性集因素都包含候选码■中的所有属性主,非主属性都完全函数依赖于码R■证明Re3NF■若Re3NF贝U R不一定WBCNFSTJe3NF■与⑸都可以作为候选码s,J T■、、都就是主属性S TJSTJEBCNF■丁一上丁就是决定属性集,丁不就是候选码解决方法将分解为二个关系模式STJSJ£SJe BCNF,TJT,J e BCNF没有任何属性对码的部分函数依赖与传递函数依赖与的关系3NF BCNF■如果关系模式R£BCNF,必定有R3NF■如果且只有一个候选码,R3NF,R则必、属于R BCNF的关系模式所具有的性质BCNF所有非主属性都完全函数依赖于每个候选码
1.所有主属性都完全函数依赖于每个不包含它的候选码
2.没有任何属性完全函数依赖于非码的任何一组属性
3.、、多值依赖与第四范式5254NF-、多值依赖■定义、510设就是一个属性集上的一个关系模式,、与就是的子集,并且多值RU UX YZ UU-X-Y,依赖一一成立当且仅当对的任一关系在上的每个值对应一组的值,这组值仅仅决定于X YR r;r X,Z YX值而与值无关Z■平凡多值依赖与非平凡的多值依赖■若一—而6,则称X Y,一一为平凡的多值依赖X Y■否则称为非平凡的多值依赖X--Y多值依赖的性质⑴多值依赖具有对称性若一一则其中X Y,X——Z,Z=U-X-Y多值依赖的对称性可以用完全二分图直观地表示出来⑵多值依赖具有传递性若一一一一则一一X Y,YZ,X Z-Y函数依赖就是多值依赖的特殊情况3若则X—Y,X--Yo若一一一一则一一4X Y,X Z,X YUZ⑸若一一则一一X Y,X——Z,X YCZ若一一一一则今一匕6XY,X Z,X-Y-Z,x-z-
二、第四范式4NF■定义、关系模式〉£如果对于的每个非平凡多值依赖丫510RU,F1NF,R X—-Ys X,X都含有候选码,则RW4NFX-Y■如果贝R£4NF,ij ReBCNF不允许有非平凡且非函数依赖的多值依赖允许的就是函数依赖就是非平凡多值依赖第六章数据库设计■数据库设计■数据库设计就是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求信息要求与处理要求■在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统、、数据库与信息系统611■数据库就是信息系统的核心与基础■把信息系统中大量的数据按一定的模型组织起来■提供存储、维护、检索数据的功能■使信息系统可以方便、及时、准确地从数据库中获得所需的信息■数据库就是信息系统的各个部分能否紧密地结合在一起以及如何结合的关键所在■数据库设计就是信息系统开发与建设的重要组成部分、、数据库设计的特点612■数据库建设就是硬件、软件与干件的结合■三分技术,七分管理,十二分基础数据■技术与管理的界面称之为“干件”■数据库设计应该与应用系统设计相结合■结构(数据)设计设计数据库框架或数据库结构■行为(处理)设计设计应用程序、事务处理等■结构与行为分离的设计■传统的软件工程忽视对应用中数据语义的分析与抽象,只要有可能就尽量推迟数据结构设计的决策■早期的数据库设计致力于数据模型与建模方法研究,忽视了对行为的设计数据库设计的基本步骤需求分析阶段
1.■准确了解与分析用户需求(包括数据与处理)■就是整个设计过程的基础,就是最困难、最耗费时间的一步概念结构设计阶段
2.■就是整个数据库设计的关键■通过对用户需求进行综合、归纳与抽象,形成一个独立于具体的概念模型DBMS逻辑结构设计阶段
3.■将概念结构转换为某个所支持的数据模型DBMS■对其进行优化数据库物理设计阶段
4.■为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构与存取方法)数据库实施阶段
5.■运用提供的数据语言、工具及宿主语言,根据逻辑设计与物理设计的结果DBMS■建立数据库■编制与调试应用程序■组织数据入库■并进行试运行数据库运行与维护阶段
6.■数据库应用系统经过试运行后即可投入正式运行■在数据库系统运行过程中必须不断地对其进行评价、调整与修改设计需求数据流图与判定表(判定树)、数据数据字典、全系统中数据项、设计描述系统说明书包括
①概念模型e-新系统要求、方案逻辑结构与概图设计
②反映新系统信息中瞥整型概念结系统结构图构设计(模块结构)关系存储安排方法模块设计物理选择存取路径IPO表设计建立实施Main编写模式程序编码、阶段编译联结、if装入数据运行、新旧系统转换、运行、维护(修正性、适应性能监测、转储/恢复维护性、改善性维护)数据库各级模式的形成过程需求分析阶段综合各个用户的应用需求■概念设计阶段形成独立于机器特点,独立于各个产品的概念模式(图)DBMS E-R■逻辑设计阶段首先将图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库E-R逻辑模式然后根据用户处理的要求、安全性的考虑,在基本表的基础上再建立必要的视图()形成数据的外模式View,■物理设计阶段■根据特点与处理的需要,进行物理存储安排,建立索引,形成数据库内模式DBMS需求分析的重点就是调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性与完整性要求
一、数据字典的用途■数据字典就是各类数据描述的集合■数据字典就是进行详细的数据收集与数据分析所获得的主要结果
二、数据字典的内容■数据字典的内容■数据项■数据结构■数据流■数据存储■处理过程■数据项就是数据的最小组成单位■若干个数据项可以组成一个数据结构■数据字典通过对数据项与数据结构的定义来描述数据流、数据存储的逻辑内容数据项
1.■数据项就是不可再分的数据单位■对数据项的描述数据项描述二{数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其她数据项的逻辑关系}取值范围、与其她数据项的逻辑关系定义了数据的完整性约束条件数据结构
2.■数据结构反映了数据之间的组合关系■一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干个数据项与数据结构混合组成■对数据结构的描述数据结构描述二{数据结构名,含义说明,组成{数据项或数据结构}}.数据流3■数据流就是数据结构在系统内传输的路径■对数据流的描述数据流描述二{数据流名,说明,数据流来源,数据流去向,组成{数据结构},平均流量,高峰期流量}■数据流来源就是说明该数据流来自哪个过程■数据流去向就是说明该数据流将到哪个过程去■平均流量就是指在单位时间(每天、每周、每月等)里的传输次数■高峰期流量则就是指在高峰时期的数据流量数据存储
4.■数据存储就是数据结构停留或保存的地方,也就是数据流的来源与去向之一■对数据存储的描述数据存储描述二{数据存储名,说明,编号,流入的数据流,流出的数据流,组成{数据结构},数据量,存取方式}■流入的数据流指出数据来源■流出的数据流指出数据去向■数据量每次存取多少数据,每天(或每小时、每周等)存取几次等信息■存取方法批处理/联机处理;检索/更新;顺序检索/随机检索处理过程
5.■处理过程的具体处理逻辑一般用判定表或判定树来描述数据字典中只需要描述处理过程的说明性信息■处理过程说明性信息的描述处理过程描述二{处理过程名,说明,输入{数据流},输出{数据流},处理{简要说明}}、概念结构设计63■概念结构设计需求分析阶段描述的用户应用需求就是现实世界的具体需求■将需求分析得到的用户需求抽象为信息结构即概念模型的过程就就是概念结构设计■概念结构就是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定■概念结构设计就是整个数据库设计的关键、、概念结构设计的方法与步骤632■设计概念结构的四类方法■自顶向下■自底向上■逐步扩张■混合策略、、数据抽象与局部视图设计633
一、数据抽象■概念结构就是对现实世界的一种抽象■从实际的人、物、事与概念中抽取所关心的共同特性,忽略非本质的细节■把这些特性用各种概念精确地加以描述■这些概念组成了某种模型■三种常用抽象、分类1Classification■定义某一类概念作为现实世界中一组对象的类型■这些对象具有某些共同的特性与行为■它抽象了对象值与型之间的〃〃的语义is memberof■在模型中,实体型就就是这种抽象E-R、聚集2Aggregation■定义某一类型的组成成分■它抽象了对象内部类型与成分之间的语义“is partof■在模型中若干属性的聚集组成了实体型,就就是这种抽象E-R、概括3Generalization■定义类型之间的一种子集联系■它抽象了类型之间的〃〃的语义is subsetof■概括有一个很重要的性质继承性子类继承超类上定义的所有抽象设计分图的步骤E-R选择局部应用
1.逐一设计分图
2.E-R■一般原则■属性不能再具有需要描述的性质即属性必须就是不可分的数据项,不能再由另一些属性组成■属性不能与其她实体具有联系联系只发生在实体之间■符合上述两条特性的事物一般作为属性对待■为了简化图的处置,现实世界中的事物凡能够作为属性对待的,应尽量作为属性E-R■集成局部图的步骤E-R、合并1属性冲突L■两类属性冲突■属性域冲突属性值的类型、取值范围或取值集合不同■属性取值单位冲突命名冲突
2.同名异义不同意义的对象在不同的局部应用中具有相同的名字异名同义(一义多名)同一意义的对象在不同的局部应用中具有不同的名字结构冲突
3.同一对象在不同应用中具有不同的抽象同一实体在不同局部视图中所包含的属性不完全相同,或者属性的排列次序不完全相同实体之间的联系在不同局部视图中呈现不同的类型、修改与重构2■概念结构设计的步骤抽象数据并设计局部视图■集成局部视图,得到全局概念结构■验证整体概念结构■■设计局部视图选择局部应用■L.逐一设计分图■2E-R■标定局部应用中的实体、属性、码,实体间的联系■用图描述出来E-R■集成局部视图、合并分图,生成初步图■1E-R E-R■消除冲突■属性冲突■命名冲突■结构冲突、修改与重构■2■消除不必要的冗余,设计生成基本图E-R■分析方法■规范化理论、逻辑结构设计64■逻辑结构设计的任务■概念结构就是各种数据模型的共同基础■为了能够用某一实现用户需求,还必须将概念结构进一步转化为相应的数据模型,DBMS这正就是数据库逻辑结构设计所要完成的任务属性用字段描述每个记录类型可包含若干个字段联系用结点之间的连线表示记录类型之间的一对多的父子联系关系模型的基本概念■关系一个关系对应通常说的一张表Relation■元组表中的一行即为一个元组Tuple■属性Attribute表中的一列即为一个属性,给每一个属性起一个名称即属性名■关系必须就是规范化的,满足一定的规范条件最基本的规范条件关系的每一个分量必须就是一个不可分的数据项■查询、插入、删除、更新■数据操作就是集合操作,操作对象与操作结果都就是关系,即若干元组的集合■存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么干”关系模型的完整性约束■实体完整性■参照完整性■用户定义的完整性关系数据模型的存储结构■表以文件形式存储■有的一个表对应一个操作系统文件DBM S■有的自己设计文件结构关系模型的优缺点DBMS■优点■建立在严格的数学概念的基础上■概念单一数据结构简单、清晰,用户易懂易用■实体与各类联系都用关系来表示■对数据的检索结果也就是关系■关系模型的存取路径对用户透明■具有更高的数据独立性,更好的安全保密性■简化了程序员的工作与数据库开发建立的工作■缺点存取路径对用户透明导致查询效率往往不如非关系数据模型为提高性能,必须对用户的查询请求进行优化增加了开发数据库管理系统的难度数据库系统外部的体系结构■单用户结构■主从式结构■分布式结构■客户/服务器结构■逻辑结构设计的步骤■将概念结构转化为一般的关系、网状、层次模型■将转化来的关系、网状、层次模型向特定支持下的数据模型转换DBMS■对数据模型进行优化■转换原则一个实体型转换为一个关系模式
1.■关系的属性:实体型的属性■关系的码:实体型的码一个联系转换为一个关系模式
2.m:n■关系的属性:与该联系相连的各实体的码以及联系本身的属性■关系的码:各实体码的组合一个联系可以转换为一个独立的关系模式,也可以与端对应的关系模式合并
3.1:n n)转换为一个独立的关系模式■1■关系的属性与该联系相连的各实体的码以及联系本身的属性■关系的码:n端实体的码.一个联系可以转换为一个独立的关系模式,也可以与端对应的关系模式合并31:n n)与端对应的关系模式合并■2n■合并后关系的属性在端关系中加入端关系的码与联系本身的属性n1・合并后关系的码:不变■可以减少系统中的关系个数,一般情况下更倾向于采用这种方法一个联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并
4.1:1)转换为一个独立的关系模式■1■关系的属性与该联系相连的各实体的码以及联系本身的属性■关系的候选码每个实体的码均就是该关系的候选码一个联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并
4.1:1)与某一端对应的关系模式合并■2■合并后关系的属性:加入对应关系的码与联系本身的属性■合并后关系的码:不变三个或三个以上实体间的一个多元联系转换为一个关系模式
5.■关系的属性与该多元联系相连的各实体的码以及联系本身的属性■关系的码各实体码的组合同一实体集的实体间的联系,即自联系,也可按上述、与三种情况分别处理
6.1:1l nm:n具有相同码的关系模式可合并
7.■目的减少系统中的关系个数■合并方法将其中一个关系模式的全部属性加入到另一个关系模式中,然后去掉其中的同义属性(可能同名也可能不同名),并适当调整属性的次序、、向特定规定的模型进行转换642DBMS■一般的数据模型还需要向特定规定的模型进行转换DBMS■转换的主要依据就是所选用的的功能及限制没有通用规则DBMS■对于关系模型来说,这种转换通常都比较简单、、数据模型的优化643■数据库逻辑设计的结果不就是唯一的■得到初步数据模型后,还应该适当地修改、调整数据模型的结构,以进一步提高数据库应用系统的性能,这就就是数据模型的优化■关系数据模型的优化通常以规范化理论为指导数据模型的优化确定数据依赖
1.对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系
2.按照数据依赖的理论对关系模式逐一进行分析,考查就是否存在部分函数依赖、传递函数依赖、多值
3.依赖等,确定各关系模式分别属于第几范式按照需求分析阶段得到的各种应用对数据处理的要求,分析对于这样的应用环境这些模式就是否合适,
4.确定就是否要对它们进行合并或分解按照需求分析阶段得到的各种应用对数据处理的要求,对关系模式进行必要的分解或合并,以提高数
5.据操作的效率与存储空间的利用率■水平分解■什么就是水平分解■把(基本)关系的元组分为若干子集合,定义每个子集合为一个子关系,以提高系统的效率■水平分解的适用范围、满足原则”的应用■1“80/20原则一个大关系中,经常被使用的数据只就是关系的一部分,■80/20约20%■把经常使用的数据分解出来,形成一个子关系,可以减少查询的数据量■垂直分解■什么就是垂直分解■把关系模式的属性分解为若干子集合,形成若干子关系模式R■垂直分解的原则■经常在一起使用的属性从中分解出来形成一个子关系模式R■垂直分解的优点■可以提高某些事务的效率■垂直分解的缺点■可能使另一些事务不得不执行连接操作,从而降低了效率逻辑结构设计小结图向关系模型的转换原则■E-R一个实体型转换为一个关系模式
1.一个联系转换为一个关系模式
2.m:n.一个联系可以转换为一个独立的关系模式,也可以与端对应的关系模式合并31:n n一个联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并
4.1:
1.三个或三个以上实体间的一个多元联系转换为一个关系模式5同一实体集的实体间的联系,即自联系,也可按上述、与三种情况分别处理
6.1:1l:nm:n具有相同码的关系模式可合并
7.■优化数据模型的方法确定数据依赖
1..对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系2确定各关系模式分别属于第几范式
3.分析对于应用环境这些模式就是否合适,确定就是否要对它们进行合并或分解
4.对关系模式进行必要的分解或合并
5.■数据库的物理设计■数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于给定的计算机系统■为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程,就就是数据库的物理设计、数据库的物理设计65■关系数据库物理设计的内容、为关系模式选择存取方法建立存取路径■
1、设计关系、索引等数据库文件的物理存储结构■2关系模式存取方法选择常用存取方法■DBMS■索引方法,目前主要就是B+树索引方法■聚簇Cluster方法方法■HASH
一、索引存取方法的选择■选择索引存取方法的主要内容根据应用要求确定对哪些属性列建立索引■对哪些属性列建立组合索引■对哪些索引要设计为唯一索引■聚簇索引■建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放也即聚簇索引的索引项顺序与表中元组的物理顺序一致、数据库的实施66
一、定义数据库结构■确定了数据库的逻辑结构与物理结构后,就可以用所选用的提供的数据定义语言来严DBMS DDL格描述数据库结构、皿.IK十I、
一、数据装载■数据库结构建立好后,就可以向数据库中装载数据了组织数据入库就是数据库实施阶段最主要的工作■数据装载方法■人工方法■计算机辅助数据入库第七章数据库恢复技术■数据库系统中的数据就是由统一管理与控制的,为了适应数据共享的环境,必须提供DBMS DBMS数据保护能力,以保证数据库中数据的安全可靠与正确有效、事务的基本概念71■事务就是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,就是一个Transaction不可分割的工作单位■事务与程序就是两个概念■在关系数据库中,一个事务可以就是一条语句,一组语句或整个程序SQL SQL■一个应用程序通常包含多个事务■事务就是恢复与并发控制的基本单位
一、什么就是事务■事务就是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,就是一个Transaction不可分割的工作单位■事务与程序就是两个概念■在关系数据库中,一个事务可以就是一条语句,一组语句或整个程序SQLSQL■一个应用程序通常包含多个事务■事务就是恢复与并发控制的基本单位
二、如何定义事务■显式定义方式BEGIN TRANSACTIONBEGIN TRANSACTION语句语句SQL1SQL1语句语句SQL2SQL2COMMIT ROLLBACK■隐式方式当用户没有显式地定义事务时,按缺省规定自动划分事务DBMS事务结束COMMIT事务正常结束提交事务的所有操作读+更新事务中所有对数据库的更新永久生效ROLLBACK事务异常终止■事务运行的过程中发生了故障,不能继续执行回滚事务的所有更新操作■事务滚回到开始时的状态
三、事务的特性特性ACID事务的特性ACID■原子性Atomicity■一致性Consistency■隔离性Isolaticxi■持续性Durability、原子性1■事务就是数据库的逻辑工作单位■事务中包括的诸操作要么都做,要么都不做、一致性2事务执行的结果必须就是使数据库从一个一致性状态变到另一个一致性状态一致性状态数据库中只包含成功事务提交的结果不一致状态数据库中包含失败事务的结果、隔离性3对并发执行而言一个事务的执行不能被其她事务干扰■一个事务内部的操作及使用的数据对其她并发事务就是隔离的■并发执行的各个事务之间不能互相干扰、持续性4■持续性也称永久性Permanence■一个事务一旦提交,它对数据库中数据的改变就应该就是永久性的■接下来的其她操作或故障不应该对其执行结果有任何影响事务的特性■保证事务特性就是事务处理的任务ACID■破坏事务特性的因素ACID■多个事务并行运行时,不同事务的操作交叉执行■事务在运行过程中被强行停止系统故障的恢复■清除尚未完成的事务对数据库的所有修改■系统重新启动时,恢复程序要强行撤消所有未完成事务UNDO■将缓冲区中已完成事务提交的结果写入数据库■系统重新启动时,恢复程序需要重做所有已提交的事务恢复机制涉及的关键问题REDO、如何建立冗余数据1■数据转储backup■登录日志文件logging、如何利用这些冗余数据实施数据库恢复2静态转储
1.■在系统中无运行事务时进行转储■转储开始时数据库处于一致性状态■转储期间不允许对数据库的任何存取、修改活动■优点实现简单■缺点降低了数据库的可用性■转储必须等用户事务结束■新的事务必须等转储结束动态转储■转储操作与用户事务并发进行■转储期间允许对数据库进行存取或修改■优点■不用等待正在运行的用户事务结束■不会影响新事务的运行■动态转储的缺点■不能保证副本中的数据正确有效、、登记日志文件742
一、日志文件的内容、什么就是日志文件1日志文件就是用来记录事务对数据库的log更新操作的文件、日志文件的格式2以记录为单位的日志文件以数据块为单位的日志文件、日志文件内容3■各个事务的开始标记()BEGIN TRANSACTION■各个事务的结束标记(或)COMMIT ROLLBACK■各个事务的所有更新操作■与事务有关的内部更新操作日志文件中的一个日志记录()log record、基于记录的日志文件4每条日志记录的内容■事务标识■操作类型(插入、删除或修改)■操作对象(记录、、)ID BlockNO■更新前数据的旧值(对插入操作而言,此项为空值)■更新后数据的新值(对删除操作而言,此项为空值)、基于数据块的日志文件5每条日志记录的内容■事务标识(标明就是那个事务)■操作对象(记录、、)ID BlockNO■更新前数据所在的整个数据块的值(对插入操作而言,此项为空值)■更新后整个数据块的值(对删除操作而言,此项为空值)■常用恢复技术■事务故障的恢复■UNDO■系统故障的恢复■UNDO+REDO■介质故障的恢复■重装备份并恢复到一致性状态+RED0第八章并发控制必须提供并发控制机制■DBMS■并发控制机制就是衡量一个性能的重要标志之一DBMS并发控制机制的任务■对并发操作进行正确调度■保证事务的隔离性■保证数据库的一致性并发操作带来的数据不一致性■丢失修改()lost update■不可重复读(non-repeatable read)■读“脏”数据()dirty read、丢失修改1丢失修改就是指事务与事务从数据库中读12入同一数据并修改事务的提交结果破坏了事务提交的结果,21导致事务的修改被丢失
1、不可重复读2不可重复读就是指事务读取数据后,事务12执行更新操作,使事务无法再现前一次读1取结果事务读取某一数据后1事务对其做了修改,当事务再次读该数据时,得到与前一次不同的值lo
21、事务删除了其中部分记录,当事务再次读取数据时,发现某些记录神密地消失了
221、事务插入了一些记录,当事务再次按相同条件读取数据时,发现多了一些记录321后两种不可重复读有时也称为幻影现象()phantom row、读“脏”飘3事务修改某一数据,并将其写回磁盘1事务读取同一数据后2事务由于某种原因被撤消,这时事务已修改过11的数据恢复原值事务读到的数据就与数据库中的数据不一致,2就是不正确的数据,又称为“脏”数据、封锁82
一、什么就是封锁■封锁就就是事务在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁T■加锁后事务就对该数据对象有了一定的控制,在事务释放它的锁之前,其它的事务不能更新此T T数据对象■封锁就是实现并发控制的一个非常重要的技术
二、基本封锁类型■基本封锁类型■排它锁(简记为锁)exclusive lock,X■排它锁又称为写锁■若事务对数据对象加上锁,则只允许读取与修改其它任何事务都不能再对加任何类T AX T A,A型的锁,直到释放上的锁T A■共享锁(简记为锁)Share lock,S■共享锁又称为读锁■若事务对数据对象加上锁,则其它事务只能再对力口锁,而不能加锁,直到释放上T ASAS XTA的锁S、封锁协议83■在运用锁与锁对数据对象加锁时,需要约定一些规则封锁协议()X SLocking Protocol■何时申请锁或锁X S■持锁时间、何时释放■不同的封锁协议,在不同的程度上为并发操作的正确调度提供一定的保证■常用的封锁协议三级封锁协议级封锁协议1■事务在修改数据之前必须先对其加锁,直到事务结束才释放T RX■正常结束(COMMIT)■非正常结束(ROLLBACK)■级封锁协议可防止丢失修改1■在级封锁协议中,如果就是读数据,不需要加锁的,所以它不能保证可重复读与不读“脏”数据1级封锁协议2■级封锁协议+事务在读取数据前必须先加锁,读完后即可释放锁1T RS S■级封锁协议可以防止丢失修改与读“脏”数据2■在级封锁协议中,由于读完数据后即可释放锁,所以它不能保证可重复读2S级封锁协议3■级封锁协议+事务在读取数据之前必须先对其加锁,直到事务结束才释放1TRS■级封锁协议可防止丢失修改、读脏数据与不可重复读
3、活锁与死锁
84、死锁的预防1⑴一次封锁法■要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行■一次封锁法存在的问题降低并发度■扩大封锁范围■将以后要用到的全部数据加锁,势必扩大了封锁的范围,从而降低了系统的并发度■难于事先精确确定封锁对象■数据库中数据就是不断变化的,原来不要求封锁的数据,在执行过程中可能会变成封锁对象,所以很难事先精确地确定每个事务所要封锁的数据对象■解决方法将事务在执行过程中可能要封锁的数据对象全部加锁,这就进一步降低了并发度⑵顺序封锁法■顺序封锁法就是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁■顺序封锁法存在的问题■维护成本高■数据库系统中可封锁的数据对象极其众多,并且随数据的插入、删除等操作而不断地变化,要维护这样极多而且变化的资源的封锁顺序非常困难,成本很高■难于实现■事务的封锁请求可以随着事务的执行而动态地决定,很难事先确定每一个事务要封锁哪些对象,因此也就很难按规定的顺序去施加封锁、死锁的诊断与解除2■允许死锁发生■解除死锁■由的并发控制子系统定期检测系统中就是否存在死锁DBMS■一旦检测到死锁,就要设法解除检测死锁超时法■如果一个事务的等待时间超过了规定的时限,就认为发生了死锁■优点实现简单■缺点■有可能误判死锁■时.限若设置得太长,死锁发生后不能及时发现等待图法■用事务等待图动态反映所有事务的等待情况■事务等待图就是一个有向图G=T,U■为结点的集合,每个结点表示正运行的事务T■为边的集合,每条边表示事务等待的情况U■若等待则之间划一条有向边,从指向T1T2,T1,T2T1T2■并发控制子系统周期性地(比如每隔)检测事务等待图,如果发现图中存在回路,则表示系统中1min出现了死锁、并发调度的可串行性85■几个事务的并行执行就是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同这种并行调度策略称为可串行化()的调度Ser ializable可串行性就是并行事务正确性的唯一准则■保证并发操作调度正确性的方法■封锁方法两段锁(简称)协议Two-Phase Locking,2PL■时标方法■乐观方法、两段锁协议86■两段锁协议的内容、在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁
1、在释放一个封锁之后,事务不再获得任何其她封锁2“两段”锁的含义■事务分为两个阶段■第一阶段就是获得封锁,也称为扩展阶段;■第二阶段就是释放封锁,也称为收缩阶段■并行执行的所有事务均遵守两段锁协议,则对这些事务的所有并行调度策略都就是可串行化的所有遵守两段锁协议的事务,其并行执行的结果一定就是正确的■事务遵守两段锁协议就是可串行化调度的充分条件,而不就是必要条件■可串行化的调度中,不一定所有事务都必须符合两段锁协议■两段锁协议与三级封锁协议■两类不同目的的协议■两段锁协议■保证并发调度的正确性■三级封锁协议■在不同程度上保证数据一致性■遵守第三级封锁协议必然遵守两段协议、封锁的粒度87
一、什么就是封锁粒度锁与锁都就是加在某一个数据对象上的■X S■封锁的对象逻辑单元,物理单元■逻辑单元属性值、属性值集合、元组、关系、索引项、整个索引、整个数据库等■物理单元页(数据页或索引页)、物理记录等
二、选择封锁粒度的原则■封锁的粒度越大,小,■系统被封锁的对象少,多,■并发度小,高,■系统开销小,大,■选择封锁粒度考虑封锁机构与并发度两个因素对系统开销与并发度进行权衡■需要处理多个关系的大量元组的用户事务以数据库为封锁单位;■需要处理大量元组的用户事务以关系为封锁单元;■只处理少量元组的用户事务以元组为封锁单位、、多粒度封锁872■多粒度树■以树形结构来表示多级封锁粒度■根结点就是整个数据库,表示最大的数据粒度■叶结点表示最小的数据粒度显式封锁与隐式封锁■显式封锁直接加到数据对象上的封锁■隐式封锁由于其上级结点加锁而使该数据对象加上了锁■显式封锁与隐式封锁的效果就是一样的、、意向锁873■引进意向锁目的intention lock■提高对某个数据对象加锁时系统的检查效率■对任一结点加基本锁,必须先对它的上层结点加意向锁■如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁第九章数据库安全性■数据库系统的安全保护措施就是否有效就是数据库系统主要的性能指标之
一、计算机安全性概论91什么就是计算机系统安全性为计算机系统建立与采取的各种安全保护措施,以保护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等技术安全指计算机系统中采用具有一定安全性的硬件、软件来实现对计算机系统及其所存数据的安全保护,当计算机系统受到无意或恶意的攻击时仍能保证系统正常运行,保证系统内的数据不增加、不丢失、不泄露管理安全软硬件意外故障、场地的意外事故、管理不善导致的计算机设备与数据介质的物理破坏、丢失等安全问题政策法律类政府部门建立的有关计算机犯罪、数据安全保密的法律道德准则与政策法规、法令标准的基本内容■TDI/TCSEC与一样,从四个方面来描述安全性级别划分的指标■TDI TCSEC■安全策略■责任■保证■文档■安全策略R1Security Policy、自主存取控制
①RI1iscretionary Access简记为Control,DAC客体重用Rl2Object Reuse、标记RI3Labels强制存取控制RI4Mandatory Access■浏览器/应用服务器/数据库服务器结构分布式结构的数据库系统■数据库中的数据在逻辑上就是一个整体.但物理地分布在计算机网络的不同结点上■网络中的每个结点都可以独立处理本地数据库中的数据,执行局部应用■同时也可以同时存取与处理多个异地数据库中的数据,执行全局应用■优点■适应了地理上分散的公司、团体与组织对于数据库应用的需求■缺点■数据的分布存放给数据的处理、管理与维护带来困难■当用户需要经常访问远程数据时,系统效率会明显地受到网络传输的制约数据库管理员DBA■决定数据库中的信息内容与结构■决定数据库的存储结构与存取策略■定义数据的安全性要求与完整性约束条件关系数据库■关系模型的组成■关系数据结构■关系操作集合■关系完整性约束常用的关系操作■1■查询■选择、投影、连接、除、并、交、差■数据更新■插入、删除、修改■查询的表达能力就是其中最主要的部分关系操作的特点■2■集合操作方式,即操作的对象与结果都就是集合■非关系数据模型的数据操作方式一次一记录■文件系统的数据操作方式关系数据语言的种类■3■关系代数语言■用对关系的运算来表达查询要求关系数据语言的特点■4■关系语言就是一种高度非过程化的语言■存取路径的选择由的优化机制来完成DBMS■用户不必用循环结构就可以完成数据操作■能够嵌入高级语言中使用■关系代数、元组关系演算与域关系演算三种语言在表达能力上完全等价关系■.域1Domain■、笛卡尔积2CartesianProduct■、关系3Relatiai■域就是一组具有相同数据类型的值的集合例■整数简记为Control,MAC责任■R2Accountability、标识与鉴别R21Identificati mAuthentication、审计R22Audit保证■R3Assurance、操作保证R31Operational Assurance生命周期保证R32Life CycleAssurance文档■R4Documentation、安全特性用户指南R41Security FeaturesUser*s Guide可信设施手册R42Trusted FacilityManual测试文档R43Test Documentation设计文档R44Design Documentation安全级别划分■TCSEC/TDI安全级别定义A1验证设计Verified DesignB3安全域Security DomainsB2结构化保护Structural ProtectionB1标记安全保护Labeled SecurityProtectionC2受控的存取保护Controlled AccessProtectionC1自主安全保护Discretionary SecurityProtectionD最小保护Minimal Protection■Cl级■非常初级的自主安全保护■能够实现对用户与数据的分离,进行自主存取控制()保护或限制用户权限的传播DAC,■C2级■安全产品的最低档次■提供受控的存取保护,将级的进一步细化,以个人身份注册负责,并实施审计与资C1DAC源隔离■达到C2级的产品在其名称中往往不突出“安全”(Security)这一特色■B1级■标记安全保护“安全”(Security)或“可信的(Trusted)产品■对系统的数据加以标记,对标记的主体与客体实施强制存取控制()、审计等安全机制MAC■B2级■结构化保护■建立形式化的安全策略模型并对系统内的所有主体与客体实施与DAC MAC■经过认证的级以上的安全系统非常稀少B2■B3级■安全域■该级的必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程TCB■A1级■验证设计,即提供级保护的同时给出系统的形式化设计说明与验证以确信各安全保护真B3正实现、数据库安全性控制92■数据库安全性控制的常用方法■用户标识与鉴定■存取控制■视图■审计■密码存储、、用户标识与鉴别922■用户标识与鉴别Identification Authentication■系统提供的最外层安全保护措施基本方法■系统提供一定的方式让用户标识自己的名字或身份;■系统内部记录着所有合法用户的标识;■每次用户要求进入系统时,由系统核对用户提供的身份标识;■通过鉴定后才提供机器使用权■用户标识与鉴定可以重复多次、、存取控制923■存取控制机制的功能■存取控制机制的组成■定义存取权限■检查存取权限用户权限定义与合法权检查机制一起组成了的安全子系统DBMS■常用存取控制方法■自主存取控制简称Discretionary AccessControl,DAC■C2级■灵活■同一用户对于不同的数据对象有不同的存取权限■不同的用户对同一对象也有不同的权限■用户还可将其拥有的存取权限转授给其她用户■强制存取控制简称■Bl级Mandatory AccessControl,MAC■严格■每一个数据对象被标以一定的密级■每一个用户也被授予某一个级别的许可证■对于任意一个对象,只有具有合法许可证的用户才可以存取、、自主存取控制方法924■定义存取权限■存取权限■存取权限由两个要素组成■数据对象■操作类型■关系系统中的存取权限续■定义方法■GRANT/REVOKE■关系数据库中授权的数据对象粒度■数据库■表■属性列■行、、强制存取控制方法925■什么就是强制存取控制■强制存取控制就是指系统为保证更高程度的安全性,按照标准中安全策MAC TDI/TCSEC略的要求,所采取的强制存取检查手段■不就是用户能直接感知或进行控制的MAC■主体与客体■在中,所管理的全部实体被分为主体与客体两大类MAC DBMS主体就是系统中的活动实体■所管理的实际用户DBMS■代表用户的各进程■客体就是系统中的被动实体,就是受主体操纵的■文件■基表■索引■视图、、视图机制926■视图机制与授权机制配合使用■首先用视图机制屏蔽掉一部分保密数据■视图上面再进一步定义存取权限■间接实现了支持存取谓词的用户权限定义、、审计927■什么就是审计启用一个专用的审计日志将用户对数据库的所有操作记录在上面■Audit Log可以利用审计日志中的追踪信息找出非法存取数据的人■DBA以上安全级别的必须具有审计功能■C2DBMS■审计功能的可选性审计很费时间与空间■可以根据应用对安全性的要求,灵活地打开或关闭审计功能■DBA、、数据加密928■加密方法■替换方法■使用密钥()将明文中的每一个字符转换为密文中的一个字符Encryption Key■置换方法■将明文的字符按不同的顺序重新排列■混合方法美国年制定的官方加密标准数据加密标准(简称)、统计数据库1977Data EncryptionStandard,DES93安全性■统计数据库的特点■允许用户查询聚集类型的信息(例如合计、平均值等)■不允许查询单个记录信息规则任何查询至少要涉及(足够大)个以上的记录1:N N规则任意两个查询的相交数据项不能超过个2:M规则任一用户的查询次数不能超过()3:l+N-2/M第十章数据库完整性什么就是数据库的完整性■数据的正确性与相容性■防止不合语义的数据进入数据库完整性约束条件定义■完整性约束条件数据模型的组成部分约束数据库中数据的语义■应提供定义数据库完整性约束条件,并把它们作为模式的一部分存入数据库中DBMS完整性约束条件作用的对象■列对属性的取值类型、范围、精度等的约束条件■元组对元组中各个属性列间的联系的约束■关系对若干元组间、关系集合上以及关系之间的联系的约束■静态■对静态对象的约束就是反映数据库状态合理性的约束■动态■对动态对象的约束就是反映数据库状态变迁的约束、静态列级约束1■静态列级约束对的取值域的说明■最常见、最简单、最容易实现的一类完整性约束五类静态列级约束)数据类型约束数据的类型、长度、单位、精度等1)对数据格式的约束2)取值范围或取值集合的约束3)对空值的约束4)其她约束
5、静态元组约束2规定元组的各个列之间的约束关系静态兀组约束只局限在兀组上、静态关系约束3关系的各个元组之间或若干关系之间存在的各种联系或约束常见静态关系约束)实体完整性约束1参照完整性约束2函数依赖约束3统计约束
4、动态列级约束4动态列级约束就是修改列定义或列值时应满足的约束条件修改列定义时的约束1修改列值时的约束
2、动态元组约束5修改元组值各个字段之间要满足的约束条件、动态关系约束6关系变化前后状态限制条件状列级元组级关系级态粒度静态列定义元组值应满足的条件实体完整性约束参照完整性约束函数类型依赖约束统计约束•格式•值域•空值动态改变列定义元组新旧值之间应满关系新旧状态间应满或列值足的约束条件足的约束条件、完整性控制102
一、的完整性控制机制DBMS、定义功能1一个完善的完整性控制机制应该允许用户定义各类完整性约束条件、检查功能2■立即执行的约束Immediate constraints语句执行完后立即检查就是否违背完整性约束■延迟执行的约束Deferred constrainsts完整性检查延迟到整个事务执行结束后进行、违约反应3■拒绝该操作■其她处理方法完整性规则五元组表示D,O,A,C,P■约束作用的数据对象;D Data■触发完整性检查的数据库操作0Operation当用户发出什么操作请求时需要检查该完整性规则就是立即检查还就是延迟检查;■数据对象必须满足的断言或语义约束这就是规则的主体;A Assertion■选择作用的数据对象值的谓词;CCondition A■违反完整性规则时触发的过程P Procedure、外码就是否可以接受空值的问题1■外码就是否能够取空值依赖于应用环境的语义、在被参照关系中删除元组时的问题2出现违约操作的情形删除被参照关系的某个元组student而参照关系有若干元组的外码值与被删除的被参照关系的主码值相同SC■违约反应可有三种策略■级联删除CASCADES■受限删除RESTRICTED■置空值删除NULLIFIES、在参照关系中插入元组时的问题3■受限插入■仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组的外码值相同时,系统才执行插入操作,否则拒绝此操作■递归插入■首先向被参照关系中插入相应的元组,其主码值等于参照关系插入元组的外码值,然后向参照关系插入元组、修改被参照关系中主码的问题4■两种策略⑴不允许修改主码⑵允许修改主码■实数■介于某个取值范围的整数■长度指定长度的字符串集合■{男,女”}■介于某个取值范围的日期■笛卡尔积给定一组域这些域中可以有相同的的笛卡尔积为Dl,D2,・・,Dn,D1,D2,…,DnD1xD2x.xDn={d1,d2,...,dnI dieDi,i=l,
2.,nf■所有域的所有取值的一个组合■不能重复元组■2Tuple■笛卡尔积中每一个元素,叫作一个元组或简称元组dl,d2,…dn nn-tuple分量■3Component■笛卡尔积元素中的每一个值叫作一个分量dl,d2,,dn di基数■4Cardinal number■若为有限集,其基数为则义….的基数为:Di i=1,2,….,n mii=l,2,…,n,DIXD2XDn M■5笛卡尔积的表示方法■笛卡尔积可表示为一个二维表表中的每行对应一个元组,表中的每列对应一个域关系Relation1关系的子集叫作在域上的关系,表示为DTXD2X..XDn DI,D2,,DnRD1,D2,..,Dn关系名R关系的目或度n:Degree2元组关系中的每个元素就是关系中的元组,通常用表示t单元关系与二元关系3当时,称该关系为单元关系n=l Unaryrelationo当时,称该关系为二元关系n=2Binary relation4关系的表示关系也就是一个二维表,表的每行对应一个元组,表的每列对应一个域5属性关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性目关系Attribute n必有个属性n6码候选码Candidate key若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码在最简单的情况下,候选码只包含一个属性称为全码All-key在最极端的情况下,关系模式的所有属性组就是这个关系模式的候选码,称为全码All-key主码若一个关系有多个候选码,则选定其中一个为主码Primarykey主码的诸属性称为主属性Prime attributeo不包含在任何侯选码中的属性称为非码属性Non-key attribute三类关系7基本关系基本表或基表实际存在的表,就是实际存储数据的逻辑表示查询表查询结果对应的表视图表由基本表或其她视图表导出的表,就是虚表,不对应实际存储的数据基本关系的性质
①列就是同质的Homogeneous每一列中的分量就是同一类型的数据,来自同一个域
②不同的列可出自同一个域其中的每一列称为一个属性不同的属性要给予不同的属性名
③列的顺序无所谓列的次序可以任意交换遵循这一性质的数据库产品如增加新属性时,永远就是插至最后一列ORACLE,但也有许多关系数据库产品没有遵循这一性质,例如仍然区分了属性顺序
④任意两个元组不能完FoxPro全相同由笛卡尔积的性质决定但许多关系数据库产品没有遵循这一性质例如等都允许关系表中存在两个完全相同的元组,除非用户特别定义了相应的约束条件Oracle,FoxPro
⑤行的顺序无所谓行的次序可以任意交换遵循这一性质的数据库产品如插入一个元组时永远插至最后一行ORACLE,但也有许多关系数据库产品没有遵循这一性质,例如仍然区分了元组的顺序FoxPro
⑥分量必须取原子值每一个分量都必须就是不可分的数据项这就是规范条件中最基本的一条关系模式就是型Relation Schema关系就是值关系模式就是对关系的描述元组集合的结构属性构成属性来自的域属性与域之间的映象关系元组语义以及完整性约束条件属性间的数据依赖关系集合定义关系模式关系模式可以形式化地表示为RU,D,dom,F关系名R组成该关系的属性名集合U属性组中属性所来自的域D U属性向域的映象集合dom属性间的数据依赖关系集合F关系模式通常可以简记为或RU RA1,A2,.…,An关系名R属性名A/,A2,..A〃注域名及属性向域的映象常常直接说明为属性的类型、长度关系模式对关系的描述静态的、稳定的关系关系模式在某一时刻的状态或内容动态的、随时间不断变化的关系模式与关系往往统称为关系通过上下文加以区别、关系数据库1在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库、关系数据库的型与值2关系数据库也有型与值之分关系数据库的型称为关系数据库模式,就是对关系数据库的描述若干域的定义在这些域上定义的若干关系模式关系数据库的值就是这些关系模式在某一时刻对应的关系的集合,通常简称为关系数据库关系的完整性3关系模型的完整性规则就是对关系的某种约束条件关系模型中三类完整性约束实体完整性参照完整性用户定义的完整性实体完整性与参照完整性就是关系模型必须满足的完整性约束条件,被称作就是关系的两个不变性,应该由关系系统自动支持实体完整性实体完整性规则Entity Integrity若属性就是基本关系的主属性,则属性A R不能取空值A关系模型必须遵守实体完整性规则的原因⑴实体完整性规则就是针对基本关系而言的一个基本表通常对应现实世界的一个实体集或多对多联系现实世界中的实体与实体间的联系都就是可区分的,即它们具有某种唯一性标识2⑶相应地,关系模型中以主码作为唯一性标识关系模型必须遵守实体完整性规则的原因续主码中的属性即主属性不能取空值4空值就就是“不知道”或“无意义”的值主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第⑵点相矛盾,因此这个规则称为实体完整性注意实体完整性规则规定基本关系的所有主属性都不能取空值参照完整性、关系间的引用
1、外码
2、参照完整性规则
3、关系间的引用1在关系模型中实体及实体间的联系都就是用关系来描述的,因此可能存在着关系与关系间的引用夕卜码
2.Foreign Key设就是基本关系的一个或一组属性,但不F R就是关系的码如果与基本关系的主码R FS相对应,则称就是基本关系的外码Ks F R基本关系称为参照关系R ReferencingRelation基本关系称为被参照关系S Referenced或目标关系Relation TargetRelation说明■关系与不一定就是不同的关系RS■目标关系的主码与参照关系的外码必须定义在同一个或一组域上S KsF■外码并不一定要与相应的主码同名当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别、参照完整性规则3若属性或属性组就是基本关系的外码FR它与基本关系的主码相对应基本关S Ks系与不一定就是不同的关系,则对RS。
个人认证
优秀文档
获得点赞 0