数据库原理期末复习 |
您所在的位置:网站首页 › 数据库应用技术期末考试 › 数据库原理期末复习 |
数据库原理期末复习
目录 数据库原理复习 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. 并发操作引发的问题 丢失更新问题:同时读同一数据并修改。 读“脏”数据:读取了未提交事务的数据。 不可重复读(幻读现象):两次读同一数据不一样,另一个事务修改了数据。并发操作破坏了事务的隔离性。 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.游标使用步骤声明游标。使用T-SQL语句生成一个结果集,并且定义游标的特征,如游标中的记录是否可以修改。 打开游标。 从游标的结果集中读取数据。从游标中检索一行或多行数据称为取数据。 对游标中的数据逐行操作。 关闭和释放游标。 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属于第二范式。 判断一个关系是否属于第二范式: 找出数据表中的所有码; 找出所有主属性和非主属性; 判断所有的非主属性对码的部分函数依赖。 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时,需要独立一个关系模式出来。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |