中级数据库工程师重要知识点.docx
- 文档编号:10062150
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:46
- 大小:458.29KB
中级数据库工程师重要知识点.docx
《中级数据库工程师重要知识点.docx》由会员分享,可在线阅读,更多相关《中级数据库工程师重要知识点.docx(46页珍藏版)》请在冰点文库上搜索。
中级数据库工程师重要知识点
重要知识点
1.数据库设计
数据库是存储在外出上的有组织的、可共享的数据的集合。
数据库设计分为需求分析、概念设计、逻辑设计、物理设计几个阶段
需求分析:
数据流图(DFD)、数据字典
概念设计:
E-R图、UML图,描述实体及其联系
逻辑设计:
设计关系模式及相关视图
物理设计:
设计数据的物理组织,如索引
数据字典:
数据收集和分析获得的主要成果,包括数据项、数据结构、数据流、数据存储、处理过程
域:
一组值的集合,例:
D1姓名:
{A,B,C}D2性别:
{‘男’,’女’}
笛卡尔积:
所有可能组合的集合,例:
D1*D2={(A,男),(B,男),(C,男),(A,女),(B,女),(C,女)}
关系是一组域笛卡尔积的一个子集,一行对应一个元组,一列对应一个域
主属性:
任何一个候选码中的属性
非主属性:
不属于任何候选码的属性
关系中没一个属性都是不可分解的,没有完全相同得行或列,行列顺序无关紧要
复合属性:
可细分的属性,如通信地址分为邮编、省、市、街道等
多值属性:
一个属性对应多个值
派生属性:
可以通过其他属性计算获得的属性,如年龄可以通过出生日期计算得到。
生命周期:
需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、运行维护
数据库性能的两个效率:
存储效率、存取效率
衡量数据库的性能指标:
是否冗余、插入异常、删除异常、更新异常或潜在的不一致性
数据依赖:
X->Y:
对于X,Y中存在唯一的值与之对应
函数依赖的公理系统:
设有关系模式R(U),X,Y,Z,W均是U的子集,F是R上只涉及到U中属性的函数依赖集,推理规则如下:
Armstrong公理系统:
自反律:
Y
X,则X→Y
增广律:
X→Y,Z
W,则XW→YZ
传递律:
X→Y,Y→Z,则X→Z
三条引理:
合并律:
X→Y,X→Z,则X→YZ
伪传递律:
X→Y,WY→Z,则WX→Z
分解律:
X→Y,Z
Y,则X→Z
例题:
给定关系模式R(U,F),其中U为关系R属性集,F是U上的一组函数依赖,若 X→Y, (42) 是错误的,因为该函数依赖不蕴涵在F中。
A.Y→Z成立,则X→Z B.X→Z成立,则X→YZ
C.ZU成立,则X→YZ D.WY→Z成立,则XW→Z
答案:
C
解读:
本题考查的是关系数据库理论方面的基础知识。
Armstrong公理系统推导出下面三条推理规则:
传递规则(选项A):
若A→Y,Y→Z成立,则X→Z为F所蕴涵。
合并规则(选项B):
若X→Y,X→Z成立,则X→YZ为F所蕴涵。
伪传递规则(选项D):
若X→Y, WY→Z成立,则XW→Z为F所蕴涵。
例题:
若关系模式R<{A,B,C},{A→B,B→C)>,则将R分解为R1(A,B)和R2(B,C),则该分解 (51) 。
A.满足无损连接,但不保持函数依赖 B.不满足无损连接,但保持函数依赖
C.既不满足无损连接,又不保持函数依赖 D.既满足无损连接,又保持函数依赖
[参考答案] D
[分析] 本题考查对模式分解的掌握。
根据无损连接分解判定定理,有R1∩R2→R2—R1,即B→C成立,故分解具有无损连接性;又R的函数依赖集F={A→B,B→C}在R1,R2上的投影分别为F1={A→B),F2={B→C},即有F1∪F2=F,从而(F1∪F2) +=F+,根据定义,分解保持函数依赖
例题:
设关系模式R,其中U={A,B,C,D,E},F={A→BC,C→D,BC→E,E→A},则分解ρ={R1(ABCE),R2(CD)}满足(43)。
A.具有无损连接性、保持函数依赖B.不具有无损连接性、保持函数依赖
C.具有无损连接性、不保持函数依赖D.不具有无损连接性、不保持函数依赖
解读:
无损链接判断:
R1∩R2={C},R2-R1=D,C->D蕴涵于F,故无损连接
函数依赖判断:
R1在F上投影F1:
A→BC,BC→E,E→A
R2在F上投影F2:
C->D
F1并F2=F,故函数依赖
答案:
选A。
对象关系模型与关系模型的区别:
对象关系模型支持关系嵌套。
标准建模语言UML
五类图(共10种图)
第一类是用例图,从用户角度描述系统功能,并指出各功能的操作者。
第二类是静态图(Staticdiagram),包括类图、对象图和包图。
类图描述系统中类的静态结构。
类图描述的是一种静态关系,在系统的整个生命周期都是有效的。
对象图是类图的实例,几乎使用与类图完全相同的标识。
他们的不同点在于对象图显示类的多个对象实例,而不是实际的类。
一个对象图是类图的一个实例。
由于对象存在生命周期,因此对象图只能在系统某一时间段存在。
包图由包或类组成,表示包与包之间的关系。
包图用于描述系统的分层结构。
第三类是行为图(Behaviordiagram),包括:
状态图、活动图、顺序图和协作图。
描述系统的动态模型和组成对象间的交互关系。
状态图描述类的对象所有可能的状态以及事件发生时状态的转移条件。
通常,状态图是对类图的补充。
在实用上并不需要为所有的类画状态图,仅为那些有多个状态其行为受外界环境的影响并且发生改变的类画状态图。
活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。
活动图是一种特殊的状态图,它对于系统的功能建模特别重要,强调对象间的控制流程。
顺序图展现了一组对象和由这组对象收发的消息,用于按时间顺序对控制流建模。
用顺序图说明系统的动态视图。
协作图展现了一组对象,这组对象间的连接以及这组对象收发的消息。
它强调收发消息的对象的结构组织,按组织结构对控制流建模。
顺序图和协作图都是交互图,顺序图和协作图可以相互转换。
第四类是交互图(Interactivediagram),描述对象间的交互关系。
其中顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互;合作图描述对象间的协作关系,合作图跟顺序图相似,显示对象间的动态合作关系。
除显示信息交换外,合作图还显示对象以及它们之间的关系。
如果强调时间和顺序,则使用顺序图;如果强调上下级关系,则选择合作图。
这两种图合称为交互图。
第五类是实现图(Implementationdiagram)。
构件图描述代码部件的物理结构及各部件之间的依赖关系。
一个部件可能是一个资源代码部件、一个二进制部件或一个可执行部件。
它包含逻辑类或实现类的有关信息。
部件图有助于分析和理解部件之间的相互影响程度。
配置图定义系统中软硬件的物理体系结构。
它可以显示实际的计算机和设备(用节点表示)以及它们之间的连接关系,也可显示连接的类型及部件之间的依赖性。
在节点内部,放置可执行部件和对象以显示节点跟可执行软件单元的对应关系。
从应用的角度看,当采用面向对象技术设计系统时,首先是描述需求;其次根据需求建立系统的静态模型,以构造系统的结构;第三步是描述系统的行为。
其中在第一步与第二步中所建立的模型都是静态的,包括用例图、类图(包含包)、对象图、组件图和配置图等五个图形,是标准建模语言UML的静态建模机制。
其中第三步中所建立的模型或者可以执行,或者表示执行时的时序状态或交互关系。
它包括状态图、活动图、顺序图和合作图等四个图形,是标准建模语言UML的动态建模机制。
因此,标准建模语言UML的主要内容也可以归纳为静态建模机制和动态建模机制两大类。
关系代数:
集合运算、关系运算、算术比较、逻辑运算
集合运算:
并(∪)、交、差(-)、笛卡尔积(×)
专门关系运算:
投影(π)、选择(σ)、连接、自然连接、除
(1)投影:
对关系进行垂直分割,消去某些列,并重新安排列的顺序,再删去重复元组。
(2)选择:
从关系中选择满足条件的元组,条件可用命题公式F表示,F中的运算对象是常数(用引号括起来)或元组分量(属性名或列的序号)。
运算符有算术比较运算符(≤,<,≥,>,=,≠)和逻辑运算符(∧,∨,┐)。
δ为选择运算符,δF(R)表示从R中挑选满足公式F的元组所构成的集合。
(3)连接
θ连接,从R、S的笛卡尔积中选取属性间满足一定条件的元组
计算过程:
(1)计算R*S
(2)找出属性相等的元组
等值连接,当θ为=时的连接
自然连接,要求两个关系中进行比较的分量必须是相同得属性组,并将重复属性列去掉R
S
计算过程:
(1)计算R*S
(2)找出公共属性相等的元组(3)去掉S中公共属性列
左外连接:
取出左侧关系中,所有与右侧关系中任一元组都不匹配的元组,用NULL填充来自右侧关系的属性
右外连接:
取出右侧关系中,所有与左侧关系中任一元组都不匹配的元组,用NULL填充来自左侧关系的属性
等值连接与自然连接的异同:
自然连接一定是等值连接,反之不成立;
等值连接要求相同得分量,但不一定是公共属性
自然连接要求相等的分量必须是公共属性
等值连接不做投影运算,自然连接要把重复的属性列删除。
(4)除:
R如果能被S除,则一是R中属性必须包含S中属性;二是R中有些属性不在S中
R/S结果:
一个关系,属性由R中不在S中属性构成,元组则是S中所有元组在R中对应值相等的元组
R/S含义:
在R中找出包含所有S中属性的元组,且结果为R属性去掉S属性,并去掉重复元组。
1.1关系模型的数据约束
实体完整性约束:
关键属性不能为空
参照完整性约束,F.NO是R的外关键字,则R中的NO在F中:
1或取NULL;2或等于R.NO中某值。
不能引用一个不存在的实体
用户定义完整性:
值的类型,宽度等
例题:
某论坛数据库中,有主题表保存用户发布的主题,有“回复主题表”保存对主题的回复贴子,关系如下:
主题(主题编号,主题标题,主题内容,发布时间)
回复主题表(回复主题编号,主题编号,回复主题标题..)主题编号外键主题(主题编号)
问:
能够直接用delete主题where主题编号=‘T1201’删除主题中的某一元组吗?
答:
不能,会违反参照完整性约束,删除主题可能存在回复主题
解决方法:
(1)创建触发器,在删除主题时,删除其对应的回复主题
(2)在定义回复主题表时,指定级联删除。
即在定义主题编号属性的外键约束后加上
ondeletecascade
1.2三级模式/两级映像结构
外模式(子模式):
用户与数据库的接口,用户能够看到和使用的局部数据的逻辑结构和特征描述,逻辑关系上看,是概念模式的子集。
模式(概念模式):
既不涉及物理存储细节和硬件环境,也与具体的应用程序及程序语言无关,一个数据库只有一个概念模式;
内模式(存储模式):
数据库中数据物理结构和存储方式的描述,一个数据只有一个内模式。
三级结构通过映像来联系和转化
数据独立性:
逻辑独立性:
模式变化,无需改变外模式或应用程序
物理独立性:
不会因为内模式改变而导致模式改变
1.3范式:
主属性:
包含在任何一个候选码中的属性
1NF:
每个属性都是原子的,不可再分,而不能是集合,数组,记录等非原子数据项。
2NF:
每一个非主属性都完全依赖于码
3NF:
每一个非主属性,既不部分依赖于码,也不传递依赖于码
BCNF:
关系模式3NF,若每一个决定因素都含有码,则
所有非主属性对码都是完全函数依赖
所有主属性对每一个不包含它的码都是完全函数依赖
没有任何属性完全函数依赖于非码的任何一组属性
3NF的不彻底性表现在可能存在主属性对码的部分依赖或传递依赖
BCNF解决了插入异常、删除异常,但仍可能存在冗余
4NF:
解决多值依赖
1.4视图
视图是从一个或多个表或视图中导出的表,其结构和数据建立在对表的查询基础上。
视图不是真实存在的基础表,而是一个虚拟表。
视图的创建:
CREATEVIEW视图名(列名)
ASSELECT查询子句
[WITHCHECKOPTION]执行UPDATE、INSERT、DELECT操作时保证操作行满足视图定义中的谓词条件
1.5数据库设计
概念结构设计
对现实事物抽象的三种方法:
分类、聚集、概括
分类:
按照固有的特征和行为,定义一种类型,如学生类、教师类
聚集:
定义某一类型具有的属性
概括:
由一种已知类型定义新的类型,如由学生类型定义研究生类型
逻辑结构设计的主要任务:
确定数据模型、将E-R图转换为指定的数据模型、确定完整性约束、确定用户视图
1.5.1弱实体
对另一些实体具有很强的依赖性关系,即一个实体的存在必须以另一个实体为前提
如:
职工与家属的联系,家属总是属于职工的,家属就是弱实体
弱实体用双线矩形框表示
1.5.2超类-子类
特殊化:
一个实体集可以分为几个子实体,如学生实体集可以分为本科生、研究生、博士生等子集,这种由普遍到特殊的过程称特殊化;
普遍化:
将几个具有共同特性的实体集概括成一个更普遍实体集的过程
在扩充E-R模型中,子类继承超类的所有属性和联系,但子类还有自己特殊的属性和联系。
子类用双竖边矩形框表示
超类、子类的关系一般用特殊化圆圈和连线的方式表示,超类到圆圈有一条连线,连线为双线则表示全特殊化,连线为单线表示部分特殊化。
1.6SQL语句
结构化查询语言包含6个部分:
一:
数据查询语言(DQL):
其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。
保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDERBY,GROUPBY和HAⅥNG。
这些DQL保留字常与其他类型的SQL语句一起使用。
二:
数据操作语言(DML):
其语句包括动词INSERT,UPDATE和DELETE。
它们分别用于添加,修改和删除表中的行。
也称为动作查询语言。
三:
事务处理语言(TPL):
它的语句能确保被DML语句影响的表的所有行及时得以更新。
TPL语句包括BEGINTRANSACTION,COMMIT和ROLLBACK。
四:
数据控制语言(DCL):
它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。
某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
五:
数据定义语言(DDL):
其语句包括动词CREATE和DROP。
在数据库中创建新表或删除表(CREATTABLE或DROPTABLE);为表加入索引等。
DDL包括许多与人数据库目录中获得数据有关的保留字。
它也是动作查询的一部分。
六:
指针控制语言(CCL):
它的语句,像DECLARECURSOR,FETCHINTO和UPDATEWHERECURRENT用于对一个或多个表单独行的操作。
定义用关键词:
PRIMARYKEY
主键必须包含唯一的值。
主键列不能包含NULL值。
每个表都应该有一个主键,并且每个表只能有一个主键。
(1)Id_PintNOTNULLPRIMARYKEY,
(2)Id_PintNOTNULL,
PRIMARYKEY(Id_P)
FOREIGNKEY
指向另一个表中的PRIMARYKEY。
(1)Id_Pint[FOREIGNKEY]REFERENCESPersons(Id_P)两种写法,注意
(2)Id_Pint,
FOREIGNKEY(Id_P)REFERENCESPersons(Id_P)
CHECK限定约束
CHECK(Id_P>0)
Id_PintNOTNULLCHECK(Id_P>0),
INDEX索引
createindex索引名on表名(字段名asc/desc)
dropindex表名.索引名
例:
CREATEINDEXPersonIndexONPerson(LastNameDESC)降序索引注意DESC位置在括号里
CREATEINDEXPersonIndexONPerson(LastName,FirstName)多列索引
视图:
Createview视图名(属性列表)asselect...
授权
GrantallprivilegesontableT_StoUwithgrantoption
触发器trigger
createtriggerorderinsertafterinsertonorders
as
if(selectstatusfromgoods,insertedwheregoods.name=inserted.goodsname)=1
begin
print'thegoodsisbeingprocessed'
print'theordercannotbecommitted'
rollbacktransaction--回滚﹐避免加入
end
Createtrigger触发器Afterinserton表名
Foreachrow
When表明.id>5
Beginatomic
Update表名.级别=’1’。
COMMITWORK。
END
ALTER
添加列:
添加列ALTERTABLEADD[COLUMN]列名类型
ALTERTABLE账户ADD账户标识INTDEFAULT0
ALTERTABLE账户ADD(账户标识INTDEFAULT0,账户名称VARCHAR(8))多个列
删除列:
ALTERTABLEtable_nameDROPCOLUMNcolumn_name有COLUMN
ALTERTABLE账户DROPCOLUMN账户标识
修改值:
ALTERTABLESET账户标识=0有=
删除表:
DROPTABLE表名CASCADE|RESTRICT
CASCADE:
将表及所涉对象一起删除,默认
RESTRICT:
当有视图或约束条件涉及要删除的表,则禁止DBMS执行此命令
设置默认值:
ALTERTABLE表名
ALTERCOLUMN列名setdefault‘默认’。
ALTERCOLUMN列名dropdefault。
查询用关键词:
WHERE子句
各种条件运算符:
比较运算符(大小比较):
>;、>=、=、<;、<=、<>;、!
>;、!
<
范围运算符(表达式值是否在指定的范围):
BETWEEN…AND…NOTBETWEEN…AND…
列表运算符(判断表达式是否为列表中的指定项):
IN(项1,项2……)NOTIN(项1,项2……)
模式匹配符(判断值是否与指定的字符通配格式相符):
LIKE、NOTLIKE
空值判断符(判断表达式是否为空):
ISNULL、ISNOTNULL
逻辑运算符(用于多条件的逻辑连接):
NOT、AND、OR
1、范围运算符例:
ageBETWEEN10AND30相当于age>=10ANDage<=30
2、列表运算符例:
countryIN('Germany','China')
3、模式匹配符例:
常用于模糊查找,
%:
可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。
_:
匹配单个任意字符,它常用来限制表达式的字符长度。
[]:
指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
[^]:
其取值也[]相同,但它要求所匹配对象为指定字符以外的任一个字符。
ORDERBY查询结果排序,ASC升序,为默认值,DESC为降序。
DISTINCT删除重复行
TOPn[PERCENT]
限制返回的数据行数,TOPn说明返回n行,而TOPnPERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
TOP命令仅针对SQLServer系列数据库,并不支持Oracle数据库。
GROUPBY语句用于结合合计函数,根据一个或多个列对结果集进行分组。
SELECTCustomer,SUM(OrderPrice)FROMOrdersGROUPBYCustomer
HAVING子句
在SQL中增加HAVING子句原因是,WHERE关键字无法与合计函数一起使用。
SELECTCustomer,SUM(OrderPrice)FROMOrders
GROUPBYCustomer
HAVINGSUM(OrderPrice)<2000
AS:
SQLAlias
表的SQLAlias语法
SELECTcolumn_name(s)FROMtable_nameASalias_name
列的SQLAlias语法
SELECTcolumn_nameASalias_nameFROMtable_name
SELECTdistinct客户.*
FROM客户,账户,select*from支行where城市=‘jinan’AS新支行,交易AS交易别名
WHERE....
COMMITWORK[ANDWAIT].提交工作,如果使用ANDWAIT选项,那么在程序继续执行以前,它要等到更新任务的结束。
ROLLBACKWORK要在保存之前取消对数据库表所作的更改,使用ROLLBACKWORK语句:
集合运算:
countsumavgmaxmin
嵌套查询:
四种主要情况
(1)Inwhere学号in(select学号from学生where...)
(2)Maxminwhere分数=(selectmax(分数)from成绩)注意max是放里面的
(3)Allanywhere分数>all(select分数from成绩)
(4)EXISTS查询结果不返回数据,只产生逻辑真假
Whereexists(select...)
注意事项:
(1)groupby列名
having条件
ORDERBY列名
(2)字符串两边用单引号‘’
(3)空值:
列名ISNULL不能用列名=NULL
(4)匹配:
%匹配多个字符,_匹配一个字符
例:
查找第二个字符为F的姓名WHERE姓名LIKE‘_F%’
(5)COUNT([DISTINCT]*)用DISTINCT会在统计时删除重复性
(6)ANYALL
WHERE年龄
(7)不等于<>!
=大于等于>=
(8)外键foreignkey(id)referencesR(id)有括号
(9)SQL2不支持直接修改属性名、属性类型,因此必须先删除再添加
(10)可增加或减少列长度,但不能小于原有数据长度
(11)NULL->NOTNULL时,要先处理该记录使非NULL
(12)Select学号,2004-年龄as出生年份包含计算
(13)左右连接:
from学生leftjoin选课on..会把没选课的学生信息列出来
2.并发调度
事务:
事务的4个特性:
原了性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
·原子性:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中级 数据库 工程师 重要 知识点