您的当前位置:首页正文

南京理工大学考研复试计算机数据库试题1

2023-12-23 来源:独旅网
一、选择题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)表示所销售的每一种商品的货号、品名、种类及生产厂家,一种商品有唯一货号。该关系所满足下列最高范式是:

1

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),其元组如下所示:

R S

A B C C D E

1 2 3 3 7 4

4 5 6 6 4 6

7 8 9 1 2 3

8 4 6 πB,E(R ∞A=D S)的值是:

A. B 2 5 8 E 4 6 3 B. B 5 8

E 6 4 C. B 5 5 8 E 6 6 4 D. B 2 5 8 E 4 3 6 20.在学生选课表studentcourse(stdno,courseno,grade)中,查询选修3号课程、且成绩在70和80分之间的学生的学号(stdno)及其成绩(grade)。实现该功能的SQL语句是: A.SELECT stdno,grade FROM studentcourse

WHERE courseno='3' AND BETWEEN 70WHERE 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: R S A B A B

1 2 1 2

2 4 2 1

3 6 3 2

Select * From R

Where a<>ALL(Select b From S) 结果是; A. B. A B A

1 2 3

22.学生成绩表R如下

C. B 6 A

B D.语法错

2

R. No Score 1 77 2 84 3 92 4 82 5 63 6 72 7 NULL 8 47

Select (score/10)*10 as ScoreLevel, count(no) as num From R

Group by (score/10)*10 Order by ScoreLevel desc; 结果是: A. B. C. ScoreLevel num ScoreLevel num ScoreLevel num 90 1 90 1 40 1 80 2 80 2 60 1 70 2 70 2 70 2 60 1 60 1 80 2 40 1 40 1 90 1 NULL 1 23.关于视图view,下面哪种说法不正确? A.基于一条Select语句可定义一个视图。

B.Create View viewName AS...命令可定义视图。 C.查询视图与查询表在语法上是一样的。

D.Select语句中的From子句中视图和表不能同时出现。 24.关系R如下 R.

No a

1 2

2 NULL

3 7 Select * From R Where a>no*2 OR (a>no*2)is Unknown 结果为 A. B. C. D.语法错

No a No a No a

2 NULL 2 NULL 3 7 25.已知关系如下

3 7

salesman. salesorder Empid empname orderno empid amount 1 Zhang 8001 1 4300 2 Li 8002 3 6700 3 Wang

D.语法错

3

Select empname,amount

From salesman Natural Left Outer Join salesorder; 结果为:

A. Empname amount Zhang 4300 Wang 6700

B. Empname amount Zhang Li Wang 4300 0 6700 C. D.语法错 Empname amount Zhang Li Wang 4300 NULL 6700 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.关于事务控制,下面哪种说法不正确? 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.需处理以下基本业务:

①借书:在某时刻某读者通过某管理员借阅某一本书。

4

按次序回答下列问题:

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、书名、借阅次数,并按借阅次数从大到小排列。(注意使用外连接)

②还书:在某时刻通过某管理员归还某一本书。

③报失:在某时刻某读者向某管理员报失某一本书;报失之后该书不能再借。 每一次还书和报失记录都须对应某一次借书记录,且可由不同管理员处理。

5

参考答案

1.ER图(一些非键属性未列出)

empid

Librarian bookid cardno borrow end helper

Reader Book

Record

recid enddate borrowdate end

autoincrement NULL NULL NOT NULL 1=return 2=lose

isbn Booktype 2.关系模型

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=’A00345’AND end=NULL(Record∞Book∞Booktype)) 3) 计算未处理过借书手续的管理员的员工号及其姓名。

πempid,name(Librarian) -πempid,name(Librarian∞brwempid=empidRecord)

4.SQL运算

1) 计算“清华大学出版社”出版的图书名称及作者

Select title,writers From Booktype Where publisher=’清华大学出版社’; 2) 计算借书证号为“A00345”的读者未归还的图书名称

6

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;

empid name as header idno name gender works for deptid runs for phone custid name prov Department Salesman Customer city phone 7 unit sales for

第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日(其他考生),地点:报考学院(系);

8

体检时间:时间: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

9

关系数据模型

关系的等价表示法 改变列次序,不改变关系的含义。 改变行次序,不改变关系的含义。 从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,…,An},闭包最小集合。 2 遍历S中的每个函数依赖,对于每个依赖式:B1B2…Bm → C 如果B1、B2、…、Bm都在X中,而C不在X中,则把C加入X中。

10

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}

11

关系数据库模式设计 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的关系

12

找出所有违背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

A B B C D

1 2 2 5 6

3 4 4 7 8

9 10 11

R×S

A R.B S.B C D

1 2 2 5 6

1 2 4 7 8

1 2 9 10 11

3 4 2 5 6

3 4 4 7 8

3 4 9 10 11 自然连接 自然连接是什么运算?

对于两个关系R和S,自然连接表示为R S

结果:属性是R和S中的属性的并集,去掉同名的属性; 其元组是R和S在同名属性上一致的元组的所有组合。 上例:

R S

A B C D

1 2 5 6 例4.7:p126 3 4 7 8 U V A B C B C D 1 2 3 2 3 4

6 7 8 2 3 5 9 7 8 7 8 10 13

U V

A B C D θ连接 1 2 3 4 θ连接是什么运算?1 2 3 5 在笛卡尔积的基础上,增加条件以限制元组。 6 7 8 10 对于两个关系R和9 S,基于条件c的7 8 θ连接表示为10 R cS,计算步骤: 计算R×S ,即笛卡尔积; 用条件c做选择运算:бc(R×S)。 例:上例U和V关系

U AA U.B U.C V.B V.C D 1 2 3 2 3 4 1 2 3 2 3 5 1 2 3 7 8 10 6 7 8 7 8 10 改名 9 7 8 7 8 10 改名是什么运算?

把一个关系R改名为关系S,且属性也按次序改名为A1A2…An,表示为ρ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.empid≠s2.empidρS2 (Salesman)) 基本运算和派生运算 问题:设有关系:选修(学号,课号,成绩),求: 既选修’c1’,亦选修’c2’的学生学号

∏学号(б课号 = 'c1'(选修)) ∩∏学号(б课号 = 'c2'(选修)) 没选修’c1’的学生学号

∏学号(选修) - ∏学号(б课号 = 'c1'(选修) 数据库语言SQL SQL简单查询 投影

14

选择

多关系查询 乘积和连接 子查询 练习:

求选修了'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.orderno

Group by salesorder.orderno, signdate, empid, custid 产生一个虚关系:

orderamount(orderno, signdate, empid, custid, qty, amount)

15

视图查询

如何查询视图?

对视图的查询与表查询遵循相同的语法。

例:计算销售金额最高的订单号、签单日期及销售金额。 Select orderno, signdate, amount From orderamount

Where 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, name, managerid, deptid, …) 外键是否可取NULL值? 可以。 SQL系统概况 SQL事务

事务transaction是什么概念? 事务有何特性?ACID。 如何控制事务运行?

事务的一次运行只能是下面两个结果之一: Commit提交;或Rollback退回

Commit指令提交当前事务,完成对数据的更新。

Rollback指令退回当前事务,并取消当前事务对数据已做的更新。 Commit和Rollback都结束当前事务,并自动启动下一个事务。

16

在多用户多任务环境中,并发事务可能引起哪些问题? 同时更新同一数据 脏读dirty read

不可重复读non-repeatable read 虚行(幻象元组)phantom rows “写锁”write lock是什么概念?

某数据被一个事务修改,在该事务提交或退回之前,其他事务不能修改或删除此数据。 脏读是什么含义?

当事务A修改某数据后,在提交或退回前,该数据被事务B读取,若事务A退回,则事务B读取的数据为“脏数据”,即事务B发生脏读。 不可重读non-repeatable read是什么含义?

事务A先读某行数据,随后事务B修改update或删除delete该行数据并提交,事务A重复再读该行数据,结果就不一致。

虚行phantom rows是什么含义?

事务A按某条件C查询一组数据,随后事务B增加insert满足条件C的数据,或修改update条件C相关的数据,使得事务A按原条件C再次查询的结果不一致。也称为“幻象”元组。 “读锁”read lock是什么概念?

当某数据被一个事务处理时,其他事务限制读该数据。 Grant, Revoke指令有何用途?

一、选择题(选择一个最合适的答案)60%

1. 在实体/联系图(E/R图)中,实体集的每个属性都隐含为:

A 多值。 B 单值。 C 不允许为NULL。 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 前三者都不对。 7. 对于一个“弱实体集”, 下面哪种说法不正确:

A 一定有一个多对一的联系到其它实体集。 B 自身属性不能构成完整的键。 C 可单独存在,而无需其它实体集。 D 可以有自己的属性。

8. 关系模型要求各元组的每个分量的值必须是原子性的。对原子性,下面哪种解释不

正确:

A 每个属性都没有内部结构。 B 每个属性都不可分解。

C 各属性值应属于某种基本数据类型。 D 属性值不允许为NULL。

17

9. 对于一个关系的属性(列)集合和元组(行)集合,下面哪种说法不正确:

A 改变属性的排列次序不影响该关系。 B 改变元组的排列次序不影响该关系。 C 改变元组的排列次序会改变该关系。 D 关系的模式包括其名称及其属性集合。 10. 若R是实体集R1与R2间的一个多对多联系,将其转换为关系R’,哪种说法不正

确:

A R’属性应包括R1与R2的所有属性。 B R’属性应包括R1与R2的键属性。 C R1与R2的键属性共同构成R’的键。 D R’的属性应包括R自身定义的属性。 11. 若某关系R的属性集A函数决定R中所有其它属性,则A为关系R的一个:

A 键。 B 主键。 C 超键。 D 外键。 12. 若函数依赖A→B和B→C,则有A→C。此规则是

A 分解/合并规则。 B 平凡依赖规则。 C 传递规则。 D 增长规则。 13. 对于某关系R的某个属性集A,下面哪种说法不正确:

A 若属性集A是R的键,则闭包A+是R中所有属性集合。 B 若闭包A+是R中所有属性集合,则属性集A是R的键。 C 若闭包A+是R中所有属性集合,则属性集A是R的超键。 D 当且仅当属性集A是R的超键,闭包A+是R中所有属性集合。

14. 若某关系R(A, B, C, D)有函数依赖AB→C, C→D, D→A,那么BC→AD是否蕴含于

已有的函数依赖:

A 蕴含 B 不蕴含 C 已知条件不足 D 前三者都不对

15. 若某关系R(A, B, C, D)有函数依赖AB→C, C→D, D→A,那么下面那一个属性集不

是关系R的键:

A {A,B} B {B,C} C {B,D} D {A,C}

16. 若某关系R(A, B, C, D)有函数依赖AB→C, C→D, D→A,那么R的所有超键的数量

是:

A 3 B 4 C 6 D 7

17. 若某关系R(A, B, C, D)有函数依赖AB→C, C→D, D→A,该关系是否违背BCNF,

若违背,则应分解成几个关系才能满足BCNF:

A R符合BCNF,无需分解 B 2个关系 C 3个关系 D 4个关系 18. 关系Movie(studioName, title, year, length)描述每部电影的制片厂、片名、发

行年、片长,该关系所满足的下列最大范式是: A 2NF。 B 3NF。 C BCNF。 D 4NF。

19. 关系MovieStar(starName, title, year, length, studioName)描述影星及其主演

影片的片名、发行年、片长、制片厂。假设一部电影可有多位影星主演,且一位影星可主演多部电影,则该关系的最高范式是: A 1NF。 B 2NF。 C 3NF。 D BCNF。

20. 关系Starsin(movieTitle, movieYear, starName, starAddress)描述每部电影及

其主演影星,影星地址。假设一位影星可有多个地址且可主演多部电影,那么该关系所满足的最大范式是:

A 2NF。 B 3NF。 C BCNF。 D 4NF。

18

21. 关系代数运算中,下面哪种计算可等价表示为其它几种计算的复合形式:

A 投影∏ B 选择σ C 笛卡尔积× D 自然连接 22. 设有关系R(A,B,C)和S(C,D,E),其元组如下所示: A 1 6 7 B 2 7 9 C 3 8 8 C 3 6 1 D 7 6 2 E 4 5 3 计算∏B,E (R A=DS),结果为:

A B C D

B 7 7 9 E 5 2 4 B 7 9 E 2 4 B 7 7 9 E 4 2 4 B 2 7 9 E 5 2 4 23. 关于数据库表中的主键或unique(唯一值),下面哪种说法正确:

A 主键中每个属性都隐含unique。 B 主键中各属性的联合取值为unique。 C unique与主键等价。 D 每个unique属性都隐含为主键。 24. 关于数据库表中的外键,下面哪种说法正确:

A 当表R1到R2有外键时,R2到R1就不能定义外键。

B 某表R中属性A1到R中另一个属性A2之间不能定义外键。 C 外键所参照的双方属性应属同种类型。 D 外键只能在单个属性上定义。

25. 假设表R1中的属性A有外键参照表R2的主键,要使R2中被参照主键属性被修改后,

R1中参照元组的相应属性值也相应修改,那么该外键应设置为下列哪种策略? A ON Update Restrict. B ON Update Cascade C ON Update Set Null D 前三者都不对。

26. 若某属性A设置为非空(NOT NULL),下面哪种说法不正确:

A Update不能设置该属性为NULL。 B Insert元组时须指定该属性的值。

C 该属性不能定义外键使用SET NULL策略。 D 该属性可定义外键允许NULL。

27. 下面哪一项不是事务(Transaction)的特性:

A 原子性 B 可控性 C 隔离性 D 持久性 28. 用下面哪个命令可退回当前事务的执行。

A Commit B Return C Rollback D 前三者都不对。

29. 在并发性事务环境中,事务1修改了某一行数据,但未提交或退回,此时事务2读

取了此行。而后事务1退回。这样可能导致事务2读到的数据不可靠。这种现象被称为:

19

A (Dirty Reads)脏读 B (Non-repeatable Reads)不可重复读 C (Phantom Rows)幻像行 D 事务2不能提交数据。

30. 下面哪一种指令能为用户授权,使其能以一定的权限访问特定的数据库对象。 A Grant B Revoke C Commit D Privilege 二、应用设计40%

为某图书发行公司开发一个会员制网上图书订购数据库系统,该系统的基本需求如下: 1. 该公司分为多个下属部门(Department),如“社科部”,“文艺部”,“计算机部”等。每个部门有若干销售员(Salesman),每个销售员有唯一的员工号(如“S0025”)和身份证号,也包含性别、出生日期、电话等信息。一个销售员仅属于一个部门,且每个部门有一个销售员担任部门经理。部门和人员可以动态调整。

2. 管理注册会员(Member):身份证号、姓名、性别、地址、邮编、电话等。可注册新会员(只有会员才能参与订购图书),也可注销旧会员。

3. 管理所有销售的图书(Book):书名(如“数据库系统基础教程”等)、种类(如“计算机”等)、书号ISBN (如“7-302-03646-2等)、作者(也包括译者,如“史嘉权”)、出版社(如“清华大学出版社”)、定价等。

4. 一个销售订单(Salesorder)表示一笔销售业务。每个订单有一个订单编号和签订日期,且对应一个会员和一个销售员(作为订单经办人)。一个订单至少销售一种图书,每种图书应确定其销售数量和销售价格(销售价格通常低于定价),以计算销售金额。 按次序回答下列问题:

4. 用若干E/R图建立该系统的数据库模型。为每个实体集确定其键属性,并确定每个联系的多重性。注意弱实体集的表示。(8)

5. 由E/R模型建立该系统的关系模式,并确定每个关系的主键和可能的外键。注意各关系中的函数依赖和多值依赖,并使你的关系能符合更高范式。(8) 6. 基于以上关系模式,用关系代数表示下面计算:(8) 1) 计算名为“张军”的销售员的员工号及其电话号码。 2) 计算所有重名的销售员的姓名及其员工号。

3) 计算销售过清华大学出版社出版的计算机类图书的所有销售员的员工号及姓名。 4) 未销售过计算机类图书的销售员的姓名及其员工号。 4.使用SQL语言实现上述计算,并使输出结果不重复。(8) 5.使用SQL语言完成下面的计算:(8)

1) 计算2001年12月签订的所有订单的订单号、签单日期、销售数量和销售金额,

并按销售金额从小到大排列。

2) 计算2001年12月签订的销售金额最大的订单号、销售员姓名和销售金额。(注意

利用已有查询定义视图)

3) 计算2001年12月所有销售员的员工号、姓名及其销售金额。(注意使用外连接,

没有订单的销售员的销售金额应为0)

求员工号为“S0025”的销售员的部门经理的员工号及其姓名

product(maker,model,type) pc(model,speed,ram,hd,cd,price) 20

laptop(model,speed,ram,hd,screen,price) printer(model, color,type,price)

p187 4.1.1

1. What PC models have a speed of at least 150? ∏model(бspeed>=150(PC))

2. Which manufacturers make laptops with a hard disk of at least one gigabyte? ∏maker(бhd>=1(Laptop) //∏maker(Laptop Product)

Product)

Product) - ∏maker(бhd<1(Laptop) 3. Find the model number and price of all products(of any type) made by manufacturer B. ∏model,price(бmaker=’B’(PC ∏model,price(бmaker=’B’(Laptop ∏printer.model,price(бmaker=’B’(Printer Product))∪

Product))∪

printer.model=product.model Product))

4. Find the model numbers of all color laser printers. ∏model(бtype=’laser’ and color(Printer))

5. Find those manufacturers that sell Laptops, but not PC’s. ∏maker(Laptop Product) - ∏maker(PC Product)

6. Find those hard-disk sizes that occur in two or more PC’s. ∏pc1.hd(ρpc1(PC) pc1.model<>pc.model and pc1.hd=pc.hd PC)

7. Find those pairs of PC models that have both the same speed and RAM. ∏pc1.model,pc.model(ρpc1(PC) pc1.model8. Find those manufacturers of at least two different computers (PC’s or laptops) with speeds of at least 133.

P2:=P1:= ∏maker,model(бspeed>=133(PC) ∏maker,model(бspeed>=133(Laptop) Answer:=∏P1.maker(P1 Product)∪

Product)

P1.model<>P2.model and P1.maker=P2.maker P2)

9. Find the manufacturer(s) of the computer (PC or laptop) with the highest available speed. P2:=P1:= ∏model,speed(PC)∪∏model,speed(Laptop)

21

Answer:=∏maker(Product (∏model(P1) - ∏P1.model(P1 P1.speed10. Find the manufacturers of PC’s with at least three different speeds. P3:=P2:=P1:= ∏maker,speed(Product PC)

Answer:=∏P1.maker((P1 P1.speedP2.speed11. Find the manufacturers who sell exactly three different models of PC. P4:=P3:=P2:=P1:= ∏maker,model(Product PC)

M1(maker,m1,m2,m3):=∏P1.maker,P1.model,P2.model,P3.model((P1 P1.model<

P2.model and P1.maker=P2.maker P2)

P2.modelAnswer:=∏maker(M1) - ∏M1.maker(M1 M1.m3P253 5.1.3

a) Find the model number, speed, and hard-disk size for all PC’s whose price is under $1600. select model,speed,hd from pc

where price<1600;

b) Do the same as (a), but rename the speed column megahertz and the hd column gigabytes. select model,speed as megahertz, hd as gigabytes from pc where price<1600;

c) Find the manufacturers of printers. select maker from product

where type=’printer’;

d) Find the model number, memory size, and screen size for laptops costing more than $2000. select model,ram,screen from laptop

where price>=2000;

e) Find all the tuples in the Printer relation for color printers. select * from printer where color;

22

f) Find the model number, speed, and hard-disk size for those PC’s that have either a 6x or 8x CD and a price less than $2000. select model,speed,hd from pc

where price<2000 and (cd=’6x’ or cd=’8x’);

p262 5.2.2

a) Give the manufacturer and speed of laptops with a hard disk of at least one gigabyte? Select laptop.model,maker,speed From laptop, product

Where laptop.model=product.model and hd>1;

b) Find the model number and price of all products (of any type) made by manufacturer B. (Select product.model,price,’pc’ as type1 From product,pc

Where maker=’B’ and product.model=pc.model ) Union

(Select product.model,price,’laptop’ From product,laptop

Where maker=’B’ and product.model=laptop.model ) Union

(Select product.model,price,’printer’ From product,printer

Where maker=’B’ and product.model=printer.model ) c) Find those manufacturers that sell Laptops, but not PC’s. Select maker

From product,laptop

Where product.model=laptop.model and maker not in ( Select maker From product,pc

Where product.model=pc.model);

d) Find those hard-disk sizes that occur in two or more PC’s. Select p1.hd

From pc as p1,pc as p2

Where p1.model<>p2.model and p1.hd=p2.hd;

e) Find those pairs of PC models that have both the same speed and RAM. Select p1.model,p2.model From pc as p1,pc as p2

Where p1.modelf) Find those manufacturers of at least two different computers (PC’s or laptops) with speeds of at least 133.

23

Select maker From product,pc

Where speed>133 and product.model=pc.model and maker IN (Select maker From product,laptop

Where speed>133 and product.model=laptop.model );

P269 5.3.1

a) Find the makers of PC’s with a speed of at least 160. Select maker From product

Where model in (select model from pc where speed >=160);

Select maker From product

Where model =any (select model from pc where speed >=160);

Select maker From product

Where exists (select * from pc where speed >=160 and model=product.model); b) Find the printer with the highest price. Select model From printer

Where price >= all (Select price from printer);

Select model From printer

Where not price < any (Select price from printer);

Select model From printer as p

Where not exists (select * from printer where price>p.price); c) Find the laptop whose speed is slower than that of any pc. Select model From laptop

Where speed < all (Select speed From pc);

Select model From laptop

Where not exists (Select * From pc where speed24

(Select model From pc

Where price>=all (select price from pc) and price>=all (select price from laptop) and price>=all (select price from printer)) union

(Select model From laptop

Where price>=all (select price from pc) and price>=all (select price from laptop) and price>=all (select price from printer)) union

(Select model From printer

Where price>=all (select price from pc) and price>=all (select price from laptop) and price>=all (select price from printer));

e) Find the maker of the color printer with the lowest price. Select maker From product

Where model in (select model from printer where color

and price <= all (Select price From printer

Where color));

f) Find the maker of the PC with the fastest processor among all those PC’s that have the smallest amount of RAM.

Select maker From product, pc

Where product.model=pc.model and ram<=all (Select ram From pc)

and speed >= all ( Select speed From pc

where ram<=all (Select ram From pc));

p278 5.5.1

a) Find the average speed of PC’s. select avg(speed) from pc;

b) Find the average speed of laptops costing over $2500. select avg(speed) from laptop where price>2500;

c) Find the average price of PC’s made by manufacturer “A”. select avg(price) from product, pc

where product.model=pc.model and maker=’A’;

d) Find the average price of PC’s and laptops made by manufacturer “D”. select (sum(pc.price)/count(distinct laptop.model)+ sum(laptop.price)/count(distinct

25

pc.model))/(count(distinct laptop.model)+count(distinct pc.model)) from pc, laptop

where pc.model in (select model from product where maker=’D’)

and laptop.model in (select model from product where maker=’D’);

create view pd as

((select product.model, price from product, pc

where product.model=pc.model and maker=’D’) union

(select product.model, price from product, laptop

where product.model=laptop.model and maker=’D’));

select avg(price) from pd;

e) Find, for each different speed the average price of PCs. select speed, avg(price) from pc

group by speed;

f) Find for each manufacturer, the average screen size of its laptops. select maker, avg(screen) from product, laptop

where product.model= laptop..model group by maker;

g) Find the manufacturers that make at least three different models of PC. select maker, count(distinct model) as num from product where type=’pc’ group by maker having num>=3;

h) Find for each manufacturer the maximum price of PCs. select maker, max(price) from product, pc

where product.model= pc.model group by maker;

i) Find for each speed of PC above 150 the average price. select speed , avg(price) from pc

26

where speed>150 group by speed;

j) Find the average hard disk size of PCs for all those manufacturers that make printers. select maker, avg(hd) from product, pc

where product.model=pc.model and maker in ( select maker from product where type=’printer’) group by maker;

27

因篇幅问题不能全部显示,请点此查看更多更全内容