完整版数据库原理知识点笔试必备Word格式.docx
《完整版数据库原理知识点笔试必备Word格式.docx》由会员分享,可在线阅读,更多相关《完整版数据库原理知识点笔试必备Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
2.数据模型的三要素
(1)数据结构
(2)数据操作
(3)数据的约束条件
3.实体模型,两个实体间的联系可分为3类:
(1)一对一联系(1:
1)如:
学校与校长,观众与座位等。
(2)一对多联系(1:
n)如:
省与市,学校与系部等。
(3)多对多联系(n:
m)如:
学生与课程,教师与课程,师生关系,商店与商品,图书与读者,工厂与产品等。
●关系数据模型的数据结构
关系:
对应通常说的表;
元组:
表中的一行即为一个元组;
属性;
表中的一例即为一个属性,属性(学号,姓名,性别,系别,年龄和籍贯);
主码(KEY):
表中的某个属性组,它可以唯一确定一个元组;
域(domain):
属性的取值范围,如人的年龄一般在1-100岁之间。
学生年龄属性的域应是(14—38),性别的域是(男,女),系别的域是一个学校所有系名的集合;
分量:
元组中的一个属性值;
关系模型:
对关系的描述,一般表示为:
关系名(属性1,属性2,……,属性N)
●关系数据模型的操纵与完整性约束条件
关系数据模型的操纵主要包括查询、插入、删除和更新数据。
这些操作必须满足关系的完整性约束条件。
关系的完整性约束条件包括3大类:
实体完整性、参照完整性和用户定义的完整性。
关系数据库
●关系模型概述
1.关系模型组成
关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
关系操作分为两大部分如图所示。
查询
其它
选择Select
增加Insert
投影Project
删除Delete
连接Join
修改Update
除Divide
并Union
交Intersection
差Difference
2.关系操作的特点
关系操作的特点是操作对象和操作结果都是集合。
而非关系数据模型的数据操作方式则为一次一个记录的方式。
关系数据语言分为三类:
(1)关系代数语言:
如ISBL;
(2)关系演算语言:
分为元组关系演算语言(如Alpha,Quel)、域关系演算语言(如QBE);
(3)具有关系代数和关系演算双重特点的语言:
如SQL。
●关系的完整性
关系模型的完整性规则是对关系的某种约束条件。
关系的完整性共分为三类:
实体完整性、参照完整性、用户定义完整性。
(1)实体的完整性(EntityIntegrity)规定:
若属性A是基本关系R的主属性,则属性A不能取空值。
即主属性不能为空。
(2)参照的完整性(ReferentialIntegrity)规定:
若F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系)则对于R中每个元组在F上的值必须为:
①或者取空值(F的每个属性值均为空值);
即外码可以为空
②或者等于S中某个元组的主码值。
(3)用户定义的完整性(UserdefinedIntegrity):
就是针对某一具体的关系数据库的约束条件,由应用的环境决定。
●关系代数
●等值连接与自然连接的区别和联系。
答:
连接运算符是“=”的连接运算称为等值连接。
它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组
自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。
SQL语言
●概念
SQL语言具有DDL、DML、DCL、DQ
功能
查询DQ——SELECT
数据定义DD——CREATE,DROP,ALTER
数据操纵DM——INSERT,UPDATE,DELETE
数据控制DC——GRANT,REVOKE
两种使用方式:
直接用SQL,DBMS解释执行;
嵌入其它宿主语言
●定义基本表
CREATETABLE<
表名>
(<
列名>
<
数据类型>
[列级完整性约束条件][,<
数据类>
[列级完整性约束条件]]…[,<
表级完整性约束条件>
]);
列级完整性约束条件有:
NULL(空)、UNIQUE(取值唯一),如NOTNULLUNIQUE表示取值唯一,不能取空值。
例建立一个“供应商”表S(Sno,Sname,Status,City)分别表示:
供应商代码、供应商名、供应商状态、供应商所在城市。
其中供应商代码不能为空,且值是唯一的,且供应商的名是唯一的。
CREATETABLES(SnoCHAR(3)NOTNULLUNIQUE,
SnameCHAR(30)UNIQUE,
StatusCHAR(8),
CityCHAR(20))
从上述定义可以看出,“SnoCHAR(3)NOTNULLUNIQUE”语句定义了Sno的列级完整性约束条件,取值惟一,不能取空值。
●修改基本表
ALTERTABLE<
[ADD<
新列名>
[完整性约束条件]][DROP<
完整性约束名>
][MODIFY<
]
例如,向“供应商”表S增加Zap“邮政编码”可用如下语句:
ALTERTABLESADDZapCHAR(6);
注意,不论基本表中原来是否已有数据,新增加的列一律为空。
又如,将Status字段改为整型可用如下信息:
ALTERTABLESMODIFYStatusINT;
●删除基本表
DROPTABLE<
●建立索引
CREATE[UNIQUE][CLUSTER]INDEX<
索引名>
ON<
[<
次序>
][,<
[<
]]…);
秩序可选:
ASC(升序),DSC(降序),默认值为ASC。
UNlQUE:
表明此索引的每一个索引值只对应惟一的数据记录。
CLUSTER:
表明要建立的索引是聚簇索引,意为索引项的顺序是与表中记录的物理顺序一致的索引组织。
●删除索引
DROPINDEX<
●视图的创建
CREATEVIEW视图名(列表名)
ASSELECT查询子句
[WITHCHECKOPTION];
注意,视图的创建中,必须遵循如下规定:
(1)子查询可以是任意复杂的SELECT语句,但通常不允许含有orderby子句和DISTINCT短语;
(2)WITHCHECKOPTION表示对UPDATE,INSTER,DELETE操作时保证更新、插入、或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式);
(3)组成视图的属性列名或者全部省略或者全部指定。
如果省略属性列名,则隐含该视图由SELECT子查询目标列的主属性组成。
例建立“计算机”系学生的视图,并要求进行修改、插入操作时保证该视图只有计算机系的学生。
CREATEVIEWCS_STUDENT
ASSELECTSno,Sname,Sage,SexFROMStudentWHERESD=’CS’
WITHCHECKOPTION
●查询
数据库查询是数据库的核心操作,SQL语言提供了SELECT语句进行数据库的查询。
格式如下:
SELECT[ALL|DISTINCT]<
目标列表达式>
[,<
]…
FROM<
表名或视图名>
[WHERE<
条件表达式>
[GROUPBY<
列名l>
[HAVING<
]]
[ORDERBY<
例名2>
[ASC|DESC]…]
SELECT子句中的输出可以是:
列名、表达式、集函数(AVG,COUNT,MAX,MIN,SUM),DISTINCT选项可以保证查询结果集中不存在重复元组。
FROM子句中的出现多个基本表或视图时,系统首先执行笛卡尔儿积操作。
WHERE子句的条件表达式中可以使用的运算符如图3—1所示:
运算符
含义
集合成员运算符
IN
NOTIN
在集合中
不在集合中
算术运算符
>
≥
≤
=≠
大于
大于等于
小于
小于等于
等于/不等于
字符串匹配运算符
LIKE
与_和%进行单个多个字符匹配
空值比较运算符
ISNULL
ISNOTNULL
为空
不能为空
逻辑运算符
AND
OR
NOT
与
或
非
●典型题解析
例学生数据库中有三个基本表(关系):
S(Sno,Sname,Age,Sex,SD)
C(Cno,Cname,Teacher)
SC(Sno,Cno.Grade)
请用SQL语言完成以下操作:
(1)检索选修课程名为“MS”的学生号和学生姓名;
(2)检索至少选修了课程号为‘C1’和‘C3’的学生号;
(3)检索选修了‘操作系统’或‘数据库’课程的学号和成绩;
(4)检索年龄在18到20之间(含18和20)的女生的学号、姓名及年龄;
(5)检索选修了“刘平”老师所讲课程的学生的学号、姓名及成绩;
解
(1)检索选修课程名为“MS”的学生号和学生姓名;
方法1(连接查询)
SELECTS.Sno,Sname;
FROMS,SC,C;
WHERES.Sno=SC.SnoANDSC.Cno=C.CnoANDC.Cname=’MS’
方法2(嵌套查询)
SELECTSno,Sname;
FROMS;
WHERESnoIN;
(SELECTSno;
FROMSC;
WHERECnoIN;
(SELECTCno;
FROMC;
WHERECname=’MS’))
(2)检索至少选修了课程号为‘Cl’和‘C3’的学生号;
SELECTSNO,CNO;
FROMSC;
WHERECNO="
C1"
ORCNO="
c3"
(3)检索选修了‘操作系统’或‘数据库’课程的学号和成绩;
SELECTSno,Grade;
FROMSC,C;
WHERESC.Cno=C.CnoAND(C.Cname='
操作系统'
OR;
C.Cname='
数据库'
)
方法2(嵌套查询)
SELECTSno,Grade;
WHEREC.Cname='
ORC.Cname='
(4)检索年龄在18到20之间(含18和20)的女生的学号、姓名及年龄(范围查询)
方法1
SELECTSno,Sname,Age;
WHEREAge>
=18ANDAge<
=20ANDSex='
女'
方法2(BETWEENAND)
SELECTSno,Sname,Age;
WHEREAgeBETWEEN18AND20ANDSex='
(5)检索选修了“刘平”老师所讲课程的学生的学号、姓名
方法l(连接查询)
SELECTS.Sno,Sname;
FROMS,SC,C;
WHERES.Sno=SC.SnoANDSC.Cno=C.CnoANDC.Teacher='
刘平'
SELECTSno,Sname
FROMS
WHERESnoIN
(SELECTSno
FROMSC
WHERECnoIN
(SELECTCno
FROMC
WHERETeacher=’刘平’))
●数据插入:
INSERTINTO基本表名(列名表)VALUES(元组值)或
INSERTINTO基本表名(列名表)SELECT查询语句
1.直接插入数据
INSERTINTO基本表名(列表名)
VALUES(元组值)
或
INSERTINTO基本表名(列表名)
(TABLE(元组值),(元组值),…)
例:
insertintoxs(xh,xm,xb)values("
9502101"
"
李三"
男"
2.插入一个查询结果值
SELECT查询语句
●数据删除:
DELETEFROM基本表名[WHERE条件表达式]
deletefromxswherexh='
819910'
●数据修改:
UPDATE基本表名
SET列名=值表达式,[列名=值表达式...]
[WHERE条件表达式]
●对视图的更新:
对视图的查询是和基本表相同的,但是更新操作则受到下列三条规则的限制:
∙如果视图是从多个基本表使用联接操作导出的,则不允许更新。
∙如果导出的视图使用了分组和聚合操作,也不允许更新。
∙如果视图是从单个基本表使用选择和投影操作导出的,并且包括了基本表的主码或某个候选码,则可以执行操作。
(这就相当于在基本表上操作)。
数据库安全性
●实现数据库系统安全性的技术和方法有多种,最重要的是存取控制技术和审计技术。
目前许多大型DBMS达到了C2级,其安全版本达到了B1
C2级的DBMS必须具有自主存取控制功能和初步的审计功能
B1级的DBMS必须具有强制存取控制和增强的审计功能
●自主存取控制功能一般是通过SQL的GRANT语句和REVOKE语句来实现的
●实现数据库安全性控制的常用方法和技术。
实现数据库安全性控制的常用方法和技术有:
(l)用户标识和鉴别:
该方法由系统提供一定的方式让用户标识自己的名字或身份。
每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。
(2)存取控制:
通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。
(3)视图机制:
为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。
(4)审计:
建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
(5)数据加密:
对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。
●用SQL的GRANT和REVOKE语句(加上视图机制)完成授权定义或存取控制功能:
(a)用户王明对两个表有SELECT权力。
GRANTSELECTON职工,部门
TO王明
(b)用户李勇对两个表有INSERT和DELETE权力。
GRANTINSERT,DELETEON职工,部门
TO李勇
(c)每个职工只对自己的记录有SELECT权力。
GRANTSELECTON职工
WHENUSER()=NAME
TOALL;
(d)用户刘星对职工表有SELECT权力,对工资字段具有更新权力。
GRANTSELECT,UPDATE(工资)ON职工
TO刘星
(e)用户张新具有修改这两个表的结构的权力。
GRANTALTERTABLEON职工,部门
TO张新;
(f)用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力。
GRANTALLPRIVILIGESON职工,部门
TO周平
WITHGRANTOPTION;
(g)用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权力,他不能查看每个人的工资。
CREATEVIEW部门工资AS
SELECT部门.名称,MAX(工资),MIN(工资),AVG(工资)
FROM职工,部门
WHERE职工.部门号=部门.部门号
GROUPBY职工.部门号
GRANTSELECTON部门工资
TO杨兰;
数据库完整性
●数据库的完整性概念与数据库的安全性概念有什么区别和联系?
●数据库的完整性
–数据的正确性和相容性
数据的完整性和安全性是两个不同概念
–数据的完整性防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据防范对象:
不合语义的、不正确的数据
–数据的安全性保护数据库防止恶意的破坏和非法的存取防范对象:
非法用户和非法操作
●RDBMS完整性实现的机制
–完整性约束定义机制
–完整性检查机制
–违背完整性约束条件时RDBMS应采取的动作
[例]定义SC中的参照完整性
CREATETABLESC
(SnoCHAR(9)NOTNULL,
CnoCHAR(4)NOTNULL,
GradeSMALLINT,
PRIMARYKEY(Sno,Cno),/*在表级定义实体完整性*/
FOREIGNKEY(Sno)REFERENCESStudent(Sno),
/*在表级定义参照完整性*/
FOREIGNKEY(Cno)REFERENCESCourse(Cno)
);
[例]Student表的Ssex只允许取“男”或“女”。
CREATETABLEStudent
(SnoCHAR(9)PRIMARYKEY,
SnameCHAR(8)NOTNULL,
SsexCHAR
(2)CHECK(SsexIN(‘男’,‘女’)),
/*性别属性Ssex只允许取'
男'
或'
*/
SageSMALLINT,
SdeptCHAR(20)
关系数据理论
●范式
在关系数据库中的一个非常重要的问题就是如何评价分解后的各个关系模式的好坏。
通常可以通过判断分解后的模式达到几范式来评价模式的好坏。
范式有:
1NF、2NF、3NF、BCNF、4NF和5NF。
这几种范式之间的关系如下:
1NF
2NF
3NF
BCNF
4NF
5NF
通过模式分解,将低一级范式的关系模式分解成了若干个高一级范式的关系模式的集合,这种过程叫做规范化。
下面将给出各个范式的定义。
1.1NF(第一范式)
定义若关系模式R的每一个分量是不可再分的数据项,则关系模式R属于第一范式(1NF)。
2.2NF(第二范式)
定义若关系模式R
1NF,且每一个非主属性完全依赖于码,则关系模式R
2NF。
即当1NF消除了非主属性对码的部分函数依赖,则成为2NF。
例FIRST关系中的码是Sno、Pno,而Sno
Status,因此非主属性Status部分函数依赖于码,故非2NF的。
若此时,将FIRST关系分解为:
FIRSTl(Sno,Sname,Status,City)
FIRST2(Sno,Pno,Qty)
2NF
因为FIRSTl和FIRST2中的码分别为Sno和Sno,Pno每一个非主属性完全依赖于码。
3.3NF(第三范式)
定义若关系模式R(U,F)中不存在这样的码X,属性组Y及非主属性Z(Z
Y)使得X
Y,(Y
X)Y
Z成立,则关系模式R
3NF。
即当2NF消除了非主属性对码的传递函数依赖,则成为3NF。
例FIRSTl
3NF,因为在分解后的关系模式FIRSTl中有:
Sno
Status,Status
City,存在着非主属性City传递依赖于码Sno。
4.BCNF(巴克斯范式);
定义若关系模式R
1NF,若X
Y且Y
X时,X必含有码,则关系模式R
BCNF。
即当3NF消除了主属性对码的部分和传递函数依赖,则成为BCNF。
结论一个满足BCNF的关系模式,应有如下性质:
(1)所有非主属性对每一个码都是完全函数依赖;
(2)所有非主属性对每一个不包含它的码,也是完全函数依赖;
(3)没有任何属性完全函数依赖于非码的任何一组属性。
学生(学生号,学生姓名,姓别,班级,…,家长姓名,家长电话,家庭住址)
学生姓名,家长姓名->
家长电话,家庭住址
数据库设计
●需求分析;
●概念结构设计:
ER模型(基本元素、联系的类型与属性、表示、设计),局部ER的集成依据与优化,冲突的消除,实体之间的联系类型(1:
1、1:
n、m:
n)
●逻辑结构设计:
ER模型向关系模型的转换(联系的转换、主键与外键)
1)ER模型向关系模型的转换应遵循如下原则:
①每个实体类型转换成一个关系模式;
②一个1:
1的联系可转换为一个关系模式,或与任意一端的关系模式合并。
若独立转换为一个关系模式,那么,两端关系的码及联系的属性为该关系的属性,且两端关系的码均可作为候选码;
若与一端合并,那么将另一端的码