简答题

1.数据库管理系统中DDL所能完成的操作包括哪些?

create drop alter

2.关系数据库设计中,至少应满足的规范化条件是什么?

1NF

3.判断分解后的关系模式是否合理的两个重要标志

无损分解和保持依赖

4.基于多表的视图,可以完成哪些操作,不能完成哪些操作?

可以查询,不能更新。

可以根据视图新建视图,但是不能update insert delete

换成基于聚集的视图答案也是相似的,单表视图包含所有非空属性(主属性)理论上可以插入修改删除。如视图不包含所有非空属性,则不能插入。复习视图

5.实体之间的联系有哪几种?

一对一 多对多 一对多 多对一

6.简述等值连接和自然连接的异同。

等值连接是通过on把两个选中该属性值相等的元组合并。

自然连接也是合并,但是是只能遇到同名属性列进行连接,它们两个都是在笛卡尔乘积的情况下进行筛选。

7.简述where子句和having子句的区别。

都是用于进行筛选,where对一般属性,having 对聚集属性列进行判断。

8.简述两阶段锁的具体含义。

增长阶段:事务可以获得锁,但是不能释放锁。

缩减阶段:事务可以释放锁,但是不能获得新锁。

9.简述数据库中为何要进行并发控制?

防止数据库中发生与时间有关的错误。
当多个事务在数据库中并发地执行时,数据的一致性可能不再维持,系统有必要控制各事务之间的相互作用。
并发控制机制存在的目的是为了获得高度的并发性,同时保证所产生的调度是冲突可串行化的或视图可串行化可恢复的,并且无级联的。
10.举例说明数据库中死锁含义及其解决方法。

事务之间相互等待对方所占用的资源。

解决方法是两个死锁事务回滚其中的一个。

分析题

1.吉林大学的BBS系统,用户可以以游客的身份游览其他人的留言贴,但是如果想要发言或者回复留言,则必须先登陆方可留言,为什么?在数据库端如何实现?

答:进行了身份的验证,只有成为正式用户,才会被赋予留言的权限。在数据库端对用户赋予权限grant insert update delete on jluBBS to user

2.在从银行卡向学校一卡通转账的过程中,如果转账金额已经从银行卡中扣除,但是一卡通还未到账时,机器死机无法正常工作了,请问数据库处于什么状态,这样的问题如何解决?

答:数据库处于不一致的状态,(如果是问事务则处于失败状态),

解决方案重要内容可看课本360页面,此时银行卡中钱已经扣除,此时应该在机器恢复后给一个补偿事务,给一卡通补上金额。

例子,事务故障有两种方案,一种是重启事务,一种是杀死事务,在处理可见的外部写的时候,写操作应该只有在事务进入提交状态才会发生,可以通过把与外部写有关的数据存入非易失性存储器来实现。

对于自动收款机问题,如果在支付现金前机器出故障,重启后系统应该执行一个补偿事务,将现金存回用户的账户。

如果是Web预定问题,预定的服务器发生崩溃或者网络连接丢失,事务已经提交,但是外部写没有生效,这样应用程序必须设计成当用户再次连接到Web程序时,她可以看到她的事务是否成功。

3.支付宝账号通常与某一银行卡绑定,该卡不可透支,若目前卡内余额100元,假设一人在网上使用该支付宝账号付款100元的同时,另外一人使用绑定银行卡刷卡消费100元,能否支付成功?若不可以,在数据库端如何控制?

答:不可以。使用串行化控制。

4.学校所有学生的数据都存在于同一个表中,但各个学院的教务管理人员登陆后只能看到自己学院的学生,请问,在数据库端是如何实现的。

答:基于这张表创建各个学院的视图,然后对不同学院的用户分配相应权限。

设计题

1.吉林大学为了提高实验教学质量,为每门实验课配备了若干指导老师,指导学生实验。学院开设多门实验课程供学生选择,每个学生可以选择一到多门实验课,每门课程有若干指导教师,每个教师可以参与多门实验课;在实验课中,一位教师负责指导多个学生,而一个学生必须要有一名指导老师。

1.根据上述需求,画出E-R模型。

2.将E-R模型转化为对应的关系模式,并说明每个关系模式中需要设置的完整性约束。(实体集属性根据实际情况自行设定,每个实体不少于三个属性,不多于五个属性集)

在这里插入图片描述

实验课程( 课 程 i d ‾ \underline{课程id} id,上课名,上课时间)

选择( 课 程 i d ‾ \underline{课程id} id 学 生 i d ‾ \underline{学生id} id

学生( 学 生 i d ‾ \underline{学生id} id,学生名,学生电话,教师id)

指导教师( 教 师 i d ‾ \underline{教师id} id,教师名,教师电话)

参与( 课 程 i d ‾ \underline{课程id} id 教 师 i d ‾ \underline{教师id} id

为了保证全参与,可以使用断言实现,因为无法在设计中表示,选择和学生之间的全参与可以不写。

应用题

1.有仓库-物料存储系统,其关系模式如下:

W(Wid,WN,Addr);分别表示仓库(仓库号,仓库名称,地址)

M(Mid,MN,Price,p_Time,q_Time);分别表示(物料号,物料名称,价格,生产日期,保质期)

ST(Wid,Mid,SNum);分别表示(仓库号,物料号,存储数量)

1.用关系代数表达式,查询存储了全部物料的仓库名称

G是聚集函数符号

思路:根据仓库号对ST进行分组,计算物料号的个数,如果物料号个数等于M中物料号的总数,则输出W中的仓库号(太复杂了不好使)

W i d _{Wid} WidG c o u n t _ d i s t i n c t ( M i d ) ( S T ) _{count\_distinct(Mid)}(ST) count_distinct(Mid)(ST)

在这里插入图片描述

上面的做错了

实际上的思路只要选择除法运算就可以

Π W N ( W ⋈ Π W i d ( S T ÷ Π M i d ( M ) ) ) \Pi_{WN}(W⋈ \Pi_{Wid}(ST\div\Pi_{Mid}(M))) ΠWN(WΠWid(ST÷ΠMid(M)))

2.用关系代数表达式,查询所有存储数量高于100的物料号

在这里插入图片描述

3.用SQL语句,查询所有没有生产日期的物料号和物料名称

SELECT Mid,MN

FROM M

WHERE p_Time IS NULL;

4.用SQL语句,建立视图V,统计截至到今天,还有三个月就要到保质期的物料号和物料名称。此题未经代码测试,还在修改中

CREATE VIEW V AS
SELECT Mid,MN

FROM M

WHERE q_Time-今日日期=3

5.用SQL语句,修改物料名为”海绵“的库存,增加100件

UPDATE st
SET SNum=CASE 
	WHEN st.Mid=(SELECT Mid FROM m WHERE MN='海绵') THEN
		SNum+100
	ELSE
		SNum
END ;

2.设有关系模式R(A,B,C,D,E,F,G)其函数依赖集F={AB->C,B->DE,C->G.G->A}求模式R的所有候选码。

解:所有在左边的属性有ABCG

所有在右边的属性有CDEGA

左部属性B

右部属性DE

双部属性ACG

外部属性F

首先计算

{ B F } + = { B F D E } {\{BF\}}^+=\{BFDE\} {BF}+={BFDE}

然后计算 A B F + 、 C B F + 、 G B F + ABF^+、CBF^+、GBF^+ ABF+CBF+GBF+

第一个可以推{ABCDEFG}

第二个可以推{ABCDEFG}

第三个可以推{ABCDEFG}

因此ABF CBF GBF都是候选码

3.设有关系R和函数依赖F:R(A,B,C,D,E) F={ABC->DE,BC->D,D->E}请将关系R逐步分解为3NF。

解:首先使用合并律,发现不需要合并

然后尝试去除无关属性

ABC->DE中A可以去除,因为BC->D D->E,可知BC->DE

然后BC->D可以去除,因为已经有BC->DE

BC->DE中E可以去除,因为D->E

最终得 F c F_c Fc={BC->D,D->E}

求得R的主码

F左边有属性ABCD

右边有属性DE

左部属性 ABC

右部属性E

双部属性D

{ABC} + ^+ +={ABCDE}

ABC就是候选码,不在BCD和DE中,加上

有因此可以分解为{ABC}{BCD}{DE}

4.设有如图所示调度S,判断S是否为冲突可串行化调度,如果是,则给出与S等价的一个串行化调度。

在这里插入图片描述

解:求一下优先图

在这里插入图片描述

可以看到图中没有环,说明是可串行化调度,一个串行化调度是 T 3 − > T 4 − > T 1 − > T 2 T_3->T_4->T_1->T_2 T3>T4>T1>T2

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐