课后习题

发布时间 : 星期四 文章课后习题更新完毕开始阅读

习题1

5.实体之间联系有哪几种?分别举例说明?

答:1:1联系:如果实体集El中每个实体至多和实体集E2中的一个实体有联习,反之亦然,那么El和E2的联系称为“l:1联系”。例如:电影院的座位和观众实体之间的联系。

1:N联系:如果实体集El中每个实体可以与实体集E2中任意个(零个或多个)实体有联系,而E2中每个实体至多和El中一个实体有联系,那么El和E2的联系是“1:N联系”。 例如:部门和职工两个实体集之间的联系。

M:N联系:如果实体集El中每个实体可以与实体集E2中任意个(零个或多个)实体有联系,反之亦然,那么El和E2的联系称为“M:N联系”。例如:工程项目和职工两个实体集之间的联系。

7.简述数据库系统的两级映像和数据独立性之间的关系。

答:为了能够在系统内部实现外部级、概念级和内部级3个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两层映像:

外模式/模式映像定义通常包含在各自外模式的描述中,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性,应用程序是依据外模式编写的;

模式/内模式映像包含在模式描述中,此映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系,它保证了数据与程序的物理独立性,所以称为数据的物理独立性。

4.设有关系R和S,如图2.17所示。

S A R A B C B C

3 6 7 3 4 计算R∪S,R-S,R∩S,R×S,π3,2(S),σB<'5'(R),R 5 S,R S。 2<2 2 5 7 7 2 3 答: 7 2 3

S.A S.B S.C B 4 C 4 R-SA B C R∪S A R×S 3

3 6 7 3 6 7 R.A R.B R.C 图2.17 关系R和S 2 5 7 2 5 7

7 2 3 4 4 3

3 6 7 3 4 5 4 4 3 B C R∩S A 3 6 7 7 2 3 3 4 5 7 2 3 2 5 7 3 4 5 π3,2(S) C B 2 5 7 7 2 3 A B C σB<’5’(R)

7 2 3 2 4 4 S R.A R.B R.C S.A S.B S.C R 2<2

7 2 3 3 4 5

5.设教学管理数据库中有三个关系 S(SNO,SNAME,AGE,SEX,SDEPT) SC(SNO,CNO,GRADE)

C(CNO,CNAME,CDEPT,TNAME)

5 4 3 3 7 7 2 2 3 3 3 7 4 2 B 2 5 3 C 3 R S A 7

试用关系代数表达式表示下列查询语句:

(1) 检索LIU老师所授课程的课程号、课程名。 (2) 检索年龄大于23岁的男学生的学号与姓名。

(3) 检索学号为S3学生所学课程的课程名与任课教师名。 (4) 检索至少选修LIU老师所授课程中一门课的女学生姓名。 (5) 检索WANG同学不学的课程的课程号。 (6) 检索至少选修两门课程的学生学号。 解:

⑴ πCNO,CNAME(σTEACHER=’LIU’(C)) ⑵ πSNO,SNAME(σAGE>’23’∧SEX=’M’(SC)) ⑶ πCNAME,TEACHER(σSNO=’S3’(SC C)) ⑷ πSNAME(σSEX=’F’∧TEACHER=’LIU’(S SC C)) ⑸ πCNO(C)-πCNO(σSNAME=’WANG’(S SC)) ⑹ π1(σ1=4∧2≠5(SC×SC))

8.设有关系模式R(职工编号,日期,日营业额,部门名,部门经理),该模式统计商店里每个职工的日营业额,以及职工所在的部门和经理信息。如果规定:每个职工每天只有一个营业额;每个职工只在一个部门工作;每个部门只有一个经理。试回答下列问题: (1) 根据上述规定,写出模式R的基本FD和候选键。

(2) 说明R不是2NF的理由,并把R分解成2NF模式集。 (3) 进而分解成3NF模式集。 解:

⑴ 基本的FD有三个:

(职工编号,日期)→ 日营业额 职工编号 → 部门名 部门名 → 部门经理 R的关键码为:(职工编号,日期)。 ⑵ R中有两个这样的FD:

(职工编号,日期)→(部门名,部门经理) 职工编号 →(部门名,部门经理)

可见前一个FD是局部依赖,所以R不是2NF模式。 R应分解Rl(职工编号,部门名,部门经理) R2(职工编号,日期,日营业额) 此处,Rl和R2都是2NF模式。 ⑶ R2已是3NF模式。

在R1中,存在两个FD:职工编号 → 部门名 部门名 → 部门经理

因此,“职工编号 → 部门经理”是一个传递依赖,Rl不是3NF模式。 R1应分解成R11(职工编号,部门名)

R12(部门名,部门经理)

这样,ρ={R11,Rl2,R2}是一个3NF模式集。 3.简述T-SQL全局变量和局部变量的区别。

T-SQL程序中的变量分为全局变量和局部变量两类,全局变量是由SQL Server系统定义和使用的变量,也称为系统变量。它通过名称前面加两个“@”符号区别于局部变量。DBA和用户可以使用全局变量的值,但不能自己定义全局变量。

局部变量是用户自定义的变量,它的作用范围仅在程序内部。在程序中通常用来储存从表中查询到的数据,或当作程序执行过程中暂存变量使用。局部变量必须以符号“@”开头,而且必须先用DECLARE语句说明后才可使用。

4.给出下列T-SQL语句的运行结果。 DECLARE @d DATETIME SET @d='2013-8-26' SELECT @d+10,@d-10 解:

5.在图书销售数据库中有表结构BOOK(BOOK_ID,BOOK_NAME,PRICR)和

AUTHOR(AUTHOR_NAME,BOOK_ID,ADDRESS),写出完成下列操作的T-SQL语句。

(1) 设置BOOK中BOOK_ID为主键; (2) 设置AUTHOR中BOOK_ID为外键;

(3) 在表BOOK中插入数据(’1203’,’数据库系统与应用教程’,32.8)

(4) 修改表BOOK中BOOK_ID为“1013”的PRICR,使之为原PRICR的0.75倍。 (5) 删除表AUTHOR中的AUTHOR_NAME为“王昌辉”的记录。

解:

(1) USE EDUC

GO

ALTER TABLE BOOK

ADD CONSTRAINT PK_BOOK_ID PRIMARY KEY CLUSTERED(BOOK_ID) GO

(2) USE EDUC

GO

ALTER TABLE AUTHOR

ADD CONSTRAINT FK_AUTHOR_BOOK FOREIGN KEY(BOOK_ID) REFERENCES

BOOK(BOOK_ID)

GO

(3) USE EDUC

GO

INSERT into BOOK VALUES(’1203’,’数据库系统与应用教程’,32.8) GO

(4) USE EDUC

GO

UPDATE BOOK

SET PRICR=PRICR*0.75 WHERE BOOK_ID=’1013’

(5) USE EDUC

GO

DELETE AUTHOR

WHERE AUTHOR_NAME=’王昌辉’ GO

2.对于教学管理数据库的三个基本表 S(SNO,SNAME, SEX, AGE,SDEPT) SC(SNO,CNO,GRADE)

C(CNO,CNAME,CDEPT,TNAME) 试用T-SQL查询语句表达下列查询:

(1) 查询“王志强”所授课程的课程号和课程名。 (2) 查询年龄大于20岁的男学生的学号和姓名。

(3) 查询学号为S6的学生所学课程的课程名和任课教师名。

(4) 查询至少选修“王志强”老师所授课程中一门课程的女学生姓名。 (5) 查询“李小刚”同学不学的课程的课程号。

(6) 查询至少选修两门课程的学生学号。 解:

(1) USE JXGL

GO

SELECT CNO,CNAME FROM C

WHERE TNAME='王志强' GO

(2) USE JXGL

GO

SELECT SNO,SNAME FROM S

WHERE SEX='M' AND AGE>20 GO

(3) USE JXGL

GO

SELECT CNAME,TNAME

FROM S JOIN SC ON S.SNO=SC.SNO AND S.SNO='S6'

JOIN C ON SC.CNO=C.CNO

GO

(4) USE JXGL

GO

SELECT SNAME FROM S WHERE SNO IN

联系合同范文客服:xxxxx#qq.com(#替换为@)