视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
数据库习题答案(第1~4章)
2025-10-05 00:57:01 责编:小OO
文档
习题一

一、单项选择题

1.数据管理技术的发展经历了多个理阶段,其中数据性最高的是( A )阶段。

A)数据库系统       B)文件系统          C)人工管理      D)数据项管理

2.( B )属于信息世界的模型,是现实世界到机器世界的一个中间层次。

A)数据模型          B)概念模型          C)E-R图           D)关系模型

3.反映现实世界中实体及实体间联系的信息模型是( D )。

A)关系模型         B)层次模型          C)网状模型       D)E-R模型

4.下列条目中,( C )是数据模型的要素。

Ⅰ.数据管理        Ⅱ.数据操作      Ⅲ.数据完整性约束     Ⅳ.数据结构 

A)Ⅰ、Ⅱ和Ⅲ       B)Ⅰ、Ⅱ和Ⅳ        C)Ⅱ、Ⅲ和Ⅳ     D)Ⅰ、Ⅲ和Ⅳ

5.数据库的概念模型于( B )。

A)E-R图                               B)具体的机器和DBMS

C)现实世界                             D)用户需求

6.按所使用的数据模型来分,数据库可分为哪三种模型( A )。

A)层次、关系和网状                    B)网状、环状和链状

C)大型、中型和小型                    D)独享、共享和分时

7.层次模型不能直接表示实体间的( C )。

A)1﹕1关系        B)1:n关系           C)m﹕n关系     D)1﹕1和1:n关系

8.在对层次数据库进行操作时,如果删除双亲节点,则相应的子女节点值也被同时删除。这是由层次模型的( B )决定的。

A)数据结构        B)完整性约束          C)数据操作     D)缺陷

9.下列条目中,( D )是数据库应用系统的组成成员。

Ⅰ.操作系统         Ⅱ.数据库管理系统      Ⅲ.用户

Ⅳ.数据库管理员     Ⅴ.数据库              Ⅵ.应用系统 

A)仅Ⅱ、Ⅳ和Ⅴ                          B)仅Ⅰ、Ⅱ、Ⅲ、Ⅳ和Ⅴ

C)仅Ⅰ、Ⅱ、Ⅳ和Ⅴ                      D)都是

10.在数据库中,产生数据不一致性的根本原因是( C )。

A)数据存储量过大                        B)访问数据的用户数太多

C)数据冗余                              D)数据类型太复杂

11.关系模型的完整性规则不包括( D )。

A)实体完整性规则                        B)参照完整性规则    

C)用户自定义的完整性规则                   D)数据操作性规则

12.数据库管理系统中数据操纵语言DML所实现的操作一般包括( A )。

A)查询、插入、修改、删除                B)排序、授权、删除  

C)建立、插入、修改、排序                D)建立、授权、修改

13.关系模型中,一个关键字( C )。

A)可由多个任意属性组成                  B)至多由一个属性组成

C)可由一个或多个其值能唯一标识该关系模式或任何元组的属性组成

D)以上都不是

14.现有学生关系模式:学生(宿舍编号,宿舍地址,学号,姓名,性别,专业,出生日期),这个关系模式的主关键字是( B )。

A)宿舍编号        B)学号      C)宿舍地址,姓名     D)宿舍编号,学号

15.在关系数据库中,用来表示实体之间联系的是( D )。

A)树形结构       B)网状结构      C)线性表      D)二维表

16.逻辑数据性是指( D )。

A)概念模式改变,外模式和应用程序不变    B)概念模式改变,内模式不变

C)内模式改变,概念模式不变              D)内模式改变,外模式和应用程序不变

17.数据库三级模式体系结构的划分,有利于保持数据库的( A )。

A) 数据性     B) 数据安全性     C) 结构规范化   D) 操作可行性 

18.在数据库的三级模式结构中,内模式的个数( A )。

A)只有1个      B)与用户个数相同     C)由系统参数决定     D)有任意多个

19.在数据库的三级模式结构中,当模式改变时,通过修改外模式/模式的映像而使外模式不变,从而不必修改应用程序,这是保证了数据与程序的( D )。

A)存储性     B)物理性     C)用户性      D)逻辑性

20.数据库系统的体系结构是( C )。

A)二级模式结构和一级映像      B)三级模式结构和一级映像

C)三级模式结构和二级映像       D)三级模式结构和三级映像

二、设计题

1.已知某图书销售数据库由图书、出版商、作者、书店、订单等实体集(对象)组成,各个实体的属性如下:

1)出版商:出版商编码、名称、地址、所在城市、联系电话

2)图书:书编码、书名、类型、单价、出版日期

3)作者:作者编码、姓名、出生日期、地址、联系电话

4)书店:书店编码、名称、地址、联系电话

5)订单:订单编号、订单日期、订购数量。

数据库语义如下:

1)一个出版商可以出版多本图书,但一本图书只能由一个出版商出版;

2)一个作者可以写多本书,一本书可以有多个作者编写;

3)图书销售情况以订单形式加以存储,一张订单可以有多本图书,一本图书可以在多个订单中出现,但同一订单中同一本图书只能出现一次;

4)一个订单只属于一个书店,一个书店可以有多张订单;

画出该数据库的E-R图。

参:

2.某工厂(包括厂名和厂长名)需要建立一个数据库,其语义如下: 

1)一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址和电话;

2)一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种;

3)一个车间生产多种产品,产品有产品编号、产品名称、规格型号和价格;

4)一个车间生产多种零件,一个零件也可能为多个车间制造。零件有零件号、零件名、重量和价格;

5)一个产品由多种零件组成,一种零件也可装配出多种产品;

6)产品与零件均存入仓库中;

7)厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。

画出该数据库的E-R图。

参:

习题二

一、单项选择题

1.关系模型中,候选码( C  )。

A)可由多个任意属性组成

B)至多由一个属性组成

C)可由一个或多个其值能唯一标识该关系模式中任何元组的属性组成

D)以上说法都不正确

2.一个关系数据库中的各个元组( B )。

A)前后顺序不能任意颠倒,一定要按照输入的顺序排列

B)前后顺序可以任意颠倒,不影响数据库中的数据关系

C)前后顺序可以任意颠倒,但排列顺序不同,统计处理的结果就可能不同

D)前后顺序不能任意颠倒,一定要按照码段值的顺序排列

3.外码必须为空值或等于被参照表中某个元组的主码。这是( B )。

A)实体完整性规则              B)参照完整性规则 

C)用户自定义完整性规则        D)域完整性规则

4.在关系代数运算中,不属于基本运算的是( C )。

A)差     B)并      C)交      D)乘积

5.设关系R和S的属性个数分别是3和4,元组个数分别是100和300,关系T是R和S的广义笛卡尔积,则T的属性个数和元组个数分别是( D )。

A)4,300      B)4,400      C)7,400    D)7,30000

6.在关系代数的连接操作中,( A )操作需要取消重复列。

A)自然连接     B)笛卡儿积     C)等值连接     D)θ连接

7.下列哪一种关系运算不要求:R和S具有相同的元数,且它们对应属性的数据类型也相同”?( C )。

A)R∪S      B)R∩S      C)R-S       D)R×S

8.设关系R与关系S具有相同的目(或称度),且相对应的属性的值取自同一个域,则R-(R-S)等于( B )。

A)R∪S      B)R∩S      C)R×S     D)R-S

9.在关系代数的专门关系运算中,从关系中取出若干属性的操作称为( B );从关系中选出满足某种条件的元组的操作称为( A );将两个关系中具有共同属性的值的元组连接到一起构成新关系的操作称为( C )。

A)选择         B)投影        C)连接        D)扫描

10.在关系R(R#,RN,S#)和S(S#,SN,SD)中,R的主码是R#,S的主码是S#,则S#在R中称为( A )。

A)外码        B)候选码        C)主码        D)超码

11.等值连接和自然连接相比较,正确的是( C )。

A)等值连接和自然连接的结果完全相同

B)等值连接的属性个数大于自然连接的属性个数

C)等值连接的属性个数小于自然连接的属性个数

D)等值连接的属性个数等于自然连接的属性个数

12.有两个关系R(A, B, C)和S(B, C, D),则R÷S结果的属性个数是( C )。

A)3  2)1  不一定

13.设关系R(A,B,C)和关系S(B,C,D),那么与等价的关系代数表达式是( B )。

A)σ2=4(RS)        B)σ2=4(R×S)       C)σ2=1(RS)      B)σ2=1(R×S)

14.设关系X和Y的属性相同,分别有m和n个元组,那么X-Y操作的结果中元组个数为( C )。

A)等于m-n     B)等于m     C)小于等于m     D)小于等于m-n

15.设关系R(A,B,C)和S(B,C,D),下列各关系代数表达式不成立的是( B )。

A)R÷S        B)Π2,3 (R)∪Π1,2 (S)          C)R∩S           D) RS

16.设W=RS,且W、R、S的属性个数分别为w、r和s,那么三者之间应满足( B )。

A)w<=r+s B)wr+s

17.有两个关系R(A,B,C)和S(B,C,D),则RS结果的属性个数是( B )。

A)3        B)4        C)5        D)6

18.在四元关系R中,属性分别是A、B、C、D,下列叙述中正确的是( C )。

A)ΠB,C(R)表示取值为B、C的两列组成的关系

B)Π2,3(R)表示取值为2、3的两列组成的关系

C)ΠB,C(R)和Π2,3(R)表示的是同一个关系

D)ΠB,C(R)和Π2,3(R)表示的不是同一个关系

19.设有关系SC(Sno,Cno,Grade),主码是(Sno,Cno)。遵照实体完整性规则( D )。

A)只有Sno不能取空值           B)只有Cno不能取空值

C)只有Grade不能取空值           D)Sno与Cno都不能取空值

20.设关系R=(A,B,C),与SQL语句Select Distinct A From R Where B=17等价的关系代数表达式是( A )。

A)ΠA(σB=17(R))              B)σB=17(ΠA(R))

C)σB=17(ΠA,C(R))            D)ΠA,C(σB=17(R))

21.设有关系R(A,B,C)和关系S(B,C,D),那么与RS等价的关系代数表达式是( C )。

A)Π1,2,3,4(σ2=1∧3=2(R×S))         B)Π1,2,3,6(σ2=1∧3=2(R×S))

C)Π1,2,3,6(σ2=4∧3=5(R×S))         D)Π1,2,3,4(σ2=4∧3=5(R×S))

下面第22~25题,基于“学生—选课—课程”数据库中的3个关系: 

S(Sno,Sname,Gender,Department),主码是Sno

C(Cno,Cname,Teacher),主码是Cno

SC(Sno,Cno,Grade),主码是(Sno,Cno)

22.下列关于保持数据库完整性的叙述中,哪一个是不正确的?( D )。

A)向关系SC插入元组时,Sno和Cno都不能是空值(NULL)

B)可以任意删除关系SC中的元组

C)向任何一个关系插入元组时,必须保证该关系主码值的唯一性

D)可以任意删除关系C中的元组

23.为了提高特定查询的速度,对SC关系创建唯一索引,应该创建在哪一个(组)属性上?( A )。

A)(Sno,Cno)  B)(Sno,Grade)   C)(Cno,Grade)    D)Grade

24.查找每个学生的学号、姓名、选修的课程名和成绩,将使用关系( D )。

A)只有S,SC   B)只有SC,C     C)只有S,C     D)S,SC,C

25.查找学生号为"D07540102"的学生的“数据库”课程的成绩,至少将使用关系( B )。

A)S和SC      B)SC和C      C)S和C      D)S、SC和C

二.解答题

1.设有如下关系:

图书(书号,书名,作者,出版社);

读者(借书证号,读者名,读者地址);

借阅(读者名,书号,借书日期,归还日期)。

1指出每个关系模式的候选码,主码,外码,主属性。

参:

图书(书号,书名,作者,出版社):候选码、主码={书号};主属性={书号};无外键。

读者(借书证号,读者名,读者地址):候选码={借书证号,读者名}、主码={读者名};主属性={读者名};无外键。

借阅(读者名,书号,借书日期,归还日期):候选码、主码={读者名+书号+借书日期};主属性={读者名,书号};外键=读者名和书号。

② 试用关系代数表达式查询2010年12月31日以前借书未还的读者姓名和图书书名。

参:

Π1,3 (Π1,2(σ3<=’2010-12-31’^4=’ ’(借阅) Π1,2 (图书) )或

Π读者名,书名(Π读者名,书号(σ借书日期<=’2010-12-31’^癸亥日期=’ ’(借阅) Π书号,书名(图书) )

2.设关系R、W和D如下,计算下列关系代数: 

PQTY
2bcd
9aef
2bef
9ade
7gef
7gcd
关系R

关系W

T

YB
cdm
cdn
dfn
关系D

TY
cd
ef
1R1=∏Y,T(R)

参:

YT
dc
fe
ed
②R2=σP>5∧T=e(R)

参:

PQTY
9aef
7gef
③R3=RW

PQTYB
2bcdm
2bcdn
④R4=∏2,1,6(σ3=5 (R×D))

参:

设X=(σ3=5 (R×D))=

PQR.TR.YD.TD.Y
2bcdcd
9aefef
2befef
7gefef
7gcdcd
得到R4=∏2,1,6(X)=

QPY
b2d
a9f
b2f
g7f
g7d
⑤R5=R÷D

参:

在关系R中,属性P的取值:(2, 7, 9)。其中:

2的像集为{ (c,d), (e,f) }

7的像集为{ (e,f), (c,d) }

9的像集为{ (e,f), (d,e) }

关系D在(T,Y)上的投影为{ (c, d), (e, f) }

只有关系R中2的像集和7的像集包含D在(T,Y)属性组上的投影,即

R5=R÷D={ 2,7 }

3.给定一个有关学生选课数据库Education,它包含学生、课程、教师、选课和授课等5个关系模式,分别用Students, Courses, Teachers,StudCourses, Instructions表示。各个关系模式表示如下:

Students(Sno, Sname, Gender, Major)=学生(学号,姓名,性别,所属专业)

Courses(Cno, Cname, Pno, Credit)=课程(课程编号,课程名称,前修课程,学分)

Teachers(Tno, Tname, Title, Major)=教师(教师编号,姓名,职称,所属专业)

StudCourses(Cno, Cno, Period, Grade)=选课(学号,课程编号,选课学期,成绩)

Instructions(Tno, Cno, Period)=授课(教师编号,课程编号,授课学期)

用关系代数完成下列查询:

1查询选修过“数据库”和“数据结构”这两门课程的学生姓名。

解题步骤:

1)通过StudCourses与Courses的自然连接,求出选修过“数据库”的学生学号

T1=∏Sno(σCname='数据库'(StudCoursesCourses))

2)通过StudCourses与Courses的自然连接,求出选修过“数据结构”的学生学号

T2=∏Sno(σCname='数据结构'(StudCoursesCourses))

3)求出选修过“数据库”和“数据结构”这两门课程的学生学号

T3=T1∩T2

4)在已知学号的情况下,与Students进行自然连接,求出选课学生的姓名

T=∏Sname(T3Students)

最终答案:

∏Sname((∏Sno(σCname='数据库'(StudCoursesCourses))∩

∏Sno(σCname='数据结构'(StudCoursesCourses)))

Students)

2查询姓名为“李平”这个学生所选修的全部课程的名称。

解题步骤:

1)从Students中取“李平”这个学生的学号

T1=∏Sno(σSname='李平'(Students))

2)从StudCourses中取学号与课程号两个属性的投影,并与Courses作自然连接,得到学号、课程号和课程名称这3个属性

T2=∏Sno,Cno(StudCourses) ∏Cno,Cname(Courses)

3)将T1与T2作自然连接,并求课程名称Cname上的投影。

T3=∏Cname(T1T2)

最终答案:

∏Cname( ∏Sno(σSname='李平'(Students))  (∏Sno,Cno(StudCourses)  Courses))

3查询没有选修过“数据库”这门课程的学生姓名。

解题步骤:

1)先查询选修过“数据库”这门课程的学生学号

T1=∏Sno(σCname='数据库'(StudCourseCourses))

2)使用减法,求出没有选修数据库的学生学号

T2=∏Sno(Students)-T1

3)将T2与Students作自然连接,求出没有选修“数据库”的学生的姓名

T3=∏Sname(T2Students)

最终答案:

∏Sname((∏Sno(Students)-∏Sno(σCname='数据库'(StudCourseCourses)))  Students)

4查询选修过“数据库”但没有选修其先行课的学生学号。

解题步骤:

1)先查询选修过“数据库”这门课程的所有学生的学号

T1=∏Sno(σCname='数据库'(StudCourseCourses))

2)求“数据库”这门课程的前修课程的编号(假设为T2)

T2=∏Pno(σCname='数据库'(Courses))

3)求T1这些学生中选修过T2这门课程的所有学生的学号

T3=∏Sno(T1σCno=T2(StudCourses))或

T3=∏Sno(StudCoursesT2)

4)从选修“数据库”课程的学生中减去同时选修了其前修课程的学生,最终得到没有选修其先行课的学生学号T4

T4=T1-T3 

5查询所有课程成绩全部及格的学生姓名。

解题步骤:

1)求出有一门课程考试成绩不及格的学生的学号

T1=∏Sno(σGrade<60(StudCourses))

2)从所有选课学生中减去T1中的学生,得到所有考试成绩都及格的学生的学号

T2=∏Sno(StudCourses)-T1

3)T2与Students自然连接,得到这些学生的姓名

T3=∏Sname(T2Students))

6查询选修过教师“达尔文”所授的全部课程的学生姓名。

解题步骤:

1)求出教师“达尔文”所授的全部课程T1

T1=∏Cno(∏Tno(σGTname=='达尔文'(Teachers)) ∏Cno,Tno(Instructions))

2)使用除法,求出选修了这些课程的学生学号T2,然后将T2与Students自然连接,得到这些学生的姓名T3

T2=∏Sno,Cno(studcourses) ÷ T1

T3=∏Sname(T2Students))

7查询哪些学生选修的课程中其前修课程还没有选修过。

解题步骤(举例说明):

1)设R=∏Sno,Cno(StudCourses) ∏Cno,Pno(Courses),设S=R。假设实例如下:

Courses                 StudCourses

CnoPnoSnoCno
C1S1C1
C3C2S1C3
C4C3S1C4
C1S2C1
C2C1S2C2
C4C3S2C4
C6C5S2C6
C1S3C1
C2C1S3C2
C5S4C5
则得到R、S如下:

R                       S

SnoCnoPnoSnoCnoPno
S1C1S1C1
S1C3C2S1C3C2
S1C4C3S1C4C3
S2C1S2C1
S2C2C1S2C2C1
S2C4C3S2C4C3
S2C6C5S2C6C5
S3C1S3C1
S3C2C1S3C2C1
S4C5S4C5
2)设,求出选修课程中包含前修课程的学生和课程信息

SnoCnoPno
S1C4C3
S2C2C1
S3C2C1
3)设T=R-K,排除已有前修课程的学生及课程信息

SnoCnoPno
S1C1
S1C3C2
S2C1
S2C4C3
S2C6C5
S3C1
S4C5
4)设P=σPno<>' '(T) ,排除那些本身没有前修课程的选修记录,得到没有选修前修课程的课程及学号信息。

SnoCnoPno
S1C3C2
S2C4C3
S2C6C5
5)将P与Students自然连接,得到没有选修前修课程的学生姓名

X=∏Sname(∏Sno(P)  Students)

最终答案:

R=∏Sno,Cno(StudCourses) ∏Cno,Pno(Courses)

T=R-K

P=σPno<>' '(T)

X=∏Sname(∏Sno(P)  Students)

8查询哪些学生与学号为“S1”的学生选修了完全相同的课程。

解题步骤(举例说明)。假设:

StuCourses

SnoCnoGrade
S1C160
S1C270
S1C380
S2C190
S2C265
S2C375
S2C485
S3C195
S3C270
S3C375
S4C480
S4C685
S5C190
S5C272
S5C375
S5C678
S5C778
1)求出学号为S1的这个学生选修的全部课程编码T1

T1=∏Cno(σSno='S1'(StudCourses))

Cno
C1
C2
C3
2)利用除法,求出至少选修了全部T1课程的学生学号T2。但T2中有一部分学生选修的课程比S1还要多,也就是说与S1选修的课程不完全相同。

T2=∏Sno,Cno(StudCourses) ÷ T1

Sno
S1
S2
S3
S5
3)在StudCourses中提取T2这些学生选修的全部课程,得到T3

T3=∏Sno,Cno(StudCoursesT2)

4)将T3与T1×T2(笛卡尔积)相减,得到那些比S1选的课还要多的学生及课程信息T4。

T4=T3- T1×T2

SnoCno
S2C4
S5C6
S5C7
5)在T2中剔除比S1选课还要多的那些学生,当然还要去掉S1自己本身。

T5=σSno='S1' (T2)-∏Sno(T4)

最终答案:

T1=∏Cno(σSno='S1'(StudCourses))

T2=∏Sno,Cno(StudCourses) ÷ T1

T3=∏Sno,Cno(StudCoursesT2)

T4=T3- T1×T2

T5=σSno='S1' (T2)-∏Sno(T4)

9查询哪些学生没有选修过教师“达尔文”所授的任何一门课程。

解题步骤:

1)求出教师“达尔文”所授的所有课程T1

T1=∏Cno(σTname='达尔文' (InstructionsTeachers))

2)通过T1与StudCourses的自然连接,求出选修过“达尔文”所授任一课程的学生T2,从全部学生中减去T2,得到没有选修过教师“达尔文”所授课程的学生T3。

T2=∏Sno(StudCoursesT1)

T3=∏Sno(Students)-T2

10查询哪些学生至少选修了教师“达尔文”所授的两门不同的课程。

解题步骤(举例说明)。假设:

StudCourses

SnoCnoGrade
S1C166
S2C167
S2C3

68
S2C4

69
S2C6

70
S3C178
S3C4

76
S4C475
S4C673
S5C2

80
S5C4

S6C686
1)求出教师“达尔文”所授的所有课程T1

T1=∏Cno(σTname='达尔文' (InstructionsTeachers))

这里举例假设为:

Cno
C1

C2

C4

2)通过T1与StudCourses的自然连接,求出选修过“达尔文”所授任一课程的学生及课程信息T2。

T2=∏Sno,cno(StudCoursesT1)

T2                           T2

SnoCnoSnoCno
S1C1S1C1
S2C1S2C1
S2C4

S2C4

S3C1S3C1
S3C4

S3C4

S4C4S4C4
S5C2

S5C2

S5C4

S5C4

3)通过T2与T2的笛卡尔积,得到选修了“达尔文”所授两门不同课程的学号。

T3=∏Sno(σ1=3^2<>4(T2×T2))

其中:

σ1=3^2<>4(T2×T2)

SnoCno
S2C1
S2C4

S3C1
S3C4

S5C2

S5C4

习题三

一、单项选择题

1.设系、学生、教师3个实体之间存在约束:一个系可以有多名教师,一名教师只属于一个系,一个系可以有名学生,一名学生只属于一个系。下列E-R图中能准确表达以上约束的是( B )。

(A)

(B)

(C)

(D)

2.有10个实体型,并且它们之间存在着10个不同的二元联系,其中2个是1:1联系类型,3个是1:n联系类型,5个是m:n联系类型,那么根据转换规则,这个E-R图转换成的关系模式有( B )。

A)13个         B)15个       C)18个       D)20个

3.从E-R模型关系向关系模型转换时,一个m﹕n联系转换为关系模式时,该关系模式的码是( C )。

A)m端实体的码                   B)n端实体的码

C)m端实体码与n端实体码组合      D)重新选取其他属性

4.设R(U)是属性集U上的关系模式,X、Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称( A )。

A)Y函数依赖于X         B)Y对X完全函数依赖

C)X为U的候选码         D)R属于2NF

5.下列不属于非平凡函数依赖的是( D )。

A) (CustomerID, ProviderID, BuyDate) GoodsName

B) (CustomerID, ProviderID, BuyDate) GoodsName,ProviderID

C) (CustomerID, ProviderID, BuyDate) GoodsClassID

D) (CustomerID, ProviderID, BuyDate)  ProviderID

6. 某供应商关系模式为:

Providers (PID,Pname,Tel,GoodsID,GoodsClassID,GoodsName,GoodsPrice)

该关系模式满足如下函数依赖:

PID Pname,PID Tel,GoodsID GoodsClassID,GoodsID GoodsName,GoodsName  GoodsPrice,则这个关系模式的主码为( C )。

A) (PID,GoodsName)       B) (PID,GoodsClassID)  

C) (PID,GoodsID)          D) (PID, GoodsPrice)

7.下列关于模式分解的叙述中,不正确的是( A )。

A)若一个模式分解保持函数依赖,则该分解一定具有无损连接性

B)若要求分解保持函数依赖,那么模式分解可以达到3NF,但不一定能达到BCNF

C)若要求分解既具有无损连接性,又保持函数依赖,则模式分解可以达到3NF,但不一定能达到BCNF

D)若要求分解具有无损连接性,那么模式分解一定可以达到BCNF 

8.下列关于部分函数依赖的叙述中,正确的是( C )。

A)若 X Y,且存在属性集 Z,Z Y  ,X Z,则称 Y 对 X 部分函数依赖 

B)若 X Y,且存在属性集 Z,Z Y= ,X Z,则称 Y 对 X 部分函数依赖 

C)若 X Y,且存在 X 的真子集 X′,X′ Y,则称 Y 对 X 部分函数依赖 

D)若 X Y,且对于 X 的任何真子集 X′,都有 X′ Y,则称 Y 对 X 部分函数依赖

9.设U是所有属性的集合,X、Y、Z 都是 U 的子集,且 Z=U-X-Y,下列关于多值依赖的叙述中,正确的是( D )。

Ⅰ. 若 X  Y,则 X Y                    Ⅱ. X Y,则 X  Y

Ⅲ .若 X  Y,且 Y'  Y,则 X   Y'     Ⅳ .若 X  Y,则 X  Z

A)只有Ⅱ     B)只有Ⅲ      C)Ⅰ和Ⅲ     D)Ⅱ和Ⅳ

10.设有关系模式SC(Sno, Sname, Sex, Birthday, Cno, Cname, Grade, Tno, Tname)满足函数依赖集:{Sno→Sname, Sno→Sex, Sno→Birthday, Cno→Cname, (Sno, Cno)→Grade, Tno→Tname}。SC的主码和属性集 (Sno, Tno) 的闭包分别是( B )。

A)(Sno,Tno)和{Cno,Cname,Grade,Tno,Tname}

B)(Sno, Cno, Tno)和{Sno, Sname, Sex, Birthday, Cno}

C)(Sno, Cno)和{Sno, Sname, Sex, Birthday, Cno, Cname, Grade}

D)(Sno, Cno, Tno)和{Sno, Sname, Sex, Birthday, Tno, Tname}

11.设关系模式R(U,F),U=ABCDE,F={AB→C, CD→E, DE→B} ,则关系R 的键是(  C )。

A)AB      B)ABC     C)ABD      D)ABE

12.设有关系模式R(A,B,C),根据语义有如下函数依赖集:F={A B, (B,C) A}。关系模式R的规范化程度最高达到( C )。

A)1NF     B)2NF      C)3NF     D)4NF

第13~14题基于如下叙述:关系模式 Students (Sno, Sname, Cno, Cname, Grade, Tname, Taddr)的属性分别表示学号、学生姓名、课程号、课程名、成绩、任课教师名和教师地址。其中,一名学生可以选修若干门课程,一个教师可以讲授若干门课程,一门课程可以由若干教师讲授,一名学生选修一门课程时必须选定讲授课程的教师,教师不会重名。

13.关系模式Students的候选关键码有( A )。

A)1 个,为(Sno,Cno)

B)1 个,为(Sno,Cno,Tname)

C)2 个,为(Sno,Sname,Cno)和(Sno,Cno,Tname)

D)2 个,为(Sno,Sname,Cno)和(Sname,Cno,Tname)

14.关系模式Students的规范化程度最高达到( A )。

A)1NF     B)2NF     C)3NF     D)BCNF

第15~17题基于下列描述:有关系模式R(A,B,C,D,E),根据语义有如下函数依赖集: F={A C,BC D,CD A,AB E}。

15.下列属性组中的是关系R的候选码( B )。

Ⅰ.(A,B)    Ⅱ.(A,D)    Ⅲ.(B,C)    Ⅳ.(C,D)    Ⅴ.(B,D)

A)仅Ⅲ        B)Ⅰ和Ⅲ       C)Ⅰ、Ⅱ和Ⅳ     D)Ⅱ、Ⅲ和Ⅴ

16.关系模式R的规范化程度最高达到( C )。

A)1NF     B)2NF      C)3NF     D)BCNF

17.现将关系模式R分解为两个关系模式 R1(A,C,D),R2(A,B,E),那么这个分解( A )。

A)不具有无损连接性且不保持函数依赖     B)具有无损连接性且不保持函数依赖 

C)不具有无损连接性且保持函数依赖       D)具有无损连接性且保持函数依赖

第18-19基于以下描述:有关系模式  P(A,B,C,D,E,F,G,H,I,J),根据语义有如下函数依赖集:F={ABD E,AB G,B F,C J,C I,G H}

18.关系模式 P 的码是( D )。

A)(A,B,C)     B)(A,B,D)     C)(A,C,D,G)     D)(A,B,C,D) 

19.关系模式 P 的规范化程度最高达到(  ? )。

A)1 NF     B)2NF      C)3NF      D)4NF

第20~21题基于以下描述:有关系模式 R(S,T,C,D,G),根据语义有如下函数依赖集: F={(S,C)   T,C D,(S,C) G,T C}。 

20.关系模式 R 的候选码( C ) 。

A)只有 1 个,为(S,C)            B)只有 1 个,为(S,T)

C)有 2 个,为(S,C)和(S,T)    D)有 2 个,为(S,C)和(T)

21.关系模式 R 的规范化程序最高达到( A ) 。

A)INF      B)2NF      C)3NF     D)BCNF

第22~23题基于以下描述:有关系模式 P(C,S,T,R),根据语义有如下函数依赖集:F={C  T,ST R,TR C}。

22.关系模式 P 的规范化程度最高达到( D )。

A)INF      B)2NF      C)3NF      D)BCNF

23.现将关系模式 P 分解为两个关系模式 P 1(C,T,R),P 2(C,S),那么这个分解( A )。

A)不具有无损连接性,不保持函数依赖 具有无损连接性,不保持函数依赖 

C)不具有无损连接性,保持函数依赖         D)具有无损连接性,且保持函数依赖

第24~25题基于已知下列信息:数据库关系模式R=(A,B,C,D,E)有下列函数依赖:A→BC, D→E, C→D。

24.下述对R的分解中,哪一个(或哪些)分解可保存R所有的函数依赖关系?( B )。

Ⅰ. (A、B、C)和(C、D、E)       Ⅱ. (A、B)和(C、D、E) 

A)均不是       B)只有Ⅰ      C)只有Ⅱ      D)Ⅰ和Ⅱ 

25.下述对R的分解中,哪一个(或哪些)分解是R的无损连接分解? ( B )。

Ⅰ. (A、B、C)和(C、D、E)     Ⅱ. (A、B)和(A、C、D、E) 

A)均不是       B)只有Ⅰ      C)只有Ⅱ      D)Ⅰ和Ⅱ

二、解答题

1. 某公司需建立产品信息数据库,其其业务需求如下:

① 一种产品可以使用多个不同种类的部件,也可以使用多个不同种类的零件:一种部件至少被用在一种产品中;一种部件可以由多个不同种类的零件组成;一种零件至少被用在一种产品或一种部件中;

② 对于一种具体的部件,要记录这种部件使用的各种零件的数量;

③ 对于一种具体的产品,要记录这种产品使用的各种部件零件数量和各种零件数量,但部件所使用的零件数量不计入该产品的零件数量;

④ 一个供应商可供应多种零件,但一种零件只能由一个供应商供应。

根据以上业务要求,某建模人员构建了如下E-R图:

图3-14 产品信息数据库E—E图

此E-R图中的实体的属性完整,但实体、联系的设计存在不合理之处。

① 请重新构建合理的E-R图,使之符合业务要求,而且信息完整。

② 根据重构的E-R图给出符合3NF的关系模式,并标出每个关系模式的主码和外码。

主码用下划线标注。

产品(产品号,产品名称,型号,装配图号)

部件(部件号,部件名称)

零件(零件号,零件名称,供应商号)。供应商号为外键

产品-部件(产品号,部件号,部件数量)。产品号、部件号都为外键

产品-零件(产品号,零件号,零件数量)。产品号、零件号都为外键

部件-零件(部件号,零件号,零件数量)。部件号、零件号都为外键

供应商(供应商号,供应商名,联系电话)

2. 已知某教务管理系统的各个关系模式如下(带下画线的属性是主码):

系(系号,系名)

学生(学号,姓名,性别,入学日期,正常毕业日期,所在系号)

课程(课程号,课程名,学分,开课系号,教师号)

选课(学号,课程号,成绩)

教师(教师号,姓名,职称,所在系号)

① 请根据给出的关系模式,画出该关系的E-R图,图中忽略实体集的属性,但如果实体集之间的联系有属性则需要给出联系的属性。

参:

② 假设该系统的业务需求发生变化,需要满足下列要求:为课程增加先修课程信息(一门课程可有多门先修课程);一门课程可由多名教师讲授,一名教师可以讲授多门课程。试根据上述需求修改关系模式,仅列出有改动的关系模式,并使每个关系模式满足3NF。

参:

系(系号,系名)

学生(学号,姓名,性别,入学日期,正常毕业日期,所在系号)

课程(课程号,课程名,学分,开课系号)

选课(学号,课程号,成绩)

教师(教师号,姓名,职称,所在系号)

教师授课(教师号,课程号)

先修课程(课程号,先修课程号)

3.现有关系模式:

教师授课(教师号,姓名,职称,课程号,课程名,学分,教科书名)

其函数依赖为:

{教师号 姓名,教师号 职称,课程号 课程名,课程号 学分,课程号 教科书名}

1指出这个关系模式的主码;

主码=(教师号,课程号)

② 这个关系模式是第几范式,为什么?

2NF,因为还存在传递函数依赖

③ 将其分解为满足3NF要求的关系模式(分解后的关系模式名自定)。

教师授课(教师号,课程号)

教师(教师号,职称)

课程(课程号,课程名,学分,教科书名)

4.关系模式R(A,B,C,D,E,F),函数依赖集F={AB→E,BC→D,BE→C,CD→B,CE→AF,CF→BD,C→A,D→EF}。

① 求出R的侯选码;

L类属性组:AB, BC, BE, CE, CF

LR类属性:A,B,C,D,E,F

侯选码:

(AB)+=ABECFD

(BC)+=ABCDEF

(BE)+=BECADF

(CE)+=CEAFBD

因此,AB, BC, BE, CE, CF都是关系R的候选码

② 求出F的最小函数依赖集。

改写F为{AB→E,BC→D,BE→C,CD→B,CE→A,CE→F,CF→B, CF→ D,C→A,D→E,D→F}                                                  

去掉左边重复的冗余属性:

1)考虑AB→E。去掉AB→E 之后的F中 (AB)F+=AB。由于(AB)F+中不包含E,因此没有冗余。

2)考虑BC→D。去掉BC→D之后的F中 (BC)F+=(BCA) F+=(BCAE) F+==(BCAEF) F+=(BCAEFD)。由于(BD)F+中包含D,因此它是冗余的。

3)考虑BE→C。去掉BE→C 之后的F中 (BE)F+=BE。由于(BE)F+中不包含C,因此没有冗余。

4)考虑CD→B。去掉CD→B之后的F中 (CD)F+=(CDAEF) F+=(CDAEFB) F+。由于(CD)F+中包含B,因此它是冗余的。

5)考虑CE→A。去掉CE→A之后的F中 (CE)F+=(CEAF) F+。由于(CE)F+中包含A,因此它是冗余的。

6)考虑CE→F。没有冗余

7)考虑CF→B。没有冗余

8)考虑CF→D。没有冗余

因此求出F的最小函数依赖集为

Fmin={AB→E,BE→C,CE→F,CF→B, CF→ D,C→A,D→E,D→F}

5.设有关系模式R(A,B,C,D,E,F,G),根据语义有如下函数依赖集F={A B, C D, C F, (A,D)  E, (E,F)  G

① 求关系模式R的主码;

L类属性:A, C

LR类属性:E, F, D

R类属性:B, G

(AC)+= (ACBDF)+= (ACBDFE)+= (ACBDFEG),它是候选码,也是主码

② 求AC的闭包。

(AC)+=(ACBDF) +=(ACBDFE)+=(ACBDFEG)

6.设关系模式R(S,T,C,D,G,H),函数依赖集F={S→T,C→H,G→S,CG→S},将R分解为:ρl={CG,TH,GCD,ST}和ρ2={STG,CDGH}。判断ρ1和ρ2是否无损连接。

1) 判断ρl

构造一个二维表如下:4个关系模式,对应4行。

初始表结果表
STCDGH
b11b12a3b14a5b16
b21a2b23b24b25a6
b31b32a3a4a5b36
a1a2b43b44b45b46
STCDGH
b11b12a3b14a5b16
b21a2b23b24b25a6
b31b32a3a4a5b36
a1a2b43b44b45b46
第1列第1行:A1={S}  U1={CG} 显然 A1不属于U1,因此这个单元格改为b11

第1列第2行:A1={S}  U2={TH} 显然 A1不属于U2,因此这个单元格改为b21

第2列第1行:A2={T}  U1={CG} 显然 A2不属于U1,因此这个单元格改为b12

第2列第2行:A2={T}  U2={TH} 显然 A2不属于U2,因此这个单元格还是a2

调整初始表

S→T:在S列中寻找符号相同的行,不需要修改表

C→H:在C列中,第1行和3行相同,对应的H列中第3行改成b16

结果表1

STCDGH
b11b12a3b14a5b16
b21a2b23b24b25a6
b31b32a3a4a5b16
a1a2b43b44b45b46
G→S:在G列中,第1行和3行相同,对应的S列中第3行改成b11

结果表2

STCDGH
b11b12a3b14a5b16
b21a2b23b24b25a6
b11b32a3a4a5b16
a1a2b43b44b45b46
CG→S:CG组合列的第1行与第3行相同,由于第1列第1、3行已经相同,不必修改。

至此没有一行出现a1,a2,…,a6,因此ρl不是无损连接。

2) 判断ρ2

初始表

STCDGH
a1a2b13b14a5b16
b11b22a3a4a5a6
C→H  不修改结果表

G→S:修改S列

结果表1

STCDGH
a1a2b13b14a5b16
a1b22a3a4a5a6
S→T:将b22改成a2

结果表2

STCDGH
a1a2b13b14a5b16
a1a2a3a4a5a6
至此出现a1,a2,a3,a4,a5,a6,因此ρ2是无损连接。

7.设关系模式R{A,B,C,D,E,F},函数依赖集F={D→F,C→D,CD→E,A→F}。

① 找出R的主码;

L类属性:A, C,

R类属性:E, F,

N类属性:B

LR类属性:D

分析候选码:

1)(A, B)+=(ABF) +,它不是候选码

2)(B,C)+=(BCDFE) +,它不是候选码

3)(A, B, C) +=(ABCDFE),它是候选码

因此主码是(A, B, C)

② 把R分解为BCNF,且具有无损连接性和函数依赖保持性。

设ρ=ABCDEF

1)D→F:

S1={DF}         F1={D→F }

S2={ABCDE}     F2={C→D,CD→E,A→F}={C→D,CD→E,A→D}

2)C→D

S3={CD}         F3={C→D }

S4={ABCE}      F4={CD→E,A→D}={ C→E,A→C }

3)C→E:

S5={CE}         F5={ C→E }

S6={ABC}       F6={ A→C }

R最终分解为:ρ={ R1(DF), R2(CD), R3(CE), R4(ABC) }

8.设有关系模式R(B,O,I,S),其上的函数依赖集:F={B→I,I→B,O→BI,S→BI}。

① 求F的最小函数依赖集;

F={B→I,I→B,O→B,O→I,S→B,S→I}

显然:

Fmin={B→I,I→B,O→I,S→I}

② 将R分解为满足3NF且具有无损连接并保持函数依赖。

候选码为(O, S)。因为:(OS)+=(OSBI)

1)B→I:

S1={ BI }    F1={B→I, I→B }

S2={ BOS }  F2={ O→B,S→B}。

2)O→B:

S3={ BO }   F3={O→B }

S4={ OS }   F4={S→O}。

故:R最终分解为ρ={ R1=(BI),R2=(BO),R3=(OS) } 

或:

有①知最小函数依赖集为Fm={B→I, I→B,O→I,S→I }故对Fm按具有相同左部的原则分为:R1=BI,R2=OI,R3=SI。所以ρ={ R1(BI), R2(OI), R3(SI) }。 

9.设有关系模式R(C,T,H,R,S,G),F={ CS→G,C→T,TH→R,HR→C,HS→R}。试根据算法将R分解为满足BCNF且具有无损连接。

1)CS→G: 

s1={CSG}        F1={ CS→G }

s2={ CTHRS }    F2={ C→T,TH→R,HR→C,HS→R }

2)C→T: 

S3={CT}         F3={ C→T }

S4={ CHRS }     F4={ CH→R,HR→C,HS→R }

3) CH→R:

S5={CHR}       F5={ CH→R }

S6={ CHS}       F6={ HS→CH }

R最终分解为:ρ={R1(CSG), R2(CT), R3(CHR), R4(CHS) }

10.已知R(B,O,I,S,Q),F={BO→I,I→S,S→Q},R的一个分解={R1(B,O,I),R2(I,S),R3(S,Q)}。判断是否为无损连接。

初始表

BOISQ
a1a2a3b14b15
b21b22a3a4b25
b31b32b33a4a5
1)BO→I:不修改结果表

结果表1

BOISQ
a1a2a3b14b15
b21b22a3a4b25
b31b32b33a4a5
2)I→S:修改结果表(见黄色字体标记)

结果表2

BOISQ
a1a2a3a4b15
b21b22a3a4b25
b31b32b33a4a5
3)S→Q:修改结果表(见黄色字体标记)

结果表2

BOISQ
a1a2a3a4a5
b21b22a3a4a5
b31b32b33a4a5
这时,第一行出现a1, a2, a3, a4, a5,因此是无损连接。

习题四

数据库myGrade用来管理学生选课成绩,其原始数据中包含下表所示的各个实体集及其数据项。各个实体集的数据项如下:

学生:学号、姓名、性别、出生日期;

课程:课程号、课程名称、课程性质、学分;

教师:教师号、姓名、性别、职称、联系电话;

专业:专业号、专业名称、专业负责人。

已知学生选课语义如下:

① 一个学生可以选修多门课程,同一门课程可以在多个学期选修,但同一学生同一学期同一门课程只有一个成绩;

② 一个学生可选修多个专业,一个专业包含多个学生;一个专业有多门必修课程;

③ 一个专业有多个选课指导教师,一个选课指导教师只能指导一个专业的学生,一个学生一个专业中只有一个指导教师;

④ 一个任课教师只属于一个专业,一个专业包含多个教师;

⑤ 一个教师可以讲授多门课程,一门课程可以由多个教师讲授。课程性质分为必修和选修两种类型。

学生选课成绩表

学号:S1                          

专业:Information system               

姓名:Nancy

指导教师:Kang

性别:Female

指导教师电话:669056

课程编号

课程名称课程性质任课教师教师职称开课学期学分成绩
C2Databasse必修Yang482010-1388
C4Compiler theory选修Kang482010-1366
C6Web programming必修Hong322010-1255
C5Data structure必修Zhang2010-1488
试根据上述学生选课规则完成下列各题:

1. 画出选课数据库myGrade的基本E-R图。

参:

根据销售管理数据库的业务规则和信息需求,该数据库包含下列实体集,各个实体集及其属性如图4-1所示。

a)学生实体集及其属性

b)课程实体集及其属性

c)教师实体集及其属性

d)专业实体集及其属性

数据库基本E-R图:

2.根据myGrade的基本E-R图设计数据库的逻辑模式。

① 根据学生和课程之间的m﹕n联系,得到“学生”、“课程”和“选课”3个关系,记为

关系1:学生(学号,姓名,性别,出生日期)。主码为“学号”。

关系2:课程(课程号,课程名称,课程性质,学分)。主码为“课程号”。

关系3:选课(学号,课程号,学期,成绩)。主码为“学号+课程号”;外码为“学号”和“课程号”,分别参照“学生关系”中的“学号”和“课程关系”中的“课程号”。

② 根据学生和专业之间的m﹕n联系,得到“专业”和“学生专业”两个关系,记为

关系4:专业(专业号,专业名称,专业负责人)。主码为“专业号”。

关系5:学生专业(学号,专业号,)。主码为“学号+专业号”;外码为“学号”和“专业号”,分别参照“学生”关系中的“学号”和“专业”关系”中的“专业号”。

③ 根据专业和教师之间的l﹕n联系,得到“教师”关系,记为

关系6:教师(教师号,姓名,性别,职称,联系电话,专业号)。主码为“教师号”;外码为“专业号”,参照“专业”关系中的“专业号”。

④ 教师和课程之间的m:n联系,得到“教师授课”关系,记为

关系7:教师授课(教师号,课程号)。主码为“教师号+课程号”。

⑤ 根据专业与课程之间的m﹕n联系,得到“专业必修课”关系,记为

关系8:专业必修课(专业号,课程号)。主码为“专业号+课程号”。

3.根据范式化理论,分别写出经过1NF、2NF、3NF和BCNF后,数据库myGrade的各个关系模式,并注明各个主键和外键。

1)1NF:

myGrade(学号,姓名,性别,出生日期,课程号,课程名称,课程性质,学分,学期,成绩,选课指导教师号,专业号,专业名称,专业负责人,授课教师号,教师姓名,教师性别,职称,联系电话)

主码:(学号,课程号,学期)

2)2NF:

主属性={学号,课程号,学期}

非主属性对主码的完全函数依赖= {

(学号,课程号,学期)成绩,

(学号,课程号,学期)选课指导教师号,

(学号,课程号,学期)专业号,

(学号,课程号,学期)专业名称,

(学号,课程号,学期)专业负责人,

(学号,课程号,学期)任课教师号,(假设同一门课程、同一学期只有一个教师授课)

(学号,课程号,学期)教师姓名,

(学号,课程号,学期)教师性别

(学号,课程号,学期)职称

(学号,课程号,学期)联系电话   }

非主属性对主码的部分函数依赖= {

(学号,课程号,学期)姓名,

(学号,课程号,学期)性别,

(学号,课程号,学期)出生日期,

(学号,课程号,学期)课程名称, 

(学号,课程号,学期)课程性质,

(学号,课程号,学期)学分  }

2NF之后,数据库myGrade分解为3个关系模式

学生(学号,姓名,性别,出生日期)

课程(课程号,课程名称,课程性质,学分)

选课1(学号,课程号,学期,成绩,选课指导教师号,专业号,专业名称,专业负责人,授课教师号,教师姓名,教师性别,职称,联系电话)

3)3NF

在选课1中存在的传递依赖:

由于:授课教师号→教师姓名,授课教师号→教师性别,授课教师号→职称,授课教师号→联系电话, 授课教师号→专业号,

而(学号,课程号,学期) 授课教师号

因此,(学号,课程号,学期)教师性别,(学号,课程号,学期)职称,(学号,课程号,学期)联系电话

又由于:选课指导教师号→专业号,专业号→专业名称,专业号→专业负责人,任课教师号→专业号

而(学号,课程号,学期) 选课指导教师号

因此,(学号,课程号,学期)专业号,(学号,课程号,学期)专业名称,(学号,课程号,学期)专业负责人

至此, 选课1分解成下列3个关系模式:

选课2(学号,课程号,学期,成绩,选课指导教师号,专业号,授课教师号)

教师(授课教师号,教师姓名,教师性别,职称,联系电话)

专业(专业号,专业名称,专业负责人)

4)BCNF

根据数据库myGrade语义,一个学生可选修多个专业,一个专业有多个选课指导教师,一个选课指导教师只能指导一个专业的学生,一个学生一个专业中只有一个指导教师,对下列关系模式进行模式分解:

学生专业(学号,专业号,指导教师号)

参考书中p77-p78页实例,将上述关系模式分解成下列2个关系模式:

学生与指导教师(学号,指导教师号)

指导教师与专业(指导教师号,专业号)

经过BCNF之后,myGrade数据库分解成下列6个关系模式:

关系1:学生(学号,姓名,性别,出生日期)

关系2:课程(课程号,课程名称,课程性质,学分)

关系3:专业(专业号,专业名称,专业负责人)

关系4:教师(教师号,教师姓名,教师性别,职称,联系电话)

关系5:选课2(学号,课程号,学期,成绩,指导教师号,授课教师号)

关系6:指导教师与专业(指导教师号,专业号)

4.使用T-SQL语句创建myGrade数据库及其各个数据表(关系模式)。

利用范式理论,到BCNF为止,数据库myGrade还没有完全设计完成,还可以利用4NF和5NF进行优化和模式分解。利用E-R图与范式理论设计数据库得到的结果不一定相同。在实际应用开发中,往往需要将两者结合起来使用。本实例数据库最终可以设计分解为以下7个关系模式:

关系1:学生(学号,姓名,性别,出生日期)=Students(Sno, Sname, Gender, BirthDate)

关系2:课程(课程号,课程名称,课程性质,学分)=Courses(Cno, Cname, Type, Credit)

关系3:专业(专业号,专业名称,专业负责人)=Departmentss(Dno, Department, Leader)

关系4:教师(教师号,姓名,性别,职称,联系电话,专业号)=(Tno, Tname, Gender, Title, 

Phone, Mno)

关系5:选课(学号,课程号,学期,成绩,指导教师号,授课教师号)=StudCourses(Sno, Cno, Period,

Grade, InstructorNo, Tno)

关系6:指导教师与专业(指导教师号,专业号)=InstructorMajors(InstructorNo, Dno)

关系7:专业必修课(专业号,课程号)=MajorCourses(Dno, Cno)

use master

if db_ID('myGrade') is not null  drop  database myGrade

create database myGrade

go

use myGrade

if OBJECT_ID('StudCourses') is not null  drop table StudCourses

if OBJECT_ID('InstructorDepartments') is not null  drop table InstructorDepartments

if OBJECT_ID('DepartmentCourses') is not null  drop table DepartmentCourses

if OBJECT_ID('Students') is not null  drop table Students

if OBJECT_ID('Courses') is not null  drop table Courses

if OBJECT_ID('Departments') is not null  drop table Departments

if OBJECT_ID('Teachers') is not null  drop table Teachers

go

create table Students(

Sno char(10) primary key,

Sname varchar(20) not null,

Gender char(2) check (gender in ('男','女')),

BirthDate datetime

)

go

create table Courses(

Cno char(8) primary key,

Cname varchar(50) not null,

type char(4) check(type in ('必修','选修')),

credit decimal(4,1) check(credit>0)

)

go

create table Teachers(

Tno char(8) primary key,

Tname varchar(50) not null,

Gender char(2) check (gender in ('男','女')),

Title varchar(20),

Phone varchar(20),

Dno char(8)

)

go

create table Departments(

Dno char(8) primary key,

Department varchar(40) not null,

Leaderno char(8)

)

go

create table StudCourses (

 Sno char(10),

 Cno char(8),

 Period varchar(20),

Grade int check(Grade>=0 and Grade<=100),

 InstructorNo char(8) references Teachers(Tno),

 Tno char(8) references Teachers(Tno),

 primary key (Sno,Cno,Period)

 )

go

create table InstructorDepartments (

InstructorNo char(8) references Teachers(Tno),

Dno char(8) references Departments(Dno),

primary key (InstructorNo,Dno)

)

go

create table DepartmentCourses (

Dno char(8) references Departments(Dno),

Cno char(8) references Courses(Cno),

primary key (Dno,Cno)

)

go

alter table Departments add foreign key (LeaderNo) references Teachers(Tno)

alter table Teachers add foreign key (Dno) references Departments(Dno)

go下载本文

显示全文
专题