数据库系统原理
思维导图
部分内容,麻了,后面的由于被旧文件覆盖丢失了
Chapter1_Introduction
Chapter2_Relational Model
Chapter3_Structured Query Language
Chapter4_Intermediate SQL
---题型
ER图
画图
多值属性加上{属性}
派生属性不存储,只是计算时需要求出来,表示为属性()
复合属性加一个缩进
冗余:
两个实体集建立关系集时,冗余属性要删除
映射关系:
说明了具体几个到几个,例如:2…*, 0…*
就用l..h
表示,这种方式都只需要一条直线,然后标记在直线上
否则就用单线,双线,箭头表示。
非二元关系,只允许一个箭头
双线表示全部参与
转换为关系模式
强实体集:
属性直接写下来,主码加下划线,复合属性拆开写,多值属性单独成表再取来原表的主码(特殊情况:如果原表只剩下一个主码,则删除原表),派生属性直接不写
弱实体集:
同上,在加上强实体集的主码作为外键,和自己的分辨符作为主码
联系集:
1-1:先取两个关系的主码,再加上联系集的关系,合成关系,再并入任意一端
1-n:先取两个关系的主码,再加上联系集的关系,合成关系,再并入n端
m-n:先取两个关系的主码,再加上联系集的关系,合成关系,单独成表
范式
是否是BCNF、3NF?
了解:1NF:属性都不可分;2NF不存在部分依赖;3NF没有传递依赖;BCNF不存在主属性和候选码的依赖关系
计算:
BCNF:平凡依赖?超码?
3NF:平凡依赖?超码?依赖右部属性是否都出现在任意候选键中
范式的分解?
分解成3NF:1、正则覆盖,2、先求出所有候选键,3、每个函数依赖单独成表(n个关系),完全冗余的关系删除(完全包含在另一个关系中),4、再看这n个关系中是否包含由原表的一个候选键,若有则算法结束(n),没有则任意补充一个候选键作为一个关系(n+1)
分解成BCNF:【视频】
正则覆盖?
1、使用合并规则,左边相同的合并
2、左边右边都是去掉一部分再计算闭包,没变化就是无关属性,去掉无关属性;先解决左边的,再解决右边的
3、重复执行,直到不再变化
SQL或关系代数的增删改查
串行化调度
都是画图,看有没有回路,没有回路再串行化
冲突可串行化:
写写,读写,写读次序不可变
视图可串行化
最开始读的要最开始读
最后写的要最后写
写读不行变,读写可以
简答题
1、简述varchar与char的区别
查看答案
char是一种固定长度的类型,varchar则是一种可变长度的类型。
2、什么是数据库索引?
查看答案
索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。
3、数据库索引一般采用什么结构?
查看答案
索引的实现通常使用B树及其变种B+树。
4、事物的四种特性指的是什么?
查看答案
原子性,一致性,隔离性,持久性。
5、在大学数据中,用SQL语句查询名字’g’的学生的学号、姓名
查看答案
Select ID, name from student where name like ‘%g%’;
6、简述函数与触发器之间的异同
查看答案
函数和触发器都是存储在数据库当中的一段代码。差别是函数需要显式调用,有返回值,触发器需要有触发事件,系统自动调用,无返回值。
7、distinct的作用是什么?
查看答案
删除查询结果中的重复记录。
8、若关系R所有的属性都是不可分的数据项,则该关系最低满足第几范式
查看答案
第一范式
9、简述用户自定义类型与域之间的差别
查看答案
类型是强类型检查,无法定义约束;域是弱类型检查,可以定义约束;
10、AB->C能蕴含A->C,B->C吗?
查看答案
不能
11、说明事物的ACID特征
查看答案
原子性:要么全成功,要么全失败,数据库中不能出现事务部分执行后产生的结果
持久性:一旦通知用户事务执行完毕,结果必须永久保存在数据库中,即使出现软件或硬件故障
一致性:比如:交易执行时,A和B的总和不变。事务执行过程中可能出现临时的不一致性,但是一旦事务执行成功后,数据库必须是满足一致性的
隔离性:虽然多个事务可以并发执行,但每个事务必须不知道其他并发执行的事务。中间事务结果必须对其他并发执行的事务隐藏
12、说明视图和关系表的区别和联系
查看答案
视图是从一个或几个基本表导出的,视图本身不独立存储在数据库中,是一个虚表。即数据库只存放视图的定义而不存放视图对应的数据,这些数据仍存放在基本表中。视图在概念上与基本表等同,用户可以如同基本表那样使用视图,可以再视图的基础上再定义视图。
引进视图的优点:(1)视图能够简化用户的操作(2)视图能够使用户多角度的看待同一数据(3)视图对重构数据库提供一定程度的逻辑独立性(4)视图能够对机密数据提供安全和保护
13、系统开发人员通过层次抽象来对用户进行屏蔽复杂性,请根据层次由低到高列出各个层次,并说明DBA(数据管理员)主要使用哪个抽象层次
查看答案
物理层、逻辑层、视图层。逻辑层
14、解释一下物理数据独立性,说明数据库语言的分类以及基本用途,并说明哪种类型的语言放在数据字典中。
查看答案
物理数据独立性:应用程序如果不依赖于物理模式,它们就被称为是具有物理数据独立性,因此即使数据模式改变了,它们也无需重写。数据库语言的分类及其用途:数据库定义语言(DDL),用于定义数据库模式;数据库操纵语言(DML),用于表达数据库的查询和更新。DDL的输出放在数据字典中。
15、简述空值(null)的含义
查看答案
空值表示这个值不存在或者未知,未知值可能是缺失了或者不知道。
16、为什么要在数据库中引入事务的概念?
查看答案
要在数据库并发控制下保持数据库的一致性。
17、为什么要数据库的调度进行可串行化判别,其实际意义是什么?
查看答案
通过保证所执行的调度的效果与没有并发执行的调度效果一样,可以确保数据库的一致性。
18、若对数据库进行BCNF范式的分解,从而导致没有保持依赖,在数据库中要如何解决
查看答案
改为第三范式分解
19、数据库中,实体的完整性是如何被保证的
查看答案
not null, unique, check, primary, 参照完整性(foreign key)。
20、如何降低数据库中的数据的冗余度
查看答案
设计选择:更小的模式;
选择合适的范式
21、如何标识一个弱实体集
查看答案
没有足够的属性以形成主码的实体集称作弱实体集,在E-R图中弱实体集的分辨符以虚下划线标明
22、在SQL语句中,如何表示除法运算
查看答案
利用Where子句,A/B,表示为 not exists(B except A)
23、在关系代数中,与等值连接相比,自然连接的缺点是什么?
查看答案
自然连接是在笛卡尔积的基础上保留相同属性下取值相同的元组,而等值连接可以在笛卡尔积的基础上自由选择比较的属性。
24、如果关系r®和s(S)中不含有任何相同属性,即,那么.
查看答案
由于r和s的自然连接是在迪卡尔积的基础上进行相同属性的取值相同进行筛选元组,所以没有相同的属性就不用删除元组了,所以最终结果和笛卡尔积结果一样。
25、某人在使用移动支付系统时,输入了正确的支付密码并提交后,发现了断网情况,导致支付失败,分析该事务经历了那几个状态?
查看答案
活动状态 部分提交状态 失败状态 中止
26、某学校教务管理系统为每个学院提供了固定的上课教室,系统规定不同学院的教务负责人员登录本系统后,只能有权支配各自学院的教师资源,请问需要定义哪种数据库对象实现此需求?为什么?
查看答案
学校教务管理系统首先创建每个学院单独的视图,然后将对应学院的视图的权限赋给对应的教务负责人。
27、某学院教务管理系统有学生表”(学号,姓名,出生日期,学员编号)“和选课信息表(学号,课程编号,成绩)”。现有如下规定:如果某学生退学的话,则自动删除该生的所有选课记录,该如何定义此业务逻辑?
查看答案
利用触发器,触发事件是delete from 学生 where 学号=“***”;然后就删除选课信息表中学号是退学学生的学号的元组。
28、数据库管理系统中DDL所能完成的操作包括哪些?
查看答案
create drop alter
29、关系数据库设计中,至少应满足的规范化条件是什么?
查看答案
1NF
30、判断分解后的关系模式是否合理的两个重要标志
查看答案
无损分解和保持依赖
31、基于多表的视图,可以完成哪些操作,不能完成哪些操作?
查看答案
可以查询,不能更新。
32、实体之间的联系有哪几种?
查看答案
一对一
多对多
一对多
多对一
33、简述等值连接和自然连接的异同。
查看答案
等值连接是通过on把两个选中该属性值相等的元组合并。
自然连接也是合并,但是是只能遇到同名属性列进行连接,它们两个都是在笛卡尔乘积的情况下进行筛选。
34、简述where子句和having子句的区别。
查看答案
都是用于进行筛选,where对一般属性,用在group by前;having 对聚集属性列进行判断,用在group by后。
35、简述数据库中为何要进行并发控制?
查看答案
当多个事务在数据库中并发地执行时,数据的一致性可能不再维持,系统有必要控制各事务之间的相互作用。
并发控制机制存在的目的是为了获得高度的并发性,同时保证所产生的调度是冲突可串行化的或视图可串行化可恢复的,并且无级联的。
36、吉林大学的BBS系统,用户可以以游客的身份游览其他人的留言贴,但是如果想要发言或者回复留言,则必须先登陆方可留言,为什么?在数据库端如何实现?
查看答案
进行了身份的验证,只有成为正式用户,才会被赋予留言的权限。在数据库端对用户赋予权限grant insert update delete on jluBBS to user
37、支付宝账号通常与某一银行卡绑定,该卡不可透支,若目前卡内余额100元,假设一人在网上使用该支付宝账号付款100元的同时,另外一人使用绑定银行卡刷卡消费100元,能否支付成功?若不可以,在数据库端如何控制?
查看答案
不可以。使用串行化控制
38、学校所有学生的数据都存在于同一个表中,但各个学院的教务管理人员登陆后只能看到自己学院的学生,请问,在数据库端是如何实现的。
查看答案
基于这张表创建各个学院的视图,然后对不同学院的用户分配相应权限。
39、在学生表中,将学号 (ID)和姓名 (name)的组合设计为该表的主键是否合理?为什么?
查看答案
不合理。因为这种情况下,允许有多个姓名不同的学生对应相同学号的情况。
40、如果张三想通过汇款的方式转给李四 200 元。张三的账户已经减掉 200美元后系统发生故障,并没有在李四账户中增加 200 美元,请问数据库出现了什么样的状态?这个问题该怎么解决?数据库通过什么手段实现该操作?
查看答案
数据库处于不一致的状态。应该进行事务回滚,即将张三账户中减掉的200元再加回来。利用日志实现。
41、请用阿姆斯特朗三定律 (分解律、增强律和传递律) 证明合并律。每步骤的依据。
查看答案
分解率:
证明:
所以
42、数据库中常用的完整性约束包括哪些?
查看答案
not null unique check primary key foreign key
43、简述数据库系统与文件系统的主要区别。
查看答案
这两个系统都包含了数据集合和一组程序。数据库协调数据的物理和逻辑访问,当文件系统只能协调物理访问。
数据库系统通过确保所有程序都可以使用一块物理数据来减少数据重复的数量。而在文件系统中的一个程序的数据在写的时候可能无法被另一个程序所读取。
数据库系统被设计允许对数据进行灵活的访问(即查询),当文件系统的设计目的是为了允许预先确定的访问(即编译程序)。
数据库管理系统被设计用来协调多用户管理相同的数据,文件处理系统通常被设计成允许一个或多个程序同时访问相同的数据。文件处理系统通常被设计成一个或多个程序同时访问不同的数据文件。在文件系统中,只有当两个程序对文件操作权限都是只读的时候才可以同时访问。
44、一般情况下,关系R与关系S要进行自然连接,需要满足什么条件?
查看答案
至少有一个同名属性列。
45、已知视图 faculty的定义:create view faculty as select id, name,dept name from instructor;当发布 insert into faculty values(130765’,‘Green,(Music’))命令时,数据库系统如何执行?
查看答案
这个插入必须被表示为对instructor的插入,这样必须给出salary的值,为此数据库有两种执行方案
1.拒绝插入,并向用户返回一个错误信息。
2.向instructor关系插入元组(‘130765’,‘Green,(Music’),null)
46、用基本关系代数表达式来表示
查看答案
R∩S=R−(R−S)
47、关系数据库中,超码、候选码、主码有什么区别?
查看答案
超码就一个或多个属性的集合,这些属性的组合可以在一个关系中唯一地标识一个元组。如果一个超码的任意真子集都不能称为一个超码,那它就是一个候选码,候选码是最小的超码。数据库设计者从候选码中任意选取一个码,叫做主码。
48、关系代数中,选择操作的功能是什么?
查看答案
选择运算选出满足给定谓词的元组。
49、数据库中,调度指的是什么?
查看答案
调度指的是指令在系统中执行的时间顺序,一组事务的一个调度一定包含了这组事务的所有指令,而且必须保持指令在各个事务中出现的时间顺序。
50、事务由哪几个状态组成?判断当手机支付已提交,但由于网络信号消失而导致支付失败,此时,事务处于何种状态?
查看答案
由活动的、部分提交的、失败的、中止的、提交的
事务处于失败状态。
51、在MySQL中定义foreign key时,与标准SQL有何区别?
查看答案
主外键约束在标准SQL下体现的是一种一对多的关系,但是经过MySQL的拓展之后可以表现出“多对多”的关系。
52、MySQL 中不支持 INTERSECT语句,可以用哪些语句来代替?
查看答案
有关系R S,求R INTERSECT S语句,可以这样(即R ∩ S = R − ( R − S ))
1 |
|
53、什么样的调度一定能够保证数据的一致性?
查看答案
可串行化调度
54、为什么事务非正常结束时会影响数据库数据的正确性,请举例说明。
查看答案
如果在A转账给B的过程中,A扣款成功了,但是此时事务非正常结束,此时B没有收到欠款,数据库处于不一致状态,这影响了数据库数据的正确性。
55、两个人分别在去哪儿网和携程网上购买2017年7月2日,CZ6147次航班,从长春飞往北京,但该航班的经济舱只剩一张票,两个人同时下单,数据库中要如何控制?
查看答案
使用事务并发控制,对这两个事务进行可串行化调度。
56、很多在线手机游戏都支持离线操作,即当网络不通时,可以离线玩,等联网之后再进行数据同步,在这个过程中,可能涉及数据库的哪些概念?
查看答案
涉及事务管理,补偿事务,一致性,持久性。
57、用户到银行开了一个储蓄账户(account表),可以随时对该账户进行存钱、取钱等管理,分别对应数据库中的什么操作?在ATM机上取钱,当卡内余额不足时,ATM机不做任何支付,如何将此规则定义在该表上?
查看答案
存取都钱对应UPDATE操作,对account的余额balance添加域约束check(balance>=0);在执行扣款事务的时候,余额不足余额会小于0,这时事务会失败并回滚。
58、吉林大学一卡通实现了与银行的绑定,当一卡通内余额小于某一设定的金额的时候,可以通过银行卡直接转账,请问如何实现自动转账?转账的金额在数据库端如何设定?
查看答案
创建一个触发器,当一卡通内余额被修改时启动触发器,如果修改过后余额小于设定金额,就执行转账事务。
59、某银行为不同储蓄金额执行不同利率:低于10万元一年支付4.2%的利息,10万元以上(包括10万)一年支付4.5%的利息。假设储蓄账户表 account(aid(account_id),balance, branch_name),写出与上述业务相对应的SQL语句,如何保证其执行结果的正确性?
查看答案
1 |
|
CASE结构的存在可以被利用来在一条UPDATE语句中执行前面的两种更新,避免前面发生的问题!这样就能保证其执行结果的正确性,如果不使用case语句,考虑到加上利息后余额可能超过10万,应该先更新大于10万的,再更新小于十万的。
1 |
|
复习,case结构一般如下
1 |
|