当前位置:文档之家› 数据库系统原理模拟试卷(五)

数据库系统原理模拟试卷(五)

北方民族大学计算机学院数据库系统系统原理模拟试卷1.D2.C3.B4.A5.C6.A7.C8.D9.C 10.B一、选择题(20分,每小题2分)1关于联系的多重性,下面哪种说法不正确?A.一个多对多的联系中允许多对一的情形。

B.一个多对多的联系中允许一对一的情形。

C.一个多对一的联系中允许一对一的情形。

D.一个多对一的联系中允许多对多的情形。

2.某关系R(A, B, C, D)有函数依赖A→B, BC→D, D→A,R有几个键?A.1B.2C.3D.43. 有关系R和S,R∩S的运算等价于A.S-(R-S)B.R-(R-S)C.(R-S)∪SD.R∪(R-S)4. 为了使索引键的值在基本表中唯一,在建立索引的语句中应使用保留字为:A.UNIQUEB.COUNTC.DISTINCTD.UNION5. 由函数依赖A→B和C B,有A→C。

此规则是:A.合并规则B.平凡依赖规则C.传递规则D.分解规则6.设,且W、R、S的属性个数分别为w、r和s,那么三者之间应满足( )A.w≤r+sB.w<r+sC.w≥r+sD.w>r+s7. 设U是所有属性的集合,X、Y、Z都是U的子集,且Z=U—X—Y。

下面关于多值依赖的叙述中,不正确的是( )A.若X→→Y,则X→→ZB.若X→Y,则X→→YC.若X→→Y,且Y’ Y,则X→→Y’D.若Z=Ф,则X→→Y8. 学生社团可以接纳多名学生参加,但每个学生只能参加一个社团,从社团到学生之间的联系类型是( )A.多对多B.一对一C.多对一D.一对多9. SQL语言集数据查询、数据操纵,数据定义和数据控制功能于一体,语句CREATE、DROP、ALTER实现的功能是( )A.数据查询B.数据操纵C.数据定义D.数据控制10.事务是数据库进行的基本工作单位。

如果一个事务执行成功,则全部更新提交;如果一个事务执行失败,则已做过的更新被恢复原状,好像整个事务从未有过这些更新,这样保持了数据库处于( )状态。

A.安全性B.一致性C.完整性D.可靠性二、填空题(10分,每小题2分)1. 数据操作是指对DB的查询和__更新_________两大类操作。

2. 实体完整性约束规则是对______参照________约束。

3. SQL语言有两种使用方式:交互式和___嵌入式_______。

4. 函数依赖完备的推理规则集包括:自反律、__增广律______、传递律。

5. 事务的原子性是有DBMS的_事务管理程序________实现的。

三、名词解释(10分,每小题2分)1. 弱实体集2. 非平凡多值依赖3. 参照完整性约束4. 授权5. 事务的原子性四、简答题(20分,每小题4分)1. 设有关系R(A,B,C)和S(C,D,E),其元组如下所示:2. 简述将违背BCNF的函数依赖分解成满足BCNF函数依赖的算法。

3. 设教学数据库中有三个基本表:S(SNO,SNAME, AGE, SEX),其属性分别表示学号、学生姓名、年龄、性别。

C(CNO, CNAME, TEACHER),其属性分别表示课程号、课程名、上课教师名。

SC(SNO,CNO,GRADE),其属性分别表示学号、课程号、成绩。

有如下SQL查询语句:SELECT SNOFROM SWHERE NOT EXISTS(SELECT *FROM CWHERE NOT EXISTS(SELECT *FROM SCWHERE S.SNO=SC.SNOAND O=O)请完成下列问题:用汉语句子写出该SQL语句所表示的查询。

4.设有关系模式R(A,B,C,D,E),F是R上成立的函数依赖集,F={ABC→DE, BC→D,D→E},试问R达到第几范式,并说明理由。

5. 举例说明ER模型中实体之间M:N联系转换成关系数据模型的方法是什么?五、设计题(24分,每小题3分)现有关系数据库如下:学生(学号,姓名,性别,专业,奖学金)课程(课程号,名称,学分)学习(学号,课程号,分数)用关系代数表达式实现下列1—4小题:1.检索获得奖学金的所有学生所学课程的信息,包括学号、姓名、课程名和分数;2.检索学生“黎明”所学课程中有不及格课程的课程号、名称和分数;3.检索获得奖学金、同时又有不及格成绩的学生信息,包括学号、姓名和专业;4.检索没有任何一门课程成绩超过90分的所有学生的信息,包括学号、姓名和专业。

用SQL语言实现下列5—8小题:5.检索获得奖学金的所有学生所学课程的信息,包括学号、姓名、课程名和分数;6.检索没有任何一门课程成绩超过90分的所有学生的信息,包括学号、姓名和专业;7.对成绩有过不及格的学生,如果已经获得奖学金的,将奖学金减半;8.定义获得奖学金、同时又有不及格成绩的学生信息视图AAA,包括学号、姓名、专业。

六、综合题(16分,第1题4分,第2题3分,后面每小题3分)为某医院建立一个信息管理系统,系统需求如下:1.医院有多个科室,如:内科,外科,药剂科,财务科等,每个科室有其固定的地址。

2.每个科室有多位职员,每位职员属于一个科室,职员信息包括:姓名、性别、职务(包括医生、护士、药剂师、会计等)、职称、电话等。

职员可能重名。

每个科室有一位职员担任科室主任。

3.医院的药品分类管理,如:抗生素类,心血管类等。

每一类有多种药品,每种药品属于某一类。

4.药品信息包括:药品代码、药品名称、规格、计量单位、价格等。

5.病人看病后由医生开出处方。

处方信息包括:病人姓名、性别、年龄、处方日期、医生姓名、药品名称、规格、数量、服用方法等。

每张处方可开出多种药品。

6.病人凭处方分别付费、取药,系统中应有对应的记录,如:收费员、收费日期,药师、发药日期等。

根据上述需求,按次序回答下列问题:1. 用E/R图建立该系统的数据库模型。

为每个实体集确定其键属性,并确定联系的多重性。

注意弱实体集的表示。

2. 由数据库模型建立该系统的关系模式,并确定每个关系的主键和可能的外键。

注意各关系中的函数依赖和多值依赖,并使你的关系能符合更高范式。

注意:将E/R图中实体集、属性和联系,关系模式中的关系和属性都取为中文名称。

3. 使用SQL语言完成下面的计算:1) 计算2001年12月所开处方的处方号、收费日期、处方收费金额,并按处方金额从小到大排列。

2) 计算2001年12月处方金额最大的处方号、医生姓名和所开处方金额。

(注意利用已有查询定义视图)3) 计算2001年12月所有员工的员工号、姓名及其所开处方的金额。

(注意使用外连接,没有订单的销售员的销售金额应为0)参考答案:一、选择题(20分,每小题2分)1.D2.C3.B4.A5.C6.A7.C8.D9.C 10.B二、填空题(10分,每小题2分)1.更新2. 主键3.嵌入式4. 增广律5. 事务管理程序三、名词解释(10分,每小题2分) 略四、简答题(10分)1.2.⑴找一个违背BCNF 的非平凡函数依赖A 1A 2…A n → B 1B 2…B m 。

⑵把关系R 分解成两个关系:R1(A 1,A 2,…,A n , B 1,B 2,…,B m );R2(A 1,A 2,…,A n , 所有其它属性) ,若不满足BC 范式,则再分解。

3.找出学习所有课程的学号.4.{ABC}+={ABCDE}且{AB}+={AB}、{AC}+={AC}及{BC}+={BCDE},所以ABC 是键。

又BC 是键码真子集,所以它违背2NF ,故该关系模式只满足1NF 。

5. 设工厂里产品与零件之间有M:N 联系,其ER 图如图所示:注意:对于关系“构成”的属性“数量”的语义要清楚。

其语义是,某一产品组成时需要的某种零件的数量,而不是某一产品需要多少零件。

把这个ER 图转换成关系模型的方法(过程)如下:⑴ 把每个实体类型转换为表,实体的键,即为表的键。

产品(产品号,产品名,规格) 零件(零件号,零件名,库存量)⑵ 由于关系是M:N ,两端实体的键合起来作为表的主键,而这两端实体的键分别表的外键,其结构如下:构成(产品号,零件号,数量) 五、设计题(24分,每小题3分)1. ∏学号,姓名,课程名,分数(σ奖学金>0())2.∏课程号,名称,分数(σ姓名=’黎明’()) 3. ∏学号,姓名,专业(σ奖学金>0 AND 分数<60 (学生))4. ∏学号,姓名,专业(学生)-∏学号,姓名,专业(σ分数>90 ())5. SELECT学生.学号,姓名,课程,和分数FROM 学生,学习,课程WHERE 学生.学号=学习.学号AND 学习. 课程号=课程.课程号AND 奖学金>0;6. SELECT 学号,姓名,专业FROM 学生WHERE 学号NOT IN(SELECT 学号FROM 学习WHERE 分数>90)7. UPDATE 学生SET 奖学金=奖学金/2WHERE 学号IN(SELECT 学号FROM 学习WHERE 分数<60)8. CREATE VIEW AAAASSELECT 学号,姓名,专业FROM 学生WHERE 奖学金>0 AND 学号(SELECT 学号FROM 学习WHERE 分数<60)六、综合题(16分,第1题4分,第2题3分,后面每小题3分)1.2.数据库模式科室(名称,地址,主任员工号)职员(员工号,姓名,性别,职称,职务,所在科室)处方(处方号,医生,日期,收费员,收费日期,药剂师,发药日期,病人姓名,病人性别,病人年龄)处方明细(处方号,流水号,药品号,数量,服药方法)药品(药品号,药品名称,规格,计量单位,价格,所属类别)药品类别(类别编号,类别名称)外键科室(主任员工号) →职员(员工号)职员(所在科室) →科室(名称)处方(医生) →职员(员工号)处方收费员) →职员(员工号)处方(药剂师) →职员(员工号)处方明细(处方号) →处方(处方号)处方明细(药品号) →药品(药品号)药品(所属类别) →药品类别(类别号)3. ⑴ select处方.处方号,收费日期,sum(数量*价格) as 收费金额from处方inner join 处方明细on 处方.处方号=处方明细.处方号inner join 药品 on 药品. 药品号=处方明细. 药品号where 收费日期>=’2001-12-01’ and 收费日期<=’2001-12-31’group by 处方.处方号,收费日期order by收费金额⑵ create view V1 asselect 处方.处方号,医生,sum(数量*价格) as 收费金额from 处方inner join 处方明细on 处方.处方号=处方明细.处方号 inner join 药品 on 药品.药品号=处方明细.药品号where 收费日期>=’2001-12-01’ and 收费日期<=’2001-12-31’ group by 处方.处方号,医生select 处方号,姓名,收费金额from 职员inner join V1 on员工号=医生where收费金额>=all (select max(收费金额) from V1)⑶ select 员工号, 姓名, sum(数量*价格) as 收费金额from 职员left outer join(处方 inner join处方明细on 处方.处方号=处方明细.处方号 inner join 药品 on 药品.药品号=处方明细.药品号)on 员工号=医生where 收费日期>=’2001-12-01’ and 收费日期<=’2001-12-31’。

相关主题