简答题相关
目录没什么时间研究怎么简化,将就一下
函数依赖,范式,候选码求解
函数依赖
在了解范式前需要先了解一下函数依赖,以防题目中出现函数依赖的抽象描述看不懂。函数依赖的表达一般是A->B的形式,即A决定B
-
平凡函数依赖:
没什么意义的函数依赖,意思就是一个属性可以决定它本身
-
非平凡函数依赖:
就是在函数依赖的表达式中不存在平凡函数依赖这种废话
-
完全函数依赖:
在A->B中,A不可以拆分出子属性来决定B,这也是第二范式的判别条件
e.g. (A, B) -> C 是完全函数依赖,则A不能单独决定C,B同理也不能单独决定C
-
部分函数依赖:
不满足完全函数依赖条件的就是部分函数依赖
-
传递函数依赖:
很简单,就是A->B, B->C, 则A->C,其实就是间接决定的意思,这也是第三范式的判别条件
候选码的求解
候选码的求解考的概率挺大,可以重点复习一下
候选码的求解题型首先会给出关系模式的所有属性,再给出属性的函数依赖,要求通过这些条件求出候选码
解答步骤:
先暂定一组属性,通过属性的函数依赖来找它是否能够决定这个关系的所有属性
这个属性可以这样找:
-
从函数依赖的左侧找,左侧指的就是A->B的A这一侧。
因为左侧的属性能够决定右侧的属性,所以候选码大概率在左侧
-
也可以从完全不出现在函数依赖中的属性开始找,没有属性可以决定它,那么它作为候选码其中一员的可能性非常大
e.g. 设关系模式 R ( A B C D ) R(ABCD) R(ABCD),其函数依赖集 F = { D → B , B → D , A D → B , A C → D } F=\{D\rightarrow B, B\rightarrow D, AD\rightarrow B, AC\rightarrow D\} F={D→B,B→D,AD→B,AC→D}求R的所有候选码:
解答过程:
首先看D,D能决定B,接下来走不通了,pass
再看B,B能决定D,接下来走不通了,pass
看AD,AD能决定B,但ABD不能决定C,pass
最后看AC,AC能决定D,AD加一起又能决定B,这个时候ABCD全有了,那么AC是候选码
书面解答过程:(考试的时候可能要这么写,不过看答案好像可以直接给结果,总之会做就行)
由 ( A C ) + = { A , C } (AC)^+=\{A,C\} (AC)+={A,C}和 A C → D AC\rightarrow D AC→D得 ( A C ) + = { A , C , D } (AC)^+=\{A,C,D\} (AC)+={A,C,D}
由 ( A C ) + = { A , C , D } (AC)^+=\{A,C,D\} (AC)+={A,C,D}和 A D → B AD\rightarrow B AD→B得 ( A C ) + = { A , C , D , B } (AC)^+=\{A,C,D,B\} (AC)+={A,C,D,B}
所以 A C AC AC是 R R R的唯一候选码
范式的判断
注意:每个高级的范式条件都建立在低级范式条件的基础上,也就是说如果有一个关系连低级范式的条件都不满足,那么它必不可能是高级的范式
-
第一范式(1NF):
在关系中每个属性不可再分割,也就是每一列不能再被分割为更小的列
-
第二范式(2NF):
主属性(候选码)完全决定非主属性,如果主属性是由多个属性组成的,2NF规定组成主属性的列不能拆分出来单独决定某个非主属性
-
第三范式(3NF):
主属性(候选码)不能通过关系的传递来间接决定某个非主属性,每个非主属性都必须直接被主属性决定
考点可能会要求将第二范式分解为第三范式,找到多余的候选码,将多余的候选码分解出来即可
-
BC范式(BCNF):
不考,看个乐子
不管是候选码还是非主属性都不能传递函数依赖一个候选码,即在关系中某个B->C的函数依赖里,候选码不能出现在右边
参考题型
例题1
现有如下关系模式:
R(A,B,C,D,E)
其中:AB组合为码
R上存在的函数依赖有AB→E,B→C,C→D
(1)该关系模式满足2NF吗?为什么? (4%)
(2)如果将关系模式R分解为:
R1(A,B,E)
R2(B,C,D)
指出关系模式R2的码,并说明该关系模式最高满足第几范式?(在1NF~BCNF之内)为什么?
答案
(1)答:不满足。
因为码为AB,并且B→E,而E是非主属性,存在非主属性对码的部分依赖。
(2)R2的码为B
R2最高满足2NF
因为B为单属性,R2满足2NF,但存在B→C,C→D,即非主属性对码的传递函数依赖,R2不满足3NF,故R2最高满足2NF。
例题2
设有关系模式 R<U, F> U={ A , B , C , D , E }
F={AB→C, B→D, C→E, EC→B, AC→B },求R的候选码,并判断R的范式。
答案
答:R的候选码: AB, AC;
主属性: A, B, C; 非主属性: D, E。
R 不属于 BCNF ∵ EC → B的决定因素EC不包含码。
R 不属于 3NF ∵存在非主属性E对码AB的传递依赖:
AB→C , C→E
R 不属于 2NF
∵存在非主属性D对码AB的部分依赖 B → D。
R 属于 1NF
关系代数的计算
关系代数的计算其实很简单,掌握选择和投影两个计算的概念和计算方法就行,连接有能力就蛮看看,除可以用一堆选择和投影代替
选择 σ
选择运算是对行的筛选运算,也就是选择表里的特定行,在T-SQL语法中对应的语句是WHERE
选择运算用σ
表示,字符型变量要用一对单引号扩起
格式如下: σ 条 件 ( 表 名 ) σ_{条件} (表名) σ条件(表名)
e.g. 查询计算机系的全体学生:
σ
S
d
e
p
t
=
′
C
S
′
(
S
t
u
d
e
n
t
)
σ_{Sdept ='CS'} (Student)
σSdept=′CS′(Student)
Sdept
是属性名,'CS'
为Sdept
的取值,Student
为表名
e.g. 查询Student表中年龄小于20的男生:
σ
(
S
a
g
e
<
20
)
∧
(
S
s
e
x
=
′
男
′
)
(
S
t
u
d
e
n
t
)
σ_{(Sage\; < \;20)\;∧\;(Ssex\;=\;'男')} (Student)
σ(Sage<20)∧(Ssex=′男′)(Student)
这个∧表示与的意思
投影 π
投影运算是对列的筛选运算,也就是选择表里的特定列,在T-SQL语法中对应的语句是SELECT
投影运算用π
表示,格式如下:
π 列 名 ( 表 名 ) π_{列名}(表名) π列名(表名)
e.g. 查询学生关系中有哪些系:
π
S
d
e
p
t
(
S
t
u
d
e
n
t
)
π_{Sdept}(Student)
πSdept(Student)
Sdept
是属性名,Student
为表名
连接
连接运算是两个表的运算,一般用于找到两个表中相同属性包含的字段
连接有等值连接和自然连接,自然连接其实就是等值连接去掉了两个表合并以后重复的属性
等值连接的表示:
R
⋈
条
件
S
R⋈_{条件}S
R⋈条件S,自然连接不在⋈
下写明条件
等值连接仅做满足条件的横向连接,会保留两个关系中的相同属性(列)
除 ÷
除运算同时从行和列的角度进行运算,适用于包含“全部”字眼的查询
e.g. 查询已注册选修了所有课程的学生的名字
除运算如果没有要求用的话可以用选择和投影代替,如果有要求用的话,我笔记全在下面,自求多福了
这个东西太抽象了我自己不看例题都看不懂
定义:给定关系R(X, Y)
, S(Y, Z)
,X, Y, Z为属性列,关系R和关系S中的Y出自相同域集,即Y为R,S的共同属性,则:
R ÷ S = { t r [ X ] ∣ t r ∈ R ∧ Π Y ( S ) ⊆ Y x } R\div S\;=\;\{ t_r[X]\; |\; t_r\;∈\; R\, ∧\, Π_Y(S)⊆Y_x \} R÷S={tr[X]∣tr∈R∧ΠY(S)⊆Yx}
其中, Y x Y_x Yx为 x x x在 R R R中的象集, x = t r [ X ] x=t_r[X] x=tr[X]
除后只剩下属性X
对于: T = R ÷ S T=R\div S T=R÷S
T中包含了R中所有这样的元组:这些元组以同一个身份选中了S中所有的内容,然后把S里的属性扔掉,剩下的属性构成了这样的元组。
结果就是在R表中,同时满足S表中与R表相同属性的所有条件的信息,但没有S2中的字段的新表。
结果的特点:同时满足除数的与被除数的相同属性,同时其余各属性都相等
- 结合投影使用,可达到某列相同元素,同时满足满足另一列的属性
(小总结:左表除右表的结果应该是找到左表里和右表相同的属性,结果就是看左表里和右表不相同的属性对应的那些相同属性的值与右表完全相同的有哪些)
这玩意太抽象了我讲不明白,看下面的例题吧
e.g. 设关系 R 、 S R、S R、S分别为下表中左和右两表,求 R ÷ S R\div S R÷S
A | B | C | B | C | D | |
---|---|---|---|---|---|---|
a1 | b1 | c2 | b1 | c2 | d1 | |
a2 | b3 | c7 | b2 | c1 | d1 | |
a3 | b4 | c6 | b2 | c3 | d2 | |
a1 | b2 | c3 | ||||
a4 | b6 | c6 | ||||
a2 | b2 | c3 | ||||
a1 | b2 | c1 |
R ÷ S R \div S R÷S:
A |
---|
a1 |
e.g.左表为 R R R,右表为 S S S,求 R ÷ S R\div S R÷S
A | B | C | D | C | D | |
---|---|---|---|---|---|---|
a | b | c | d | c | d | |
a | b | e | f | e | f | |
a | b | h | k | |||
b | d | e | f | |||
b | d | d | l | |||
c | k | c | d | |||
c | k | e | f |
结果为
A | B |
---|---|
a | b |
c | k |
e.g. 查询至少选修1号课程和3号课程的学生号码
Cno | Sno | Cno | |
---|---|---|---|
1 | 200215121 | 1 | |
3 | 200215121 | 2 | |
200215121 | 3 | ||
200215122 | 2 | ||
200215122 | 3 |
解题思路:首先建立一个临时关系K,然后求: π S n o , C n o ( S C ) ÷ K π_{Sno,\,Cno}(SC)\div K πSno,Cno(SC)÷K
200215121象集{1, 2, 3} 200215122象集{2, 3}
K = Π C n o ( σ C n o = ′ 1 ′ ∨ C n o = ′ 3 ′ ( C o u r s e ) ) = { 1 , 3 } K=Π_{Cno}(σ_{Cno='1' ∨ Cno='3'}(Course))=\{1,3\} K=ΠCno(σCno=′1′∨Cno=′3′(Course))={1,3}
于是: Π S n o , C n o ( S C ) ÷ K = { 200215121 } Π_{Sno,\,Cno}(SC)\div K\; =\; \{200215121\} ΠSno,Cno(SC)÷K={200215121}
象集 Z x Z_x Zx
给定一个 X X X和关系 R ( X , Z ) R(X, Z) R(X,Z), Z Z Z为属性组。
当 t [ X ] = x t[X]=x t[X]=x时, x x x在 R R R中的象集为:
Z x = { t [ Z ] ∣ t ∈ R , t [ X ] = x } Z_x=\{t[Z]\; |\; t ∈R,\;t[X]=x \} Zx={t[Z]∣t∈R,t[X]=x}
它表示 R R R中属性组 X X X上值为 x x x的诸元组在 Z Z Z上分量的集合
e.g. R R R:
x1 | Z1 |
---|---|
x1 | Z2 |
x1 | Z3 |
x2 | Z2 |
x2 | Z3 |
x3 | Z1 |
x3 | Z3 |
-
x
1
x_1
x1在
R
R
R中的象集
Z x 1 = { Z 1 , Z 2 , Z 3 } Z_{x_1}=\{Z1,Z2,Z3\} Zx1={Z1,Z2,Z3} -
x
2
x_2
x2在
R
R
R中的象集
Z x 2 = { Z 2 , Z 3 } Z_{x_2}=\{Z2,Z3\} Zx2={Z2,Z3} -
x
3
x_3
x3在
R
R
R中的象集
Z x 3 = { Z 1 , Z 3 } Z_{x_3}=\{Z1,Z3\} Zx3={Z1,Z3}
综合题
画E-R图
没什么好讲的,实体用方框画,属性用圆形画,联系用菱形画,线不要带箭头直接连
画关系模式
其实就是画个表格,格式是 :
表名 (主键,属性1,…,属性n)
使用T-SQL语句建数据表
语法格式如下:
CREATE TABLE 表名 (
列名1 类型 约束条件(可选),
....
列名n 类型 约束条件(可选),
表级约束条件(可选)
)
其中常用的列级约束条件有:
NOT NULL #指定不为空
PRIMARY KEY #主键
CHECK(条件表达式) #检查是否满足条件表达式
IDENTITY(初始值,增长值) #自增长值,常用于主键
常用的表级约束条件:
PRIMARY KEY(列名,可多个) #指定主键
CHECK(条件表达式) #检查是否满足条件表达式
FOREIGN KEY 列名 REFERENCES 表名(列名) #指定外码,用于指示参照完整性
创建DML触发器
不知道考不考,反正先整着
首先介绍一下触发器
触发器是数据库服务器中发生事件时自动执行的一种特殊的存储过程
分为DML,DDL触发器和LOGIN登录触发器
-
DML触发器:
用于数据操纵语言DML的触发器,主要针对数据的增删改语句
-
DDL触发器:
用于数据定义语言DDL的触发器,主要针对数据表的增删改语句
-
LOGIN触发器:
实现对登录用户的锁定、限制和跟踪等
AFTER触发器和INSTEAD OF触发器
DML触发器根据执行的时间又分为AFTER触发器和INSTEAD OF触发器
-
AFTER触发器:
顾名思义是事件执行后才激发执行的触发器
-
INSTEAD OF触发器:
顾名思义直接替换掉相关的DML语句,在语句执行前就激发执行的触发器
使用T-SQL语句创建DML触发器
AFTER触发器:
CREATE TRIGGER 触发器名
ON 表名
FOR AFTER 具体的DML事件
AS
触发器的具体SQL语句
INSTEAD OF触发器:
CREATE TRIGGER 触发器名
ON 表名
FOR INSTEAD OF 具体的DML事件
AS
触发器的具体SQL语句
较为零散的考点
目录没时间研究怎么简化,就这样吧
与文件系统相比,数据库系统的优点
- 数据冗余度减少
- 数据共享性增强
- 具有较高的数据独立性
- 数据组织结构化
- 具有统一的数据控制功能
关系的性质
- 列是同质的,即每一列的数据类型相同,并来自同一个域
- 不同的列可出自同一个域
- 其中的每一列称为一个属性
- 不同的属性要给予不同的属性名
- 列的顺序是任意的
- 不允许存在两个相同的元组
- 行的顺序是任意的
- 每一个分量都是不可再分的,即不允许表中套表
数据库,数据库管理系统,数据库系统的概念
-
数据库:
长期存储在计算机内的,有组织的,可共享的大量数据集合
-
数据库管理系统:
是位于用户与操作系统之间的一层数据管理软件
-
数据库系统:
包括数据库,数据库管理系统,应用程序和数据库管理员,是管理数据库的系统
数据库三级模式结构及其优点
-
内模式:
又称为存储模式或物理模式(名字真多)是数据在数据库系统中最底层的表示
描述了数据的物理结构和存储方式,定义了存储记录的类型,存储域的表示等
-
概念模式:
又称为逻辑模式,用于对整个数据库中数据逻辑结构的特征、实体及其性质与联系进行描述
是现实世界中按需求讲某个应用环境抽象形成的整体逻辑
-
外模式:
又称子模式或用户模式(我真麻了),是概念模式的一个子集
是应用程序所使用的局部数据的逻辑结构和特征的描述,是使用该程序的用户所看到的数据视图
优点:把数据的具体组织留给DBMS管理,使用户能逻辑抽象地处理数据,而不必关心数据在计算机中的表示和存储。保证了数据能具有较高的逻辑独立性和物理独立性
数据管理和数据处理的关系
-
数据处理:
也称信息处理,泛指用计算机对各种类型数据进行的处理操作,这些操作包括 对数据进行采集、转换、分类、存储、排序、加工、维护、统计和传输等一系列活动。
-
数据管理:
主要指对数据进行分类、组织、编码、存储、检索和维护等数据处理的基本操作,是数据处理的核心内容。
数据完整性和安全性的区别
- 完整性:防止数据在操作过程中出现不正确的数据
- 安全性:防止数据库被恶意破坏或被非法操作
数据库分离和删除的区别
数据库的分离是指把数据库从DBMS连接中分离出来变成静止的文件以供操作,删除是指直接删除文件
关系模型的完整性规则
- 实体完整性(即主键
- 参照完整性(即外键
- 用户定义的完整性
等值连接和自然连接的区别
等值连接是从两个关系中选取指定的两个属性值相等的元组
自然连接是删除重复属性的等值连接
数据模型的三要素
-
数据结构:
用于描述数据的静态特性
是数据模型的基础,确定数据模型的性质
-
数据操作:
是对数据库中各种对象类型的实例允许执行的所有操作和相关操作规则的集合
是数据模型的关键,确定数据模型的动态特性
-
数据的约束条件:
是一组完整性规则的集合
主要起辅助作用,用于保证数据的正确性,有效性和相容性
SQL的四大功能
- 数据查询功能
- 数据操纵功能(数据的增删改)
- 数据定义功能(数据表的增删改)
- 数据控制功能(事务管理,安全性控制等)
登录名,数据库用户和数据库的关系
登录名只是用户登录数据库服务器的凭证,要访问数据库,还必须要有基于登录名创建的数据库用户
角色的作用
角色是相关操作权限的集合,可以分为服务器角色,数据库角色,应用程序角色等
可以将角色视为一个用户组,可以简化权限管理,将主体添加到角色中就可以让主体拥有角色的全部权限
事务
定义
事务是构成单一逻辑工作单元的数据库操作序列。这些操作是一个统一的整体,要么全部成功执行(执行结果写入到物理数据文件),要么全部不执行(执行结果不写入到任何文件)
事务的ACID特性
事务的主要特性体现在以下四个方面:
-
原子性(A
事务是数据库操作的逻辑工作单位,事务中的操作是一个整体,不能再被分割,要么全部执行,要么全部都不执行
-
一致性(C
事务的一致性是指事务执行前后都能保持数据库状态的一致性,即事务的执行结果是将数据库从一个一致状态变为另一个一致状态
-
隔离性(I
多个事务在并发执行时互不干扰
-
持久性(D
又称永久性,指一个事务成功提交,其对数据库的改变将是永久的,即使有系统故障等问题
一个数据库管理系统及其并发控制机制应确保这些特性不被破坏
并发控制的作用
因为数据库具有共享性,所以很可能会产生多个用户同时访问数据块的问题,因此需要引入并发控制来解决并发访问数据块可能产生的各种问题
锁及其意义
锁是用于事务并发控制的一种机制
锁用于锁定数据块,分为以下几种:
-
共享锁(读锁):
一个数据块被加上共享锁后,其他事务可以读取这个数据块,但不能修改这个数据块。
此时其他事务可以对数据块重复加共享锁
-
排它锁(写锁):
一个数据块被加上排它锁后,加锁的事务可以对它进行修改操作,其他事务不能对它上任何锁,也不能执行任何修改操作
-
更新锁:
一个能在共享锁和排它锁状态反复横跳的锁,在读数据的时候是共享锁,在更新数据的时候是排它锁
可以较好地防止死锁,且一个数据块一次只能分配一个更新锁
视图和数据表
视图其实就是一个可视化的查询命令,是一种动态生成的“虚表”
视图是基于数据表的一种查询语句,针对视图的操作实际上是对原数据表的操作
视图的优点
挑一点好记的记一点就好
-
提供个性化的数据显示功能
-
简化数据操作
-
自组织数据
-
组合分区数据
-
便于数据共享
-
提高安全性
数据库管理系统DBMS的功能
-
数据定义功能(就是创建表,修改表这些
-
数据操纵功能(数据的增删改查
-
数据控制功能(控制数据库的安全性,完整性等
以上三种为主要功能,下面的可以忘,上面的不能忘
以下功能大部分包含在上面三种功能内
- 数据通信功能
- 数据库的建立和维护功能
- 数据组织、存储和管理功能
- 数据库的运行管理功能