南京理工大学《数据库系统基础教程》试题和答案(共39页).doc
精选优质文档-倾情为你奉上一、选择题60(选择一个最合适的答案,在答题纸上涂黑)1一个事务中的一组更新操作是一个整体,要么全部执行,要么全部不执行。这是事务的:A.原子性 B.一致性 C.隔离性 D.持久性2在数据库的三级模式结构中,描述一个数据库中全体数据的全局逻辑结构和特性的是:A外模式 B内模式 C存储模式 D模式3关于联系的多重性,下面哪种说法不正确?A.一个多对多的联系中允许多对一的情形。B.一个多对多的联系中允许一对一的情形。C.一个多对一的联系中允许一对一的情形。D.一个多对一的联系中允许多对多的情形。4考虑学校里的"学生"和"课程"之间的联系,该联系的多重性应该是:A. 一对一 B. 多对一 C. 一对多 D. 多对多5下面哪种约束要求一组属性在同一实体集任意两个不同实体上的取值不同。A. 键(key)约束。 B. 单值约束。 C. 参照完整性。 D. 域(domain)约束6关系模型要求各元组的每个分量的值必须是原子性的。对原子性,下面哪种解释不正确:A.每个属性都没有内部结构。B.每个属性都不可再分解。C.各属性值应属于某种基本数据类型。 D.属性值不允许为NULL。7对于一个关系的属性(列)集合和元组(行)集合,下面哪种说法不正确:A.改变属性的排列次序不影响该关系。B.改变元组的排列次序不影响该关系。C.改变元组的排列次序会改变该关系。D.关系的模式包括其名称及其属性集合。8若R是实体集R1与R2间的一个多对多联系,将其转换为关系R',哪种说法不正确:A.R'属性应包括R1与R2的所有属性。 B.R'属性应包括R1与R2的键属性。C.R1与R2的键属性共同构成R'的键。 D.R'的属性应包括R自身定义的属性。9关于函数依赖的判断,下面哪种说法不正确?A.若任意两元组在属性A上一致,在B上也一致,则有A B成立。B.若任意两元组在属性A上一致,在B上不一致,则A B不成立。C.若任意两元组在属性A上不可能一致,则不管在B上是否一致,有A B成立。D.若任意两元组在属性A上不可能一致,则A B不成立。10若某关系R的属性集A函数决定R中所有其它属性,则A为关系R的一个:A.键。 B.主键。C.超键。D.外键。11当且仅当函数依赖ABC,则有AB和AC。此规则是A.分解/合并规则。 B.平凡依赖规则。 C.传递规则。 D.增长规则。12对于某关系R的某个属性集A,下面哪种说法不正确:A.若属性集A是R的键,则闭包A+是R中所有属性集合。B.若闭包A+是R中所有属性集合,则属性集A是R的键。C.若闭包A+是R中所有属性集合,则属性集A是R的超键。D.当且仅当属性集A是R的超键,闭包A+是R中所有属性集合。13某关系R(A, B, C, D)有函数依赖AB, BCD, DA,R总共有几个超键?A.3 B.4 C.6 D.714某关系R(A, B, C, D)有函数依赖AB, BCD, DA,下面哪个函数依赖不蕴含于已知依赖?A. DB B. ACBD C. BCAD D. BDAC15某关系R(A, B, C, D)有函数依赖AB, BCD, DA,该关系若违背BCNF,则应分解成几个关系才能满足BCNF:A.符合BCNF,无需分解 B.2个关系 C.3个关系 D.4个关系16关系product(prodid,prodname,type,factory)表示所销售的每一种商品的货号、品名、种类及生产厂家,一种商品有唯一货号。该关系所满足下列最高范式是:A 2NF。 B 3NF。 C BCNF。 D 4NF。17关系prodsales(salesman,prodid,prodname,quantity,amount)表示销售员销售商品情况:销售员、货号、品名、销售数量及销售金额。一名销售员可销售多种商品,一种商品可由多名销售员销售。该关系违背下列最低范式是:A.1NF。 B.2NF。 C.3NF。 D.BCNF。18关系代数运算中,下面哪种计算可等价表示为其它几种计算的复合形式:A.投影 B.选择 C.笛卡尔积× D.自然连接19设有关系R(A,B,C)和S(C,D,E),其元组如下所示:SCDE361874244636RABC147258369B,E(RA=D S)的值是:D.BE258436C.BE558664B.BE5864A.BE25846320在学生选课表studentcourse(stdno,courseno,grade)中,查询选修3号课程、且成绩在70和80分之间的学生的学号(stdno)及其成绩(grade)。实现该功能的SQL语句是:ASELECT stdno,grade FROM studentcourseWHERE courseno='3' AND BETWEEN 70<grade<80;BSELECT stdno,grade FROM studentcourseWHERE courseno='3' AND grade BETWEEN 70 AND 80;CSELECT stdno,grade FROM studentcourseWHERE courseno='3' AND grade BETWEEN 70,80;DSELECT stdno,grade FROM studentcourseWHERE courseno='3' AND grade IN(70,80);21已知关系R和S:SAB123212RAB123246Select * From RWhere a<>ALL(Select b From S)结果是;D.语法错C.ABB.AB36A.AB1222学生成绩表R如下R.NoScore12345678778492826372NULL47Select (score/10)*10 as ScoreLevel, count(no) as numFrom RGroup by (score/10)*10Order by ScoreLevel desc;结果是:D.语法错C.ScoreLevelnum406070809011221B.ScoreLevelnum908070604012211A.ScoreLevelnum9080706040NULL12211123关于视图view,下面哪种说法不正确?A.基于一条Select语句可定义一个视图。B.Create View viewName AS.命令可定义视图。C.查询视图与查询表在语法上是一样的。D.Select语句中的From子句中视图和表不能同时出现。24关系R如下R.Noa1232NULL7Select * From R Where a>no*2 OR (a>no*2)is Unknown结果为D.语法错C.Noa37B.Noa23NULL7A.Noa2NULL25已知关系如下salesorderordernoempidamount800180021343006700salesman.Empidempname123ZhangLiWangSelect empname,amountFrom salesman Natural Left Outer Join salesorder;结果为:D.语法错C.EmpnameamountZhangLiWang4300NULL6700B.EmpnameamountZhangLiWang430006700A.EmpnameamountZhangWang4300670026关于表的主键约束,下面哪种说法不正确:A.select命令不可能违背主键约束。B.insert命令可能违背主键约束。C.delete命令不可能违背主键约束。D.update命令不可能违背主键约束。27关于数据库表中的外键,下面哪种说法不正确:A.表R1到R2有外键,R2到R1同时也能定义外键。B.同一个表中属性A1到主键属性之间也能定义外键。C.外键所关联的双方属性应属同种数据类型。D.一个外键只能在单个属性上定义。28在并发性事务环境中,事务1先读取某行数据,随后事务2修改了此行数据并提交,造成事务1再读此行时先后结果不一致。这种现象被称为:A.(Dirty Reads)脏读 B.(Non-repeatable Reads)不可重复读 C.(Phantom Rows)幻像行 D.事务冲突。29关于事务控制,下面哪种说法不正确?A.Commit提交当前事务,并结束当前事务。B.Rollback退回当前事务,取消本事务已做的数据更新,并结束当前事务。C.Commit提交当前事务,并释放本事务施加的锁。D.Rollback退回当前事务,继续持有本事务施加的锁。30下面哪一种指令能为用户授权,使其能以一定的权限访问特定的数据库对象。A.Grant B.Revoke C.Commit D.Privilege二、综合题40一个简化的图书馆信息管理系统。系统需求如下:1.图书馆有若干管理员librarian,各自有员工号empid、姓名name、身份证号idno等属性。2.图书馆中备有若干种图书booktype,每种图书有ISBN、名称title、出版社publisher、作者writers、价格price等属性,每种图书有唯一的ISBN号,同种图书可购入多本。3.每一本图书book有唯一标记bookid和种类booktype。4.读者reader在办理借书证后方可借阅。一个读者有唯一的借书证号cardno,还有姓名name、身份证号idno、住址address、注销标记logoff等。读者在注销之前,须归还所有已借图书或报失。5.需处理以下基本业务:借书:在某时刻某读者通过某管理员借阅某一本书。还书:在某时刻通过某管理员归还某一本书。报失:在某时刻某读者向某管理员报失某一本书;报失之后该书不能再借。每一次还书和报失记录都须对应某一次借书记录,且可由不同管理员处理。按次序回答下列问题:1 用E/R图建立该系统的数据库模型。为每个实体集确定键属性,并确定每个联系的多重性。(8)2 由E/R模型建立该系统的关系模式,并确定每个关系的主键和可能的外键。注意各关系中的函数依赖和多值依赖,并使你的关系能符合更高范式。(8)3 基于以上关系模式,用关系代数表示下面计算:(6)1) 计算“清华大学出版社”出版的图书名称及作者。2) 计算借书证号为“A00345”的读者未归还的图书名称。3) 计算未处理过借书手续的管理员的员工号及其姓名。4使用SQL语言实现上述计算,并使输出结果不重复。(6)5使用SQL语言完成下面的计算:(12)1) 增加借书记录: 借书证号为'A00345',通过管理员'E0035'于当前日期借到图书'B00124'。(提示:today(*)函数返回当前日期)2)还书记录:通过管理员'E0034'于当前日期归还图书'B00124'。(提示:还书无需确认借书证)3)计算借书证号为“A00345”的读者已借超过30天而未还的图书数量。(提示:days(d1,d2)函数返回从日期d1到d2的天数)4)计算借书次数最多的读者的姓名和身份证号。(注意使用视图)5)计算所有图书的ISBN、书名、借阅次数,并按借阅次数从大到小排列。(注意使用外连接)参考答案1ER图(一些非键属性未列出)LibrarianReaderBookBooktypeRecordempidisbnbookidcardnorecidborrowend helperborrowdateendenddateNULL1=return2=loseNULLautoincrementNOT NULL2.关系模型Librarian(empid, name, idno)Reader(cardno, name, idno, address)Booktype(isbn, title, publisher, writers, price)Book(bookid, isbn)Record(recid, brwempid, cardno, bookid, borrowdate, end, enddate, endempid)3.关系代数运算1) 计算“清华大学出版社”出版的图书名称及作者title,writers(publisher=清华大学出版社Booktype)2) 计算借书证号为“A00345”的读者未归还的图书名称title(cardno=A00345AND end=NULL(RecordBookBooktype)3) 计算未处理过借书手续的管理员的员工号及其姓名。empid,name(Librarian) -empid,name(Librarianbrwempid=empidRecord)4.SQL运算1) 计算“清华大学出版社”出版的图书名称及作者Select title,writers From Booktype Where publisher=清华大学出版社;2) 计算借书证号为“A00345”的读者未归还的图书名称Select title From Record Natural Join Book Natural Join Booktype Where cardno=A00345 AND "end" IS NULL;3) 计算未处理过借书手续的管理员的员工号及其姓名。Select empid,name From LibrarianWhere empid NOT IN(Select brwempid From Record);5.SQL1) 增加借书记录: 借书证号为'A00345',通过管理员'E0035'于当前日期借到图书'B00124'。(提示:today(*)函数返回当前日期)insert into record(brwempid, cardno,bookid,borrowdate)values('E0035','A00345','B00124',today(*);2) 还书记录:通过管理员'E0034'于当前日期归还图书'B00124'。(提示:还书无需确认借书证)update record set "end" = 1, enddate= today(*),endempid='E0034' where recid = (select recid from record where bookid='B00124' and "end" IS NULL);3) 计算借书证号为“A00345”的读者已借超过30天而未还的图书数量。(提示:days(d1,d2)函数返回从日期d1到d2的天数)Select Count(recid)From RecordWhere cardno='A00345' AND "end" IS NULL AND days(borrowdate,today(*)>30;4) 计算借书次数最多的读者的姓名和身份证号。(注意使用视图)Create view brwtimes asselect cardno,count(recid) as timesfrom recordgroup by cardnoselect name,idnofrom reader natural join brwtimeswhere times=(select max(times) from brwtimes);5) 计算所有图书的ISBN、书名、借阅次数,并按借阅次数从大到小排列。(注意使用外连接)Select book.isbn,title,count(recid) as timesFrom book Left Outer Join record Natural Join booktypeGroup by book.isbn,titleOrder by times DESC;DepartmentSalesmanCustomerSalesorderProductSalesitemsales forruns foras headerworks forunit-ofcontainsdeptidnameempididnonamegenderphonenameprovcityphoneunitordernosigndatecustidlinenosalescostquantitytypespecpricedescprodidfactory第3章介绍关系数据模型,关系模型是什么,如何设计规范的关系模型。目的:由一个数据库的E/R模型,产生符合一定规范的关系模型。Customer (custid, name, prov, city,phone, unit)Product (prodid, factory, type, spec, price, desc)Salesman (empid, idno, name, gender, phone, deptid)Department (deptid, name, headerid)Salesorder (orderno, signdate, empid, custid)Salesitem (orderno, lineno, prodid, singlecost, quantity)报考及复试资格审查:时间:4月10日(本校应届毕业生考生),4月11日(其他考生),地点:报考学院(系);体检时间:时间:4月11日8:30-16:00。体检当日饮食必须清淡,地点:我校医院;笔试:时间:12日8:30-11:30(需携带2B铅笔及橡皮),地点:第四教学楼;面试:时间:12日下午及13日,由各学院安排。复试由笔试、面试组成,包括外语听力及口语测试,复试总成绩为300分,其中笔试150分、面试及实践(实验)能力测试100分,外语听力30分及口语20分。数据库系统的世界(概述)什么是数据库数据库管理系统数据库建模数据模型信息模型(概念模型):E/R模型,ODL模型等基本数据模型:层次模型,网状模型,关系模型等 实体/联系图属性attribute:联系relationship: 对约束建模有哪些重要的约束种类?专心-专注-专业键key单值single-value参照完整性reference inte关系数据模型 关系的等价表示法改变列次序,不改变关系的含义。改变行次序,不改变关系的含义。从E/R图到关系设计 实体集到关系的转换 E/R联系到关系的转换 处理弱实体集函数依赖函数依赖是如何定义的?若关系R的任意两个元组在属性A1、A2、An上一致(即有相同分量值),则这两个元组在属性B上也一致,则称属性A1A2An函数决定B,或称B函数依赖于A1A2An。判断函数依赖的三种情形如果任意两元组在属性A上一致,在B上也一致,则有A B成立。如果任意两元组在属性A上一致,在B上不一致,则A B不成立。如果任意两元组在属性A上不可能一致,则不管在B上是否一致,有A B成立。 关系的键如何用函数依赖定义键key?定义:对于关系R,若属性集合A1,A2,An满足下列条件,则该属性集合是R的一个键key:1A1,A2,An函数决定R中所有其他属性。(超键)2A1,A2,An的任何真子集都不能函数决定R中所有其他属性。(最小化) 超键什么是超键super key?键的超集superset of key。即包含键的属性集合。可函数决定关系中所有属性的属性集合。每个键都是超键。一个关系的属性全集超键。每个超键都是键吗?不是。 函数依赖规则有哪些重要的函数依赖规则?分解合并(Splitting/combining)规则平凡依赖(Trivial Dependance)规则传递(Transitivy)规则 计算属性的闭包如何计算属性的闭包? 给定函数依赖集S和属性集A=A1,A2,An,如何计算A+?1 将X初始化为A1,A2,An,闭包最小集合。2 遍历S中的每个函数依赖,对于每个依赖式:B1B2Bm C如果B1、B2、Bm都在X中,而C不在X中,则把C加入X中。3 重复第2步,直到遍历完S中所有函数依赖,而没有新属性能加入到X中。4 最终属性集X即为属性集A在函数依赖集S下的闭包A+。例3.28:P90 设有关系R(A, B, C, D, E, F)与函数依赖集S:AB C,BC AD,D E,CF B求:A,B+解:X(1)=A,B, 由AB C,得: X(2)=A,B,C, 由BC AD,得:X(3)=A,B,C,D, 由D E,得:X(4)=A,B,C,D,E=A,B+属性闭包计算有何用途?假设关系R上已有一个依赖集S,另有一个函数依赖A1A2An B,该依赖是否蕴含于S?判断方法:计算A1,A2,An+。若B在A1,A2,An+中,则函数依赖A1A2An B蕴含于S中。若B不在A1,A2,An+中,则函数依赖A1A2An B不蕴含于S中。属性的闭包和键之间有何关系?对于一个关系R,当且仅当A1,A2,An是R的超键时,A1,A2,An+是R的所有属性的集合。 3.6.1 已知关系模式R(A, B, C, D)有函数依赖AB C, C D, D A(a)求蕴含于给定函数依赖的所有完全非平凡函数依赖。(b)求R的所有键。(c)求R的所有超键(不包括键)。解:(a)根据所有属性集合的闭包,计算所有可能的函数依赖。A+=AB+=BC+=C, D, A C ADD+=D, AA, B+=A, B, C, D AB CDA, C+=A, C, D AC DA, D+=A, DB, C+=B, C, D, A BC ADB, D+=B, D, A, C BD ACC, D+=C, D, ACD AA, B, C+=A, B, C, D ABC DA, B, D+=A, B, D, C ABD CA, C, D+=A, C, DB, C, D+=B, C, D, A BCD A(b)所有的键:A, B, B, C, B, D(c)所有的超键(不包括键):A,B,C, A,B,D, B,C,D, A,B,C,D 关系数据库模式设计 BC范式若关系模式R的每个分量均是不可再分的数据项,则R满足第一范式,又记作:R 1NF。BC范式如何定义?关系模式R满足BC范式,当且仅当若非平凡函数依赖A1A2An B1B2Bm在关系R中成立,则A1,A2,An是R的超键。关系R满足BC范式的两种情形关系R中不存在非平凡函数依赖。(只有平凡函数依赖)每个非平凡函数依赖的左面包含某个键(即左面是超键)。关系R违背BC范式的唯一情形关系R中至少存在一个非平凡函数依赖,其左面不是超键。分解为BC范式分解策略:消除违背BCNF的函数依赖1 找一个违背BCNF的非平凡函数依赖A1A2An B1B2Bm。2 把关系R分解成两个关系:R1(A1,A2,An, B1,B2,Bm)。R2(A1,A2,An, 所有其它属性),若不满足BC范式,则再分解。例如:R(学号, 课号, 成绩, 系号, 系主任) 不满足BCNF。1 非平凡函数依赖:学号 系号,系主任 成立2 R分解为:R1(学号, 系号, 系主任) R2(学号, 课号, 成绩)3 非平凡函数依赖:系号 系主任 成立4 R1继续分解为:R11(系号, 系主任) R12(学号, 系号) 第三范式 关系模式R满足3NF,当且仅当若非平凡函数依赖A1A2An B在关系R中成立,则A1,A2,An是R的超键,或者B是某个键的组成部份(键属性)。结论:一个关系模式总可以分解为满足3NF的模式,且所有的函数依赖都可得到保持。 第二范式第二范式(2NF): 要求每个非键属性依赖于键的整体,而不是键的部分属性,即不允许有非平凡函数依赖的右面是非键属性,而左面是某个键的真子集。满足2NF的几种情形:不存在非平凡函数依赖。存在非平凡函数依赖,且其右面是某个键的组成部分(键属性)。存在非平凡函数依赖,且其右面是非键属性,则其左面要么是超键,要么包含非键属性。例如:关系模式R(A, B, C, D)有函数依赖AB C, C D, D A找出所有违背BCNF的函数依赖。必要时,分解为几个满足BCNF的关系找出所有违背3NF的函数依赖。解:所有的键:A, B, B, C, B, D违背BCNF的函数依赖:C AD, D A分解:R1(A,C,D), R2(B,C)R11(A,D), R12(C,D)函数依赖AB C 不保持R满足3NF关系模型中的运算投影选择笛卡尔积例4.5:p125SBCD24957106811RAB1324R×SAR.BS.BCD1113332224442492495710571068116811 自然连接自然连接是什么运算?对于两个关系R和S,自然连接表示为R S 结果:属性是R和S中的属性的并集,去掉同名的属性; 其元组是R和S在同名属性上一致的元组的所有组合。R SABCD13245768上例:VBCD2273384510UABC169277388例4.7:p126U VABCD116922773388451010连接连接是什么运算?在笛卡尔积的基础上,增加条件以限制元组。对于两个关系R和S,基于条件c的连接表示为 R cS,计算步骤:计算R×S ,即笛卡尔积;UA<DVAU.BU.CV.BV.CD111692227733388227773388845101010用条件c做选择运算:c(R×S)。例:上例U和V关系 改名改名是什么运算?把一个关系R改名为关系S,且属性也按次序改名为A1A2An,表示为S (A1, A2,An) (R),若仅关系改名为S而属性不改名,则表示为S (R)例:销售员Salesman (empid, idno, name, gender, phone, deptid)求“所有重名的销售员的员工号及其姓名”s1.empid,s1.name(S1(Salesman) s1.name=s2.name AND s1.empids2.empidS2 (Salesman) 基本运算和派生运算问题:设有关系:选修(学号,课号,成绩),求:既选修c1,亦选修c2的学生学号学号(课号 = 'c1'(选修) 学号(课号 = 'c2'(选修)没选修c1的学生学号学号(选修) 学号(课号 = 'c1'(选修) 数据库语言SQLSQL简单查询 投影 选择 多关系查询 乘积和连接子查询练习: 求选修了'C1'课的学生姓名。(用IN表示)求'C1'课成绩最好的学生姓名。求既选'C1'课,又选'C2'课的学生姓名。求没选'C1'课的学生姓名。聚合运算分组Group By子句如何构成?根据一列或几列的值把元组分成若干组,有相同分组值的元组作为一组,每个组再分别进行聚合运算。 Having子句Having子句条件表示什么?在分组聚合之后按某条件过滤分组,使用Having子句确定条件。 视图什么是视图view?依据一条SELECT语句产生的一个命名的“虚关系”或“虚表”。视图的数据均来自基本表,并不实际存储。一个定义好的视图可看作基本表,用于定义新的视图,或对之进行查询甚至更新。一个数据库可定义多个视图。视图的名称不能与已有的表名冲突。视图是数据库模式的一部分。为何需要视图?简化计算。不同用户关心同一表中的不同属性。提高数据的安全性。 创建视图如何创建视图?CREATE VIEW owner .view-name ( column-name , . )AS select-without-order-by with check option例如:CREATE View orderamount As Select salesorder.orderno, signdate, empid, custid, Sum(quantity) as qty, Sum(singlecost*quantity) as amount From dba.salesitem, dba.salesorder Where salesorder.orderno = salesitem.ordernoGroup by salesorder.orderno, signdate, empid, custid产生一个虚关系:orderamount(orderno, signdate, empid, custid, qty, amount) 视图查询如何查询视图?对视图的查询与表查询遵循相同的语法。例:计算销售金额最高的订单号、签单日期及销售金额。Select orderno, signdate, amountFrom orderamountWhere amount = (Select Max(amount) From orderamount)对视图的查询将由系统转换为对基本表的查询。SQL约束和触发器SQL中的键键key是最重要的约束。每个表都必须确定自己的键。每个表都可能有多个属性集可作为键,称为“候选键candicate key”。一个表只能确定一个主键(Primary Key)。若某个属性说明为Unique,则它是一个候选键。主键和Unique属性之间有何区别和联系?一个表有且仅有一个主键;而Unique属性可有多个或没有。主键可以是多属性,而Unique只能说明单个属性。若主键是单个属性,则该属性隐含为Unique。若主键是多个属性,则每个属性都不可能为Unique。实施主键约束什么操作会导致违背键约束?insert和update可能违背该表的键约束。SQL实施主键约束即是在insert和update时检验键值,避免空值或重复键值。 参照完整性和外键SQL中依靠外键保证参照完整性。外键定义时要注意区分参照关系和被参照关系。 说明外键约束是否可定义一个表参照自己?可以。例如:salesman(empid, idno, na