《数据库系统概论》期末考试试卷(B)本试题所用到的银行企业的数据库模式如下所示:Customer-schema=(customer-name,customer-street,customer-city)Account-schema=(branch-name,account-number,balance)Depositor-schema=(customer-name,account-number)Branch-schema=(branch-name,branch-city,assets)Loan-schema=(branch-name,loan-number,amount)Borrower-schema=(customer-name,loan-number)建立在这些关系模式上的数据库中的关系如下所示:customer(Customer-schema)account(Account-schema)depositor(Depositor-schema)branch(Branch-schema)loan(Loan-schema)borrower(Borrower-schema)试题一(20分):请将下列术语填入与其相应的空(仅填对应序号即可):a存储在二级存储器里的数据的结构b应用程序c事实,文本,图形,图像等d集成的决策支持数据库e相关数据的集合f系统开发的一个快速途径g失败后恢复数据库的数据库管理系统(DBMS)模块h描述所有的数据库对象i不能违反的规则j数据库中部分数据的逻辑描述1数据()2数据库应用()3约束()4物理模式()5恢复管理()6数据仓库()7原型方法()8用户视图()9数据字典()10数据库()试题二(20分):请用关系代数表达式表示下列查询:1用两种不同的关系代数表达式表示在银行中既有贷款又有帐户的客户姓名;(12分)2找出那些在其所居住的城市里的银行分支机构中有帐户的客户姓名。(8分)试题三(20分):请简要回答以下问题:1视图是DBMS中的一种虚关系,大多数DBMS都不允许在视图这种虚关系上进行数据的插入、删除和更新的操作,请问这是为什么?(10分)2建立在关系模式主码上的索引就是主索引吗?为什么?(10分)试题四(20分):用SQL表示下列查询:1请找出在银行中一笔贷款贷给多个(至少两个)客户的所有贷款号和发放贷款的分支机构名称;(10分)2假设有关系模型R=(Name,Sex),求关系r(R)中不同元组的个数,要求重复的元组只记数一次。(10分)试题五(10分):2.把下面用关系表示的实体、实体与实体之间的联系,用E-R图表示出来,要求在图中表示联系的类型(1∶1、1∶n、m∶n)。实体1:学生(学号,姓名,性别,年龄)关键字为:学号实体2:课程(课程号,课程名,学分数)关键字为:课程号实体1与实体2的联系:学习(学号,课程号,成绩)关键字为:学号+课程号注:一个学生可以选多门课程,一门课程也可以被多个学生选,学生选课后有成绩。试题六(20分):请举例说明:在强两阶段封锁协议中,每一对冲突事务的可串行化次序是由执行时第一个两者都申请但互相冲突的锁决定的。《数据库系统概论》B考试试卷答案问答第1题答案:1c、2b、3i、4a、5g、6d、7f、8j、9h、10e问答第2题答案:1、1)(∏customer-name(depositor))∩(∏customer-name(borrower))(6分)2)∏customer-name(depositorborrower)(6分)2、∏customer-name(σcustomer-city=branch-city(((customerdepositor)account)branch))问答第3题答案:1、因为视图是虚关系,对视图的修改最终要转换成对产生视图的数据库中基本关系的修改。而这种转化比较困难,且有时是不可行的!例如,如果产生视图的SQL语句中有连接、笛卡儿积和聚集运算(SUM、AVG等)等,则不可能通过视图对基本关系进行修改,因此一般的DBMS不允许在视图这种虚关系上进行数据的插入、删除和更新操作。2、不是。因为主索引从概念上主要是指索引结构中的搜索码的顺序与数据文件中的记录存储的物理顺序一致的索引,而建立在主码上的索引未必满足这个一致性要求。问答第4题答案:1、selectborrower.loan-number,branch-namefromborrower,loanwhereborrower.loan-number=loan.loan-numbergroupbyborrower.loan-numberhavingcount(distinctcustomer-name)=22、selectcount(*)from(selectdistinct*fromr)asresult(name,sex)问答第5题答案:学生选课关系E-R图问答第6题答案:在封锁协议中,每一对冲突事务的可串行化次序是由执行时第一个两者都申请但互相冲突的锁决定的,如下图所示,lock-S(A)与lock-X(A)首先冲突。根据两阶段封锁协议授权加锁的条件,我们不难知道:1、事务在发出一个锁申请之后还没有获得锁之前一直处于等待状态,等待别的事务释放锁;2、事务在获得最后一个锁之后才会全部执行完事务,因为事务再也不会申请锁,因而也就不会处于等待状态。而根据强两阶段封锁协议,事务持有的所有锁都必须在事务提交之后才能释放。也就是说冲突事务中首先获得锁的事务(在提交之前不会释放锁)肯定先提交,而这种提交的先后顺序就是事务的一个可串性化顺序。因此,第一个两者都申请但互相冲突的锁决定了调度中事务的可串性化次序。