一、选择题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.当且仅当函数依赖A→BC,则有A→B和A→C。此规则是
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)有函数依赖A→B, BC→D, D→A,R总共有几个超键?
A.3
B.4
C.6
D.7
14.某关系R(A, B, C, D)有函数依赖A→B, BC→D, D→A,下面哪个函数依赖不蕴含于已知依赖?
A. D→B
B. AC→BD
C. BC→AD
D. BD→AC
15.某关系R(A, B, C, D)有函数依赖A→B, BC→D, D→A,该关系若违背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),其元组如下所示:
πB,E (R ∞A=D S)的值是:
20.在学生选课表studentcourse(stdno,courseno,grade)中,查询选修3号课程、且成绩在70和80分之间的学生的学号(stdno)及其成绩(grade)。实现该功能的SQL 语句是: A .SELECT stdno,grade FROM studentcourse WHERE courseno='3' AND BETWEEN 70 WHERE courseno='3' AND grade BETWEEN 70 AND 80; C .SELECT stdno,grade FROM studentcourse WHERE courseno='3' AND grade BETWEEN 70,80; D .SELECT stdno,grade FROM studentcourse WHERE courseno='3' AND grade IN(70,80); 21.已知关系R 和S : Select * From R Where a<>ALL(Select b From S) 结果是; D.语法错 22.学生成绩表R 如下 Select (score/10)*10 as ScoreLevel, count(no) as num From R Group by (score/10)*10 Order by ScoreLevel desc; 结果是: 23.关于视图view ,下面哪种说法不正确? A.基于一条Select 语句可定义一个视图。 D.语法错 B.Create View viewName AS...命令可定义视图。 C.查询视图与查询表在语法上是一样的。 D.Select 语句中的From 子句中视图和表不能同时出现。 24.关系R 如下 Select * From R Where a>no*2 OR (a>no*2)is Unknown 结果为 25.已知关系如下 Select empname,amount From salesman Natural Left Outer Join salesorder; 结果为: D.语法错 语法错 26.关于表的主键约束,下面哪种说法不正确: 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.关于事务控制,下面哪种说法不正确? https://www.wendangku.net/doc/e212807647.html,mit提交当前事务,并结束当前事务。 B.Rollback退回当前事务,取消本事务已做的数据更新,并结束当前事务。 https://www.wendangku.net/doc/e212807647.html,mit提交当前事务,并释放本事务施加的锁。 D.Rollback退回当前事务,继续持有本事务施加的锁。 30.下面哪一种指令能为用户授权,使其能以一定的权限访问特定的数据库对象。 A.Grant B.Revoke https://www.wendangku.net/doc/e212807647.html,mit 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、书名、借阅次数,并按借阅次数从大到小排列。(注意使用外连接) 参考答案 1.ER 图(一些非键属性未列出) 2.关系模型 Librarian(empid, name, idno) 3.关系代数运算 1) 计算“清华大学出版社”出版的图书名称及作者 πtitle,writers(σpublisher=’清华大学出版社’Booktype) NULL 1=return 2=lose NOT NULL 2) 计算借书证号为“A00345”的读者未归还的图书名称 πtitle(σcardno=’A00345’AND end=NULL(Record∞Book∞Booktype)) 3) 计算未处理过借书手续的管理员的员工号及其姓名。 πempid,name(Librarian) -πempid,name(Librarian∞brwempid=empid Record) 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 Librarian Where empid NOT IN(Select brwempid From Record); 5.SQL 1)增加借书记录:借书证号为'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 Record Where cardno='A00345' AND "end" IS NULL AND days(borrowdate,today(*))>30; 4)计算借书次数最多的读者的姓名和身份证号。(注意使用视图) Create view brwtimes as select cardno,count(recid) as times from record group by cardno select name,idno from reader natural join brwtimes where times=(select max(times) from brwtimes); 5)计算所有图书的ISBN、书名、借阅次数,并按借阅次数从大到小排列。(注意使用外连接) Select book.isbn,title,count(recid) as times From book Left Outer Join record Natural Join booktype Group by book.isbn,title Order by times DESC; 第3章介绍关系数据模型,关系模型是什么,如何设计规范的关系模型。 目的:由一个数据库的E/R模型,产生符合一定规范的关系模型。 Salesorder (orderno, signdate, 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分。 数据库系统的世界(概述) 什么是数据库 数据库管理系统 2.数据库建模 数据模型 信息模型(概念模型):E/R模型,ODL模型等 基本数据模型:层次模型,网状模型,关系模型等 实体/联系图 属性attribute: 联系relationship: 对约束建模 有哪些重要的约束种类? 键key 单值single-value 参照完整性reference inte 关系数据模型 关系的等价表示法 改变列次序,不改变关系的含义。 改变行次序,不改变关系的含义。 从E/R图到关系设计 实体集到关系的转换 E/R联系到关系的转换 处理弱实体集 函数依赖 函数依赖是如何定义的? 若关系R的任意两个元组在属性A1、A2、…、An上一致(即有相同分量值),则这两个元组在属性B上也一致,则称属性A1A2…An函数决定B,或称B函数依赖于A1A2…An。 判断函数依赖的三种情形 如果任意两元组在属性A上一致,在B上也一致,则有A → B成立。 如果任意两元组在属性A上一致,在B上不一致,则A → B不成立。 如果任意两元组在属性A上不可能一致,则不管在B上是否一致,有A → B成立。 关系的键 如何用函数依赖定义键key? 定义:对于关系R,若属性集合{A1,A2,…,An}满足下列条件,则该属性集合是R的一个键key: 1.A1,A2,…,An函数决定R中所有其他属性。(超键) 2.{A1,A2,…,An}的任何真子集都不能函数决定R中所有其他属性。(最小化) 超键 什么是超键super key? 键的超集superset of key。即包含键的属性集合。 可函数决定关系中所有属性的属性集合。 每个键都是超键。 一个关系的属性全集超键。 每个超键都是键吗?不是。 函数依赖规则 有哪些重要的函数依赖规则? 分解/合并(Splitting/combining)规则 平凡依赖(Trivial Dependance)规则 传递(Transitivy)规则 计算属性的闭包 如何计算属性的闭包? 给定函数依赖集S和属性集A={A1,A2,…An},如何计算A+? 1 将X初始化为{A1,A2,…,A n},闭包最小集合。 2 遍历S中的每个函数依赖,对于每个依赖式:B1B2…Bm → 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,另有一个函数依赖A1A2…An → B,该依赖是否蕴含于S?判断方法: 计算{A1,A2,…,An}+。 若B在{A1,A2,…An}+中,则函数依赖A1A2…An → B蕴含于S中。 若B不在{A1,A2,…An}+中,则函数依赖A1A2…An → 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}+={A} {B}+={B} {C}+={C, D, A} C → AD {D}+={D, A} {A, B}+={A, B, C, D} AB → CD {A, C}+={A, C, D} AC → D {A, D}+={A, D} {B, C}+={B, C, D, A} BC → AD {B, D}+={B, D, A, C} BD → AC {C, D}+={C, D, A} CD → A {A, B, C}+={A, B, C, D} ABC → D {A, B, D}+={A, B, D, C} ABD → C {A, C, D}+={A, C, D} {B, 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范式,当且仅当若非平凡函数依赖A1A2…An → B1B2…Bm在关系R中成立,则{A1,A2,…,An}是R的超键。 关系R满足BC范式的两种情形 关系R中不存在非平凡函数依赖。(只有平凡函数依赖) 每个非平凡函数依赖的左面包含某个键(即左面是超键)。 关系R违背BC范式的唯一情形 关系R中至少存在一个非平凡函数依赖,其左面不是超键。 分解为BC范式 分解策略:消除违背BCNF的函数依赖 1 找一个违背BCNF的非平凡函数依赖A1A2…An → B1B2…Bm。 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,当且仅当若非平凡函数依赖A1A2…An → 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:p125 自然连接 自然连接是什么运算? 对于两个关系R 和S ,自然连接表示为R S 结果:属性是R 和S 中的属性的并集,去掉同名的属性; 其元组是R 和S 在同名属性上一致的元组的所有组合。 上例: 例4.7:p126 θ连接 θ 在笛卡尔积的基础上,增加条件以限制元组。 对于两个关系R 和S ,基于条件c 的θ连接表示为 R cS ,计算步骤: 计算R×S ,即笛卡尔积; 用条件c 做选择运算:бc(R×S)。 例:上例U 和V 关系 改名 改名是什么运算? 把一个关系R 改名为关系S ,且属性也按次序改名为A1A2…An ,表示为ρS (A1, A2,…,An) (R),若 仅关系改名为S而属性不改名,则表示为ρS (R) 例:销售员Salesman (empid, idno, name, gender, phone, deptid) 求“所有重名的销售员的员工号及其姓名” ∏s1.empid,https://www.wendangku.net/doc/e212807647.html,(ρS1(Salesman) 基本运算和派生运算 问题:设有关系:选修(学号,课号,成绩),求: 既选修’c1’,亦选修’c2’的学生学号 ∏学号(б课号= 'c1'(选修)) ∩∏学号(б课号= 'c2'(选修)) 没选修’c1’的学生学号 ∏学号(选修) -∏学号(б课号= 'c1'(选修) 数据库语言SQL SQL简单查询 投影 选择 多关系查询 乘积和连接 子查询 练习: 求选修了'C1'课的学生姓名。(用IN表示) 求'C1'课成绩最好的学生姓名。 求既选'C1'课,又选'C2'课的学生姓名。 求没选'C1'课的学生姓名。 聚合运算 分组 Group By子句如何构成? 根据一列或几列的值把元组分成若干组,有相同分组值的元组作为一组,每个组再分别进行聚合运