请选择 进入手机版 | 继续访问电脑版

数据库系统概念实践习题部分答案(未必翻译完全)

[复制链接]
小甜心 发表于 2020-12-31 18:58:34 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
文章目录



数据库设计和E-R模子

为车辆保险公司构建一个E-R图,它的每个客户有一辆或多辆车,每辆车关联零次或任意次视图的记载。每张保险单为一辆或多辆车保险,并与一个或多个保费支付相关联。每次支付只针对一个特定的事件,具有关联的到期日和缴费日。
答:

思量一个用于记载学生在差异开课(section)的差异测验中所得结果的数据库
1.为数据库构造一个E-R图,此中,将测验建模为实体并使用一个三元接洽。
2.构造另一个E-R图,此中,只用students和section间的二元接洽。包管在特定students和section对之间只存在一个接洽,而且你可以体现出学生在差异测验中所得结果。

设计一个E-R图用于跟踪记载你最喜欢的球队的结果。你应该生存打过的比赛,每场比赛的比分,每场比赛的上场队员以及每个队员在每场比赛中的统计数据。总的统计数据应该被建模成派生属性。(不是根本属性而是可以被盘算出的属性)

思量一个E-R图,相同的实体集出现数次,且它的属性重复出现多次。为什么这样的冗余是应良好制止的不良设计?
答:因为这样容易出现不一致错误。
E-R图可视为一个图,下面这些术语对于一个企业模式的结构意味着什么?
1.图是非连通的。2.图是有环的。
答:1.如果一对实体会合有路径的存在,那怕是间接的,我们也说它们是相连。在一个企业模式中,如果图是非连通的,则代表这两个部门是完全独立的。
2.有环的至少两个实体集之间就有多种方面的相互关联,而无环每一对实体集之间的路径就只有一个独特的关系。
一个弱实体集总可以通过往自己的属性中参加其标识实体集的主码属性而变成一个强实体集。概括一下如果我们这么做会产生怎样的冗余?
答:弱实体集的主键可以从它与强实体集的关系得到。如果我们添加主键属性
到弱实体集,它们将同时存在于实体集和关系集,而且它们将会是是相同的。因此,会有冗余。
思量一个关系,比方sec_course,产生于多对一的接洽sec_course。在这个关系上创建的主码约束和外码约束是否强制实施多对一的基数约束?为什么。

答:在这个例子中,section的主键由course_id、sec_id、semester、year组成,这也是sec_course的主键,而course_id是sec_course的外键,这些约束包管了一节课只能对应于一门课程,因此多对一的基数约束是被包管了的,但是全加入约束不能包管。
假设advisor接洽是一对一的。为了确保执行一对一基数约束,在关系advisor上需要哪些额外的约束?
答:除了声明s_ID为advisor的主键外,我们还声明i_ID为advisor的超码,这可以在SQL中对i_ID使用unique约束来实现。
思量实体集A和B之间多对一接洽R,假设从R生成的关系和A生成的关系归并了。在SQL中,加入外码约束的属性可以为空。表明如何使用SQL上的not null约束来强制实施A在R中的全部加入约束。
答:首先R中的外键B应该是not null,这样确保A中没有元组在R中但是没有接洽上B中任何的值。比方a是A中的一个没有在R中的元组,这体现当A和R归并的时候,对应的接洽B的外键是null,这是不被允许的。
在SQL中,外码约束只能参照被参照关系上的主码属性,或者其他用unique约束声明为超码的属性。这导致多对多接洽(或者一对多接洽的“一”方)上的全部加入约束在从该接洽创建的关系上无法用关系上的主码、外码以及非空约束强制实施。1.表明一下为什么2.表明如果使用复杂check或者断言来强制实时全部加入约束。
答:1.因为无论是多对多接洽照旧一对多接洽的"一"方,接洽集和实体集都无法归并。SQL现在没有办法去包管存在实体集的主键的一个值在多对多接洽集上也同样出现,对于一对多接洽的“一”那方也是如此。
2.Let the relation R be many-to-one from entity A to entity B with a and b as their respective primary keys, repectively. We can put the following check constraints on the “one” side relation B:
constraint total_ part check (b in (select b from A));
set constraints total_part deferred;
Note that the constraint should be set to deferred so that it is only checked at the end of the transaction; otherwise if we insert a b value in B before it is inserted in Athe above constraint would be violated, and if we insert it in Abefore we insert it in B, a foreign key violation would occur.
事务管理

假设永远存在不出现故障的数据库系统,对这样的系统还需要故障恢复管理器吗?
答:即便如此,故障恢复管理器也需要执行回滚中止的事务。
数据库系统实现者比文件系统实现者更注意ACID特性,为什么?
答:数据库系统通常需要原子性和恒久性,其结果以永久的方式影响现实。如钱币生意业务、座位预定等,因此需要确保ACID属性。相比之下,大多数文件系统不会愿意为时间空间的支持性付出代价。
为什么必须从慢速磁盘获取数据或者执行长事务时,事务的并发执行更为重要,而当数据存在于主存且事务非常短时,没那么重要。
答:如果须从慢速磁盘获取数据或者执行长事务,在没有并发的情况下,其他食物需要期待更长的时间,平均响应时间也会增加,然而CPU相对空闲。因此,资源没有得到适当使用。因此在这种情况下,事务的并发执行很重要,而数据存在于主存且事务非常短时,则没有这种问题。
既然每一个冲突可串行化调理都是视图可串行化,我们为什么要强调冲突可串行化而非视图可串行化?
答:因为视图可串行化因为其盘算的高度复杂性在实际中并不常用,因为属于NP完全问题,险些不存在有效的判断视图可串行化的算法。
思量下方的优先图,相应的调理是冲突可串行化吗?表明回答

答:是,因为优先图没有环,可以根据优先图做拓扑排序,得到一个序列T1,T2,T3,T4,T5。
什么是无级联调理?为什么要求无级联调理?是否存在要求允许级联调理的情况?
答:对于每对视图Ti和Tj,如果Tj读取了先前由Ti所写的数据项,则Ti必须在Tj这一读操纵前提交,每一个无级联调理也是可恢复调理。要求无级联调理是为了不让单个事务故障导致一系列事务回滚(级联回滚),代价就是并发淘汰。固然,如果故障很少发生,那我们就可以使用级联调理,代价就是增加并发量。
重看14.8
思量一个采用快照隔离的航空公司数据库,形貌一个出现非可串行化调理但是航空公司为了更好的整体性能而愿意吸收的特定场景。

一个调理的界说假设操纵可以完全按时间顺序排列。思量一个运行在多处置惩罚器系统上的数据库系统,它并不总是能对于运行在差异处置惩罚器上的操纵确定一个准确的顺序,但是一个数据项上的操纵全部可以排序。以上情况是否对冲突可串行化的界说造成问题,请表明。
答:上述的情况不会对冲突可串行化造成任何问题,因为知道每个数据项的操纵顺序是冲突可串行化所必须的,对于差异的数据项则并不重要。

来源:https://blog.csdn.net/qq_38336763/article/details/111997979
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )