资源描述
数据库原理及应用作业
第一章绪论
一、选择题
1、A 2、A 3、A 4、A 5、B 6、C 7、C 8、A
9、A 10、C
二、填空题
1、数据库就是长期储存在计算机内_有组织的__、_可共享__的数据集合。
2、数据管理技术已经历了人工管理阶段、_文件系统阶段_和_数据库系统阶段_三个发展阶段。
3、数据模型通常都是由_数据结构_、_数据操作_和_数据完整性约束_三个要素组成。
4、数据库系统的主要特点:_数据整体结构化_、数据冗余度小、具有较高的数据程序独立性、具有统一的数据控制功能等。
5、用二维表结构表示实体以及实体间联系的数据模型称为__关系__数据模型。
6、在数据库的三级模式体系结构中,外模式与模式之间的映象,实现了数据库的__ _____数据逻辑__独立性。
7、数据库系统是以_数据库或数据库中的数据___为中心的系统。
8、E-R图表示的概念模型比_DBMS支持的数据模型_更一般、更抽象、更接近现实世界。
9、外模式,亦称为子模式或用户模式,是_局部用户__能够看到和使用的局部数据的逻辑结构和特征的描述。
10、数据库系统的软件主要包括支持_DBMS_运行的操作系统以及__DBMS_本身。
三、简答题
1、简述计算机数据管理技术发展的三个阶段。
解:
数据管理技术已经历了人工管理、文件系统及数据库系统三个发展阶段。这三个阶段的特点及其比较如下表1.1所示。
表1.1 数据管理三个阶段的比较
比较项目
人工管理阶段
文件系统阶段
数据库系统阶段
应用背景
科学计算
科学计算、管理
大规模管理
背
硬件背景
无直接存取存储设备
磁盘、磁鼓
大容量磁盘
景
软件背景
没有操作系统
有文件系统
有数据库管理系统
处理方式
批处理
联机实时处理、批处理
联机实时处理、分布处理、批处理
数据的管理者
用户(程序员)
文件系统
数据库管理系统
数据面向的对象
某一应用程序
某一应用
现实世界
特
数据的共享程度
无共享,冗余度极大
共享性差,冗余度大
共享性高,冗余度小
数据的独立性
不独立,完全依赖于程序
独立性差
具有高度的物理独立性和一定的逻辑独立性
点
数据的结构化
无结构
记录内有结构、整体无结构
整体结构化,用数据模型描述
数据控制能力
应用程序自己控制
应用程序自己控制
由数据库管理系统提供数据安全性、完整性、并发控制和恢复能力
(1)人工管理阶段:20世纪50年代中期以前,计算机主要用于科学计算。硬件设施方面:外存只有纸带、卡片、磁带,没有磁盘等直接存取设备;软件方面:没有操作系统和管理数据的软件;数据处理方式是批处理。人工管理数据具有以下几个特点:1)数据不保存;2)应用程序管理数据;3)数据不共享;4)数据不具有独立性。
(2)文件系统阶段:20世纪50年代后期到60年代中期,这时计算机已大量用于数据的管理。硬件方面:有了磁盘、磁鼓等直接存取存储设备;软件方面:操作系统中已经有了专门的管理软件,一般称为文件系统;处理方式有批处理、联机实时处理。特点如下:1)数据长期保存;2)文件系统管理数据;3)数据共享性差,冗余度大;4)数据独立性差;
(3)数据库系统阶段:20世纪60年代后期以来,计算机用于管理的规模更为庞大,数据量急剧增长,硬件已有大容量磁盘,硬件价格下降;软件则价格上升,使得编制、维护软件及应用程序成本相对增加;处理方式上,联机实时处理要求更多,分布处理也在考虑之中。介于这种情况,文件系统的数据管理满足不了应用的需求,为解决共享数据的需求,随之从文件系统中分离出了专门软件系统——数据库管理系统,用来统一管理数据。
数据库系统阶段具有如下优于文件系统的特点:1)数据结构化;2)数据的共享性高,冗余度低,易扩充;3)数据独立性高;4)数据由DBMS统一管理和控制。
2、常用的三种数据模型的数据结构各有什么特点?
解:
常用的三种数据模型是层次模型、网状模型和关系模型。它们的数据结构及特点分别介绍如下:
1)层次模型的数据结构——树型结构
在数据库中,对满足以下两个条件的基本层次联系的集合称为层次模型。
(1)有且仅有一个节点无双亲,这个节点称为“根节点”。
(2)其他节点有且仅有一个双亲。
所谓基本层次联系是指两个记录类型以及它们之间的一对多的联系。
在层次模型中,每个结点表示一个记录类型,记录之间的联系用结点之间的连线表示,这种联系是父子之间的一对多的联系。这就使得数据库系统只能处理一对多的实体联系。
每个记录类型可包含若干个字段,这里,记录类型描述的是实体,字段描述的是实体的属性。各个记录类型及其字段都必须命名,并且名称要求唯一。每个记录类型可以定义一个排序字段,也称为码字段,如果定义该排序字段的值是唯一的,则它能唯一标识一个记录值。若用图来表示,层次模型是一棵倒立的树。节点层次(Level)从根开始定义,根为第一层,根的子女称为第二层,根称为其子女的双亲,同一双亲的子女称为兄弟。
2)网状模型的数据结构——网状结构图
在数据库中,把满足以下两个条件的基本层次联系集合称为网状模型:
(1)允许一个以上的结点无双亲;
(2)一个结点可以有多于一个的双亲。
网状模型是一种比层次模型更具有普遍性的结构,它去掉了层次模型的两个限制,允许多个结点没有双亲结点,允许结点有多个双亲结点,此外它还允许两个结点之间有多种联系。因此网状模型可以更直接地去描述现实世界。而层次模型实际上是网状模型的一个特例。与层次模型一样,网状模型中的每个结点表示一个记录类型,每个记录类型可包含若干个字段,结点间的连线表示记录类型之间的一对多的父子联系。
从定义可看出,层次模型中子女结点与双亲结点的联系是唯一的,而在网状模型中这种联系可以不唯一的。
3)关系模型——二维表
关系模型与层次模型和网状模型不同,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。每一行称为一个元组,每一列称为一个属性(或字段)。下面是关系模型中的涉及到的相关的术语:
关系:一个关系对应一张二维表,如一张教师登记表。
元组:二维表中的一行称为一个元组。
属性:二维表中的一列称为一个属性,对应每一个属性的名字称为属性名。
主码:如果二维表中的某个属性或是属性组可以唯一确定一个元组,则称为主码,也称为关系键。
域:属性的取值范围称为域,如人的年龄一般在1-120岁之间,大学生的年龄属性的域是14-38,性别的域是男和女等。
分量:元组中的一个属性值。例如,教师号对应的值001、002、003都是分量。
关系模式:表现为关系名和属性的集合,是对关系的具体描述。一般表示为:
关系名(属性1,属性2,…,属性N)。如教师关系模式为:教师(教师号,姓名,年龄,职称)
在关系模型中,实体以及实体间的联系都是用关系来表示。
关系模型要求关系必须是规范化的,即要求关系必须满足一定规范条件,这些规范条件中最基本的一条就是,关系的每一个分量必须是一个不可分的数据项,也就是说,不允许表中还有子表或子列。
4、试述数据模型的概念、数据模型的作用和数据模型的三要素。
解:
1)数据模型的概念:数据模型是模型中的一种,是现实世界数据特征的抽象,它描述了系统的三个方面:静态特性、动态特性和完整性约束条件。
2)数据模型的作用:数据模型应满足三方面的要求:一是能比较真实地模拟现实世界;二是容易为人所理解;三是便于在计算机上实现。
不同的数据模型实际上是提供给我们模型化数据和信息的不同工具。根据模型应用的不同目的,可以将这些模型粗分为两类,他们分属于两个不同的层次。
第一类模型是概念模型,也称信息模型,它是按用户的观点来对数据和信息建模的,主要用于数据库设计。
另一类模型是数据模型,主要包括层次模型、网状模型、关系模型、面向对象模型等,它是按计算机系统对数据建模,主要用于在DBMS中对数据的存储、操纵、控制等的实现。
为了把现实世界中的具体事物抽象、组织为某一DBMS支持的数据模型,人们常常首先将现实世界抽象为信息世界,然后将信息世界转换(或数据化)为机器世界。也就是说,首先把现实世界中的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统,不是某一个DBMS支持的数据模型,而是概念级的模型;然后再把概念模型转换为计算机上某一DBMS支持的数据模型。
数据模型是数据库系统的核心和基础,各种机器上实现的DBMS软件都是基于某种数据模型的。可以说没有数据模型就没有数据库及其系统,其重要性不言而喻。
3)数据模型的三要素:
数据模型一般由数据结构、数据操作和数据完整性约束三部分组成(俗称三要素),是严格定义的一组概念的集合。
(1)数据结构:数据结构用于描述系统的静态特性,是所研究的对象类型的集合。数据模型按其数据结构分为层次模型、网状模型、关系模型和面向对象模型。其所研究的对象是数据库的组成部分,它们包括两类,一类是与数据类型、内容、性质有关的对象,例如网状模型中的数据项、记录,关系模型中的域、属性、实体关系等;一类是与数据之间联系有关的对象,例如网状模型中的系型、关系模型中反映联系的关系等。
数据模型的三要素示意图
(2)数据操作:数据操作用于描述系统的动态特性,是指对数据库中各种对象及对象的实例允许执行的操作的集合,包括对象的创建、修改和删除,对对象实例的检索和更新(例如插入、删除和修改)两大类操作及其它有关的操作等。数据模型必须定义这些操作的确切含义、操作符号、操作规则(如优先级)以及实现操作的语言等。
(3)数据完整性约束:数据的完整性约束是一组完整性约束规则的集合。完整性约束规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。
数据模型的三要素紧密依赖相互作用形成一个整体(如图示意),如此才能全面正确地抽象、描述来反映现实世界数据的特征。
第二章关系数据库
一、单项选择题
1、A 2、C 3、B 4、C 5、A 6、B 7、B 8、B
9、C 10、C
二、填 空
1、关系中主码的取值必须惟一且非空,这条规则是_实体_完整性规则。
2、关系代数中专门的关系运算包括:选择、投影、连接和除法,主要实现_查询_类操作。
3、关系数据库的关系演算语言是以_谓词演算_为基础的DML语言。
4、关系数据库中,关系称为_表__,元组亦称为__行__,属性亦称为_列__。
5、数据库描述语言的作用是_定义数据库_。
6、一个关系模式可以形式化地表示为_R(U,D,dom,F)_。
7、关系数据库操作的特点是__一次一集合_式操作。
8.数据库的所有关系模式的集合构成_关系数据库模型_,所有的关系集合构成_关系数据库_。
9、在关系数据模型中,两个关系R1与R2之间存在1:m的联系,可以通过在一个关系R2中的_外键或外码或外部关键字_在相关联的另一个关系R1中检索相对应的记录。
10、将两个关系中满足一定条件的元组连接到一起构成新表的操作称为_θ-连接_操作。
三、简单、计算或查询
1、试述关系模型的三要素内容。
解:
1)关系模型的数据结构——关系
关系模型的数据结构:非常单一,在用户看来,关系模型中数据的逻辑结构是一张二维表。但关系模型的这种简单的数据结构能够表达丰富的语义,描述出现实世界的实体以及实体间的各种联系。
2)关系模型的关系操作:关系模型给出了关系操作的能力,它利用基于数学的方法来表达关系操作,关系模型给出的关系操作往往不针对具体的RDBMS语言来表述。
关系模型中常用的关系操作包括:选择(select)、投影(project)、连接(join)、除(divide)、并(union)、交(intersection)、差(difference)等查询(query)操作和添加(insert)、删除(delete)、修改(update)等更新操作两大部分。查询的表达能力是其中最主要的部分。
早期的关系操作能力通常用代数方式或逻辑方式来表示,分别称为关系代数和关系演算。关系代数是用对关系的运算(即元组的集合运行)来表达查询要求的方式。关系演算是用谓词来表达查询要求的方式。关系演算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。关系代数、元组关系演算和域关系演算三种语言在表达功能上是等价的。
另外还有一种介于关系代数和关系演算之间的语言SQL(Structured Query Language)。SQL不但具有丰富的查询功能,而且具有数据定义、数据操纵和数据控制功能,是集查询、DDL、DML、DCL于一体的关系数据语言。它充分体现了关系数据语言的特点和优点,是关系数据库的国际标准语言。因此,关系数据语言可以分成三类:
(1) 关系代数:用对关系的集合运算表达查询要求,例如 ISBL。
(2) 关系演算:用谓词表达查询要求,可分为两类:①元组关系演算:谓词变元的基本对象是元组变量,例如 APLHA、QUEL;②域关系演算:谓词变元的基本对象是域变量,例如QBE。
(3) 关系数据语言,例如SQL。
这些关系数据语言的共同特点是:语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够嵌入到高级语言中使用。
3)关系模型的三类完整性约束:关系模型提供了丰富的完整性控制机制,允许定义三类完整性:实体完整性、参照完整性和用户自定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,应该由关系系统自动支持。用户自定义的完整性是应用领域特殊要求而需要遵循的约束条件,体现了具体领域中的语义约束。
3、定义并理解下列概念,说明它们间的联系与区别:
(1)域、笛卡尔积、关系、元组、属性
(2)主码、候选码、外码
(3)关系模式、关系、关系数据库
解:
(1)域、笛卡尔积、关系、元组、属性
1)域:域是一组具有相同数据类型的值的集合。
2)笛卡尔积:给定一组域D、D、…、D(这些域中可以包含相同的元素,即可以完全不同,也可以部分或全部相同), D、D、…、D的笛卡尔积为
D×D×…×D={(d,d,…,d)|d∈D,i=1,2,…,n}
3)关系(Relation):D×D×…×D的任一子集叫作在域D,D,…D上的关系,用 R(D,D,…D)表示。
关系是笛卡尔积的子集,反过来说,看到某关系,也要看到该关系背后存在的其所属于的笛卡尔积,关系内容无论如何变都变化不出其所属于的笛卡尔积的,这是笛卡尔积概念的意义所在。
4)表的每行对应一个元组。
5)表的每列起一个唯一的名字,称为属性。
联系:
关系是笛卡尔积的子集,所以关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个唯一的名字,称为属性。
(2)主码、候选码、外码
1)候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(Candidate key),关系至少含有一个候选码。
2)主码:一个关系至少有一个候选码,则选定其中一个为主控使用者,称为主码(Primary key)。
3)外码:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码(Foreign key)。
联系:
关系的候选码中选定一个称为主码,主码即是候选码;而外码是与另一关系的主码相对应的属性组。
(3)关系模式、关系、关系数据库
关系数据库中,关系模式是型,关系是值。关系模式是对关系的描述,一个关系模式应当是一个5元组。
1)关系模式:关系的描述称为关系模式(Relation Schema)。一个关系模式应当是一个五元组。它可以形式化地表示为:R(U, D, dom, F)。其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域的集合,dom为属性向域的映象集合,F为属性间数据的依赖关系集合。
2)关系:关系实际上就是关系模式在某一时刻的状态或内容。也就是说,关系模式是型,关系是它的值。
3)关系数据库:在关系模型中,实体以及实体间的联系都是用关系来表示。在一个给定的现实世界领域中,所有实体及实体之间的联系的关系的集合构成一个关系数据库。
联系:
关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。但在实际使用中,常常把关系模式和关系统称为关系,读者可以从上下文中加以区别。
关系的集合构成一个关系数据库,关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据库的描述,是关系模式的集合。关系数据库的值也称为关系数据库,是关系的集合。关系数据库模式与关系数据库通常统称为关系数据库。
10、设有学生-课程关系数据库,它由三个关系组成,它们的模式是:学生S(学号SNO,姓名SN,所在系DEPT,年龄AGE)、课程C(课程号CNO,课程名CN,先修课号CPNO)、SC(学号SNO,课程号CNO,成绩SCORE)。
请用关系代数与ALPHA语言分别写出下列查询:
(1) 检索学生的所有情况。
(2) 检索学生年龄大于等于20岁的学生姓名。
(3) 检索先修课号为C2的课程号。
(4) 检索课程号C1的成绩为A的所有学生姓名。
(5) 检索S1修读的所有课程名及先修课号。
(6) 检索年龄为23岁的学生所修读的课程名。
(7) 检索至少修读了S5修读的一门课的学生的姓名。
(8) 检索修读了S4所修读的所有课程的学生的姓名。
(9) 检索选修所有课程的学生的学号。
(10) 检索不选修任何课程的学生的学号。
(11) 在关系C中增添一门新课(新课信息自定)
(12) 学号为S17的学生因故退学请在S与SC中将其除名。
(13) 将关系S中学生S6的年龄改为22岁(只需ALPHA操作)。
(14) 将关系S中学生的年龄均增加1岁(只需ALPHA操作)。
解:
写出关系代数表达方式:
(1) 检索学生的所有情况。
S 或 SSCC
(2) 检索学生年龄大于等于20岁的学生姓名。
πSN(σAGE>=20(S))
(3) 检索先修课号为C2的课程号。
πCNO(σCPNO=’C2’(C))
(4) 检索课程号C1的成绩为A的所有学生姓名。
πSN(σCNO=’C1’∧SCORE=’A’(SCS))
(5) 检索S1修读的所有课程名及先修课号。
πCN,CPNO (σSNO=’S1’(SCC))
(6) 检索年龄为23岁的学生所修读的课程名。
πCN (σAGE=23(SSCC))
(7) 检索至少修读了S5修读的一门课的学生的姓名。
πSN (SSCπCNO (σSNO=’S5’(SC)))
(8) 检索修读了S4所修读的所有课程的学生的姓名。
πSN (S(πSNO,CNO (SC)÷πCNO (σSNO=’S4’(SC))))
(9) 检索选修所有课程的学生的学号。
πSNO,CNO (SC)÷πCNO (C)
(10) 检索不选修任何课程的学生的学号。
πSNO (S) -πSNO (SC)
写出SQL 命令(非本章要求):
(1) 检索学生的所有情况。
GET W(S)
GET W(S,SC,C): S.SNO=SC.SNO ∧ SC.CNO =C.CNO
SELECT *
FROM S
(2) 检索学生年龄大于等于20岁的学生姓名。
GET W(S.SN): (S.AGE>=20)
SELECT SN
FROM S
WHERE S.AGE>=20
(3) 检索先修课号为C2的课程号。
GET W(C.CNO): (C.CPNO=’C2’)
SELECT CNO
FROM C
WHERE C.CPNO=’C2’
(4) 检索课程号C1的成绩为A的所有学生姓名。
RANGE SC SCX
GET W(S.SN): SCX (SCX.SNO=S.SNO ∧ SCX.CNO=’C1’ ∧ SCX.SCORE=’A’)
SELECT SN
FROM S,SC
WHERE S.SNO=SC.SNO AND SC.CNO=’C1’ AND SC.SCORE=’A’
(5) 检索S1修读的所有课程名及先修课号。
RANGE SC SCX
GET W(C.CN,C.CPNO): SCX (SCX.CNO=C.CNO ∧ SCX.SNO=’S1’)
SELECT C.CN,C.CPNO
FROM C,SC
WHERE C.CNO=SC.CNO AND SC.SNO=’S1’
(6) 检索年龄为23岁的学生所修读的课程名。
RANGE S SX
SC SCX
GET W(C.CN): SXSCX (SX.SNO=SCX.SNO ∧ SCX.CNO=C.CNO∧ SX.AGE=23)
SELECT C.CN
FROM S,SC,C
WHERE S.SNO=SC.SNO AND SC.CNO=C.CNO AND S.AGE=23
(7) 检索至少修读了S5修读的一门课的学生的姓名。
RANGE SC SCX
SC SCY
GET W(S.SN): SCXSCY (SCX.SNO=’S5’ ∧ SCY.SNO=S.SNO∧ SCY.CNO=SCX.CNO)
(8) 检索修读了S4所修读的所有课程的学生的姓名。
RANGE C CX
SC SCX
SC SCY
GET W(S.SNO):CX(SCX (SCX.SNO=’S4’ ∧ CX.CNO=SCX.CNO)->SCY (SCY.SNO=S.SNO ∧ CX.CNO=SCY.CNO))
(9) 检索选修所有课程的学生的学号。
RANGE C CX
SC SCX
GET W(S.SNO):CXSCX (SCX.CNO=CX.CNO ∧ S.SNO=SCX.SNO)
(10) 检索不选修任何课程的学生的学号。
RANGE SC SCX
GET W(S.SNO):SCX(﹁(SCX.SNO=SNO))
即:
RANGE SC SCX
GET W(S.SNO):SCX(SCX.SNO≠SNO)
(11) 在关系C中增添一门新课
MOVE 'C9' TO W.CNO
MOVE '计算机系统结构' TO W.CN
MOVE 'C4' TO W.CPNO
PUT W(C)
(12) 学号为S17的学生因故退学请在S与SC中将其除名。
Hold W(SC):SNO=’S17’
DELETE W
Hold W(S):SNO=’S17’
DELETE W
(13) 将关系S中学生S6的年龄改为22岁(只需ALPHA操作)。
Hold W(SNO,AGE):SNO=’S6’
MOVE 22 TO W.AGE
UPDATE W
(14) 将关系S中学生的年龄均增加1岁(只需ALPHA操作)。
Hold W(SNO,AGE)
MOVE W.AGE+1 TO W.AGE
UPDATE W
第3章 关系数据库标准语言SQL
一、选择题
1、C 2、B 3、D 4、C 5、A 6、A 7、D 8、C
9、C 10、D
二、填空题
1、SQL操作命令CREATE、DROP、ALTER主要完成的是数据的_定义_功能。
2、__SQL___为关系数据库语言国际标准语言。
3、SQL中文含义是_结构化查询语言_,它集查询、操纵、定义和控制等多种功能。
4、视图是从_基本表或视图_导出的表。它相当于三级结构中的外模式。
5、视图是虚表,它一经定义就可以和基本表一样被查询,但_更新__操作将有一定限制。
6、SQL的数据更新功能主要包括__INSERT__、__UPDATE_和_DELETE_三个语句。
7、在字符匹配查询中,通配符“%”代表_任意多个字符_,“_”代表__任意单个字符_。
8、SQL语句具有__交互式__和__嵌入式__两种使用方式。
9、SQL语言中,实现数据检索的语句是_SELECT_。
10、在SQL中如果希望将查询结果排序,应在Select语句中使用_ORDER BY_子句。
三、简答与SQL操作表达
5、设有四个关系(只示意性给出一条记录):
S SPJ
SNO SNAME ADDRESS TEL SNO PNO JNO QTY
Sl SN1 上海南京路 68564345 S1 Pl J1 200
P J
PNO PNAME SPEC CITY COLOR JNO JNAME LEADER BG
P1 PNl 8X8 无锡 红 J1 JN1 王总 10
S(SNO,SNAME, ADDRESS,TEL)其中,SNO:供应商代码 SNAME:姓名 ADDRESS:地址 TEL:电话;
J(JNO,JNAME,LEADER,BG)其中,JNO:工程代码 JNAME:工程名 LEADER:负责人 BG:预算;
P(PNO,PNAME,SPEC,CITY,COLOR)其中,PNO:零件代码 PNAME:零件名 SPEC:规格 CITY:产地 COLOR:颜色;
SPJ(SNO,JNO,PNO,QTY)其中,SNO:供应商代码 JNO:工程代码 PNO:零件代码 QTY:数量;
(1)为每个关系建立相应的表结构,添加若干记录。
(2)完成如下查询:
1)找出所有供应商的姓名和地址、电话。
2)找出所有零件的名称、规格、产地。
3)找出使用供应商代码为S1供应零件的工程号。
4)找出工程代码为J2的工程使用的所有零件名称、数量。
5)找出产地为上海的所有零件代码和规格。
6)找出使用上海产的零件的工程名称。
7)找出没有使用天津产的零件的工程号。
8)求没有使用天津产的红色零件的工程号。
9)取出为工程J1和J2提供零件的供应商代号。
10)找出使用供应商S2供应的全部零件的工程号。
(3)完成如下更新操作:
1)把全部红色零件的颜色改成蓝色;
2)由S10供给J4的零件P6改为由S8供应,请作必要的修改。
3)从供应商关系中删除S2的记录,并从供应零件关系中删除相应的记录。
4)请将 (S2, J8, P4, 200) 插入供应零件关系。
5)将工程J2的预算改为40万元。
6)删除工程J8订购的S4的零件。
(4)请将“零件”和“供应零件”关系的连接定义一个视图,完成下列查询:
1)找出工程代码为J2的工程使用的所有零件名称、数量。
2)找出使用上海产的零件的工程号。
解:
(1)
CREATE TABLE S(SNO VARCHAR(5) NOT NULL PRIMARY KEY,
SNAME VARCHAR(20) NOT NULL,
ADDRESS NVARCHAR(30),
TEL VARCHAR(20))
INSERT INTO S VALUES(‘S1’,’SN1’,’ 上海南京路’,’68564345’)
……
CREATE TABLE P(PNO VARCHAR(5) NOT NULL PRIMARY KEY,
PNAME VARCHAR(20) NOT NULL,
SPEC VARCHAR(20),
CITY NVARCHAR(20);
COLOR NVARCHAR(2))
INSERT INTO P VALUES(‘P1’,’PN1’,’8x8’,’无锡’,’红’)
……
CREATE TABLE J(JNO VARCHAR(5) NOT NULL PRIMARY KEY,
JNAME VARCHAR(20) NOT NULL,
LEADER VARCHAR(10),
BG INT)
INSERT INTO J VALUES(‘J1’,’JN1’,’王总’,10)
……
CREATE TABLE SPJ(SNO VARCHAR(5) NOT NULL,
PNO VARCHAR(5) NOT NULL,
JNO VARCHAR(5) NOT NULL,
QTY INT,
CONSTRAINT PR_SPJ PRIMARY KEY(SNO,SPNO,JNO))
INSERT INTO SPJ VALUES(‘S1’,’P1’,’J1’,200)
……
(2)
1)找出所有供应商的姓名和地址、电话。
SELECT SNAME,ADDRESS,TEL FROM S
2)找出所有零件的名称、规格、产地。
SELECT ONAME,SPEC,CITY FROM P
3)找出使用供应商代码为S1供应零件的工程号。
SELECT DISTINCT JNO FROM SPJ WHERE SNO=’S1’
4)找出工程代码为J2的工程使用的所有零件名称、数量。
SELECT PNAME,QTY
FROM SPJ,P
WHERE SPJ.PNO=P.PNO AND JNO=’J2’
5)找出产地为上海的所有零件代码和规格。
SELECT PNO,SPEC FROM P WHERE CITY=’上海’
6)找出使用上海产的零件的工程名称。
SELECT JNO FROM FROM P,SPJ,J
WHERE P.CITY=’上海’AND P.PNO=SPJ.PNO AND SPJ.JNO=J.JNO
7)找出没有使用天津产的零件的工程号。
SELECT JNO
FROM J
WHERE JNO NOT IN
(SELECT JNO
FROM SPJ,P
WHERE SPJ.PNO=P.PNO AND P.CITY=’天津’)
8)求没有使用天津产的红色零件的工程号。
SELECT JNO
FROM J
WHERE JNO NOT IN
(SELECT JNO
FROM SPJ,P
WHERE SPJ.PNO=P.PNO AND P.CITY=’天津’ AND P.COLOR=’红’)
9)取出为工程J1和J2提供零件的供应商代号。
SELECT SNO
FROM SPJ
WHERE JNO=’J1’ OR JNO=’J2’
10)找出使用供应商S2供应的全部零件的工程号。
SELECT JNO
FROM J
WHERE NOT EXISTS
(SELECT *
FROM SPJ X
WHERE X.SNO=’S1’ AND NOT EXISTS
(SELECT *
FROM SPJ Y
WHERE Y.JNO=J.JNO AND Y.PNO=X.PNO))
(3)
1)把全部红色零件的颜色改成蓝色;
UPDATE P SET COLOR=’蓝’ WHERE COLOR=’红’
2)由S10供给J4的零件P6改为由S8供应,请作必要的修改。
UPDATE SPJ SET SNO=’S8’ WHERE SNO=’S10’ AND PNO=’P6’ AND JNO=’J4’
若不能直接修改主码,则可如下操作:先添加新记录,再删除老记录
Insert into spj
select ’S8’,jno,pno,qty
from spj
where SNO=’S10’ AND PNO=’P6’ AND JNO=’J4’
delete from spj where SNO=’S10’ AND PNO=’P6’ AND JNO=’J4’
3)从供应商关系中删除S2的记录,并从供应零件关系中删除相应的记录。
Delete from spj where sno=’s2’
Delete from s where sno=’s2’
4)请将 (S2, J8, P4, 200) 插入供应零件关系。
Insert into spj values(’S2’,’J8’,’P4’,200)
5)将工程J2的预算改为40万元。
Update J SET BG=40 WHERE JNO=’J2’
6)删除工程J8订购的S4的零件。题意为:删除工程J8订购的S4提供零件的供应关系记录。
DELETE FROM SPJ WHERE JNO=’J8’ AND SNO=’S4’
(4)
CREATE VIEW P_SPJ_VIEW AS SELECT P.*,SPJ.SNO,SPJ.JNO,QTY
FROM P,SPJ
WHERE P.PNO=SPJ.PNO
1)找出工程代码为J2的工程使用的所有零件名称、数量。
SELECT PNAME,QTY FROM P_SPJ_VIEW WHERE JNO=’J2’
2)找出使用上海产的零件的工程号。
SELECT JNO
FROM P_SPJ_VIEW
WHERE CITY=’上海’
第4章 关系数据库设计理论
一、选择题
1、C 2、B 3、C 4、C 5、A 6、B 7、A
8、B 9、D 10、B
二、填空题
1、数据依赖主要包括_函数_依赖、_多值_依赖和连接依赖。
2、一个不好的关系模式会存在_插入异常_、_删除异常_和__修改复杂_等弊端。
3、设X→Y为R上的一个函数依赖,若_对任意X的真子集X’,均无X’→Y 存在__,则称Y完全函数依赖于X。
4、设关系模式R上有函数依赖X→Y和Y→Z成立,若_Y不包含于X_且_Y→X不成立_,则称Z传递函数依赖于X。
5、设关系模式R的属性集为U,K为U的子集,若_K→U为完全函数依赖_,则称K为R的候选键。
6、包含R中全部属性的候选键称_主属性_。不在任何候选键中的属性称__非主属性_。
7、Armstrong公理系统是_有效__的和_完备__的。
8、第三范式是基于_函数_依赖的范式,第四范
展开阅读全文