数据库原理期末复习

数据库原理期末复习

目录

数据库原理复习 1

一.基础 1

二.语句查询 4

语法 4

三.简答题 7

1.视图,表,之间的区别 7

2.事务 9

3.游标使用步骤 9

4.属性及闭包计算 9

5.触发器与存储过程 10

6.数据库设计(重点) 10

四.应用题.范式 11

1.求候选码 11

2.范式 12

3.分解成第几范式 14

五.E-R图设计,以及转换成关系模式 15

一.基础

1.DB:数据库

DBMS:数据库管理系统(数据库系统核心,管理和控制数据)

DBS:数据库系统

2.人工管理阶段

文件系统管理阶段:程序与数据有了一定独立性

数据库系统管理阶段

3.数据库系统特点:
数据结构化、共享高、冗余低、易扩充、数据独立性高

4.数据模型:概念模型(如E-R模型)、逻辑模型(如层次、网状、关系模型)、物理模型

5.数据库系统的三级模式:外模式、概念模式、内模式。

外模式:即用户模式,局部数据。一个数据库可有多个外模式。

概念模式:所有用户的公共数据视图。一个数据库只有一个概念模式。

内模式:物理结构和存储结构的描述。一个数据库只有一个内模式。

6.数据库的二级映像:

外模式 / 模式映像:保证程序与数据的逻辑独立性。

模式 / 内模式映像:保证数据的物理独立性。

关系的完整性:实体完整性(主码唯一且不为空)、参照完整性(参照属性能找到或取空值)、用户自定义完整性

8. 两个关系R、S能进行并、交、差运算,必须有相同的属性个数,即并相容性。

9.关系运算:
选择(σ):选出一行。
投影(π):投出一列。
连接、除

10. 平凡函数依赖:X–>Y,Y是X的子集。

非平凡函数依赖:X–>Y,Y不是X的子集。

完全函数依赖:X–>Y,设Z是X的真子集,没有Z–>Y。

部分函数依赖:X–>Y,设Z是X的真子集,有Z–>Y。

传递函数依赖:X–>Z,有X–>Y和Y–>Z,且无Y–>X。

11. 左外连接:以左表为主表,右表中没数据的为null

右外连接:以右表为主表,左表中没数据的为null

12. 索引:数据库的附加表,建立列的值和记录地址的映射,以加快查询速度

13. 聚集索引和非聚集索引区别?

聚集索引物理存储连续;非聚集索引是逻辑上的连续,物理存储不连续;

聚集索引一个表只能有一个;非聚集索引一个表可有多个。

14. 并发操作引发的问题

  1. 丢失更新问题:同时读同一数据并修改。

  2. 读“脏”数据:读取了未提交事务的数据。

  3. 不可重复读(幻读现象):两次读同一数据不一样,另一个事务修改了数据。并发操作破坏了事务的隔离性。

15. 并发控制措施:封锁

16. 写锁(排他锁):即X锁,已有X锁或S锁时,不能加X锁

读锁(共享锁):即S锁,只有S锁时,可加S锁

17. 死锁预防:一次封锁法、顺序封锁法

可串行化调度:结果正确,当且仅当其结果与按某一顺序的串行执行的结果相同时,该策略为可串行化调度策略。两段锁协议可保证并发调度可串行化。

20.两段锁协议:先封锁,后解锁

  • 遵循两段锁协议,一定可串行化;可串行化,不一定遵循两段锁协议

  • 遵循两段锁协议,仍可能发生死锁

21.数据库故障类型

  • 事务内部故障:非预期,不能由程序处理。如运算溢出、死锁。

  • 系统故障(软故障):如硬件错误、停电。

  • 介质故障(硬故障):外存故障,如磁盘损坏。

  • 计算机病毒

22.数据转储:静态转储、动态转储

23.“先写日志文件”原则

24. 安全控制:确认登录账户,确认访问数据库权限,确认操作数据库权限。

用户分类:系统管理员、数据库对象拥有者、普通用户。

角色:一组具有相同权限的用户。

25. 备份类型

完整备份:所有数据库信息备份

差异备份:对最近一次数据库备份发生变化的数据进行备份

事务日志备份

备份内容:系统数据库、用户数据库、事务日志

并发:

二.语句查询

语法

连接数据库:mysql -h localhost -u root -p

创建数据库:create database 数据库名;

显示数据库:show databases;

删除数据库:drop 数据库名;

使用数据库:use 数据库名;

显示当前数据库的所有表:show tables;

插入数据:

insert into table_name

( field1, field2,…fieldN )

values

( value1, value2,…valueN );

update子句:

update table_name set field1=new-value1, field2=new-value2

[where Clause];

delete子句:

delete from table_name [where Clause];

查询:

查询数据:

select column_name,column_name

from table_name

[where Clause]

[LIMIT N][ OFFSET M];

where子句:(可以加and,or,in,not in)

select field1, field2,…fieldN from table_name1, table_name2…

[where condition1 [AND [OR]] condition2…;

like子句:( _表示一个未指定字符,%指定多个不定符)

SELECT * from table_name where runoob_author LIKE ‘%COM’;

union子句:

select 语句 union select语句

排序:( ASC:升序,DESC:降序,默认升序)

语法:select * from table_name order by submission_date ASC;

分组:(GROUP BY 语句根据一个或多个列对结果集进行分组。

在分组的列上我们可以使用 COUNT, SUM, AVG,max,min等函数。)

语法:select column_name, function(column_name)

from table_name

where column_name operator value

GROUP BY column_name;

举例:SELECT name, COUNT(*) FROM employee_tbl GROUP BY name;

is判断是否为空值

distinct 去重

group by 分组 (用函数时,条件筛选用having而不是where)

语法: SELECT name, COUNT(*) FROM employee_tbl GROUP BY name;

having:用于gourp by 条件筛选

等值连接(获取两个表中字段匹配关系的记录。):SELECT a.runoob_id, a.runoob_author,
b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author =
b.runoob_author;

左连接(获取左表所有记录,即使右表没有对应匹配的记录。):SELECT a.runoob_id,
a.runoob_author, b.runoob_count FROM runoob_tbl a LEFT JOIN tcount_tbl b ON
a.runoob_author = b.runoob_author;

右连接( 与 LEFT JOIN
相反,用于获取右表所有记录,即使左表没有对应匹配的记录。):SELECT a.runoob_id,
a.runoob_author, b.runoob_count FROM runoob_tbl a RIGHT JOIN tcount_tbl b ON
a.runoob_author = b.runoob_author;

as 起别名,填在数据库名后面

exits存在 not exits不存在

union并集 intersect 交集 except差集

约束:

primary key 主键(不能为空,且不能重复)

foreign key 外键(用法:foreign key(pid) references student(id))

not null 不为空

unique 唯一

default 默认值

三.简答题

1.视图,表,之间的区别

:是数据存储的最常见和最简单的形式,是构成关系型数据库的基本元素。表的最简单形式是由行和列组成,分别都包含着数据。表在数据库占据实际的物理空间,可以是永久的或是临时的。

视图:是一个或多个表依照某个条件组合而成的结果集

联系与区别:

  • 视图是已经编译好的sql语句,而表不是。视图没有实际的物理记录,而表有。

  • 表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表

  • 表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在

  • 基表中的数据发生变化,从视图中查询出的数据也随之改变,视图的修改影响基表的数据,但视图的删除不影响基表

  • 表是概念模式,视图是外模式

2.事务

概念:用户定义的一个数据操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单元。

事务四大特性(简称ACID) :(重点)

  • 原子性(Atomicity):事务包含的操作全部成功或者全部失败

  • 一致性(Consistency):数据库从一个一致性状态变到另一个一致性状态

  • 隔离性(Isolation):事务互相隔离互不干扰

  • 持久性(Durability):事务提交后数据应该被永久的保存下来,出现宕机等故障后可以恢复数据

3.游标使用步骤

  1. 声明游标。使用T-SQL语句生成一个结果集,并且定义游标的特征,如游标中的记录是否可以修改。

  2. 打开游标。

  3. 从游标的结果集中读取数据。从游标中检索一行或多行数据称为取数据。

  4. 对游标中的数据逐行操作。

  5. 关闭和释放游标。

4.属性及闭包计算

首先我们要知道闭包是什么(直白:闭包就是由一个属性直接或间接推导出的所有属性的集合):

设有关系模式R(U),U是属性集,F是函数依赖集,X⊆U。F+中所有X->A的A的集合称为X的闭包,记为X+。

ps:可以理解为X+表示所有X可以决定的属性

属性集闭包求法

下面介绍的是比较简单传统的闭包求法

求取属性集闭包的步骤:

1.设要求的闭包属性集是Y,把Y初始化为X.

2.检查函数依赖集F中的每个函数依赖A->B,如果属性集A中的所有属性都在Y中,而B中有属性不在Y中,则将其加入到Y中。

3.重复第二步,直到没有属性可以添加到Y中为止。最后得出的Y就是X+。

*例子:*设有关系模式R(M,N,X,Y,Z)其依赖集F={M->H,H->Z,Y->Z,N->Y,Z->M}。求M+,MH+

第一步:设要求的闭包属性集是Y,把Y初始化为X.

令X={M},我们先看M->H,由于函数依赖M->H左边的所有属性都在X中,而右边H不在X中,所以可以把H添加到X
中,此时X={M,H}

然后按照顺序我们再看H->Z,我们不难发现函数依赖H->Z左边的所有属性都在X中,右边的属性Z又不在X中,仍旧添加,这时X={M,H,Z}

下一个

Y->Z,可以发现Y属性不在X中,条件不满足

N->Y,可以发现N属性不在X中,条件不满足

Z->M,Z属性在X中条件满足,但右边M也在X中条件不满足。

属性判断完 ,那么属性M的闭包:M+=MHZ。

5.触发器与存储过程

存储器:基本表被在修改的时候通过事件触发而执行的存储过程.

存储过程:一种数据库对象,将负责不同功能的语句分类放置起来,以便能反复使用.

触发器与存储过程的区别:
触发器与存储过程的主要区别在于触发器的运行方式。存储过程必须有用户、应用程序或者触发器来显示的调用并执行,而触发器是当特定时间出现的时候,自动执行或者激活的,与连接用数据库中的用户、或者应用程序无关。当一行被插入、更新或者删除时触发器才执行,同时还取决于触发器是怎样创建的,当UPDATE发生时使用一个更新触发器,当INSERT发生时使用一个插入触发器,当DELETE发生时使用一个删除触发器。

6.数据库设计(重点)

1.需求分析: 进行数据库设计首先必须准确了解和分析用户需求

2.概念结构设计:对用户需求进行综合,归纳与抽象,形成了一个独立于具体DBMS的概念模型。

3.逻辑结构设计:将概念结构转换为某个DBMS所支持的数据模型,设计E-R图

4.模式求精:对逻辑结构设计进行优化

5.物理结构设计:为逻辑数据结构模型选取一个最适合应用环境的物理结构

6.应用与安全设计:数据库系统的性能,并进一步调整和修改数据库。

四.应用题.范式

1.求候选码

函数依赖:
设R(U)是属性集U上的关系模式,X、Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称Y函数依赖于X或X函数确定Y。

完全函数依赖
设R(U)是属性集U上的关系模式,X、Y是U的子集。如果Y函数依赖于X,且对于X的任何一个真子集X’,都有Y不函数依赖于X’,则称Y对X完全函数依赖。记作:如果Y函数依赖于X,但Y不完全函数依赖于X,则称Y对X部分函数依赖。

主属性:

所有的候选键包含的属性集合是主属性集合
相应的非主属性是所有候选码都不包含的属性

2.范式

  • 1NF:所有关系模式都满足1NF,1NF要求是表中无表。

  • 2NF:

    若某关系R属于第一范式,且每一个非主属性完全函数依赖于任何一个候选码,则关系R属于第二范式。

判断一个关系是否属于第二范式:

  1. 找出数据表中的所有码;

  2. 找出所有主属性和非主属性;

  3. 判断所有的非主属性对码的部分函数依赖。

  • 3NF: 非主属性既不传递依赖于码,也不部分依赖于码。

  • BCNF:消除了主属性对候选码的部分和传递函数依赖。

3.分解成第几范式

3NF分解

3NF分解一般分为两种:保持依赖和无损连接。

为了说明求解保持依赖,我们先要会求最小依赖集。

(1)最小依赖集求法:

口诀:

右侧先拆单,依赖依次删。

还原即可删,再拆左非单。

通过求下面的最小依赖集对口诀进行解释,

如果想深入了解如何求最小依赖集,请参考:最小依赖集求法

(2)3NF分解:

口诀:

保函依赖分解题,先求最小依赖集。

依赖两侧未出现,分成子集放一边,剩余依赖变子集。

若要连接成无损,再添候选做子集。

例题

例1.已知R(ABCDE), F={A ->D,E->D,D->B,BC->D,DC->A}求保持函数依赖的3NF分解,和具有无损连接性及保持函数依赖的3NF分解

第一步:保函依赖分解题,先求最小依赖集。

先求出R的最小依赖集,可得F={A ->D,E->D,D->B,BC->D,DC->A}

第二步:依赖两侧未出现,分成子集放一边。

首先可以发现没有不出现在两侧的元素不用单独分出一个子集,“剩余依赖变子集”然后我们将各依赖分别划分为子集得到:{AD} {ED} {DB} {BCD} {DCA},即为所求保持函数依赖的3NF分解

第三步:若要连接成无损,再添候选做子集。

(1)候选码的求解:所谓候选码即能决定整个关系的,我们通过找未出现在依赖右边的和两侧均未出现的元素即可求得,

(2)可以发现C E未出现在右边,因此候选码为{CE}。故所求具有无损连接性及保持函数依赖的3NF分解为{AD} {ED} {DB} {BCD} {DCA} {CE}。

**例2.**关系模式R,有U={A,B,C,D,E,G},F={B->G,CE->B,C->A,CE->G,B->D,C->D},将关系模式分解为3NF且保持函数依赖

将关系模式分解为3NF且保持函数依赖:

**第一步:保函依赖分解题,先求最小依赖集。**先求出R的最小依赖集,

假设B->G冗余,则(B)+=BD,没有G故不冗余。

假设CE->B冗余,则(CE)+=CEGDA,没有B故不冗余。

假设C->A冗余,则©+=CD,故不冗余。

一次可以得到最小函数依赖集Fm={B->G,CE->B,C->A,B->D,C->D}

第二步:依赖两侧未出现,分成子集放一边,剩余依赖变子集。

首先可以发现没有不出现在两侧的元素,然后我们将各依赖分别划分为子集得{BG} {CEB} {CA} {BD} {CD},即为所求保持函数依赖的3NF分解

第三步:若要连接成无损,再添候选做子集。

找到R的一个候选码为{ACE}。故所求具有无损连接性及保持函数依赖的3NF分解为{BG} {CEB} {CA} {BD} {CD} {CE} (注:范式分解并不唯一,正确即可)

BCNF分解:

将关系模式R分解为一个BCNF的基本步骤是

1)先求最小依赖集,候码非码成子集

2)余下左侧全候码,完成BCNF题。

例.关系模式R,有U={A,B,C,D,E,G},F={B->G,CE->B,C->A,CE->G,B->D,C->D},将关系模式分解为3NF且保持函数依赖

将关系模式分解为3NF且保持函数依赖:

第一步:先求最小依赖集。

可以发现CE->G多余,因此最小依赖集为F={B->G,CE->B,C->A,B->D,C->D}。

第二步:候码非码成子集。

由于候选码为(CE)因此将CE->B划分出子集(BCE),而B->G,B->D左侧均不含主属性(C、E)中的任何一个故划分出(BG),(BD)

第三步:

此时剩余依赖F={C->A,C->D}剩余元素{A,C,D}检查发现函数依赖左侧都是候选码即完成BCNF分解,如果不满足则继续分解余下的。

于是BCNF分解的最后结果为{(BG),(BD),(ACD),(BCE)}。

五.E-R图设计,以及转换成关系模式

注意:关系为1:n时,需要将相关属性给n的那一边,

关系为m:n时,需要独立一个关系模式出来。

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值