还剩48页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《数据库原理及应用》复习重点第一章数据库系统基本概念要求、目标了解和掌握数据管理技术的发展阶段,数据描述的术语,数据抽象的四个级别,数据库管理系统的功能,数据库系统的组成
1、数据管理技术的发展1.分为四个阶段人工管理阶段、文件系统阶段、数据库阶段和高级数据库阶段2.数据库阶段数据管理的特点1)采用数据模型表示复杂的数据结构2)有较高的数据独立性3)数据库系统为用户提供了方便的用户接口4)提供四方面的数据控制功能数据库的恢复、数据库的并发控制、数据的完整性、数据安全性5)增加了系统的灵活性3.数据库(DB)是长期存储在计算机内、有组织的、统一管理的相关数据的集合4.数据库管理系统(DBMS)是位于用户与操作系统之间的一层数据管理软件,它为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更新及各种数据控制5.数据库系统(DBS)是实现有组织地、动态地存储大量关联数据、方便多用户访问的计算机硬件、软件和数据资源组成的系统,即它是采用数据库技术的计算机系统
2、数据描述1.分为三个阶段概念设计、逻辑设计和物理设计2.概念设计中的术语1)实体客观存在,可以相互区别的事物称为实体2)实体集性质相同的同类实体的集合3)属性实体有很多特性,每一个特性称为属性4)实体标识符(关键码或键)能惟一标识实体的属性或属性集以上概念均有类型和值之分3.逻辑设计中的术语1)字段(数据项)标记实体属性的命名单位称为字段或数据项2)记录字段的有序集合3)文件同一类记录的集合4)关键码能惟一标识文件中每个记录的字段或字段集以上概念均有类型和值之分4.概念设计和逻辑设计中术语的对应关系概念设计逻辑设计实体—记录属性—字段(数据项)实体集—文件实体标识符—关键码5.实体之间联系的元数与一个联系有关的实体集个数常用二元联系二元联系的类型有三种一对一联系、一对多联系、多对多联系6.一对一联系如果实体集E1中每个实体至多和实体集E2中的一个实体有联系,反之亦然,那么实体集E1和E2的联系称为“一对一联系”,记为“11”7.一对多联系如果实体集E1中每个实体与实体集E2中任意个(零个或多个)实体间有联系,而E2中每个实体至多和E1中一个实体有联系,那么称E1对E2的联系是“一对多联系”,记为“1N”8.多对多联系如果实体集E1中每个实体可以与实体集E2中任意个(零个或多个)实体间有联系,反之亦然,那么称E1和E2的联系是“多对多联系”,记为“M N”
3、数据抽象的级别1.数据模型描述数据库的结构和定义,对现实世界的数据进行抽象2.从现实世界的信息到数据库存储的数据以及用户使用的数据是一个逐步抽象过程,根据数据抽象的级别定义了四种模型概念模型、逻辑模型、外部模型和内部模型3.概念模型表达用户需求观点的数据全局逻辑结构的模型4.逻辑模型表达计算机实现观点的DB全局逻辑结构的模型5.外部模型表达用户使用观点的DB局部逻辑结构的模型6.内部模型表达DB物理结构的模型7.数据抽象的过程、即数据库设计的过程具体步骤1)根据用户需求,设计数据库的概念模型;2)根据转换规则,把概念模型转换成数据库的逻辑模型;3)根据用户的业务特点,设计不同的外部模型,给程序员使用;4)数据库实现时,要根据逻辑模型设计其内部模型通常分为概念设计、逻辑设计(2和3步)和物理设计三个阶段8.常用的概念模型是实体联系(ER)模型,ER模型主要用ER图来表示9.逻辑模型的分类层次模型、网状模型、关系模型等10.层次模型用树型(层次)结构表示实体及实体间联系的数据模型11.1969年,美国IBM公司的IMS系统是典型的层次模型系统12.网状模型用有向图结构表示实体及实体间联系的数据模型13.1969年,CODASYL组织提出DBTG报告中的数据模型是网状模型的主要代表14.关系模型是由若干个关系模式组成的集合关系模式即记录类型,它的实例称为关系,每个关系实际上是一张二维表格15.16.外部模型中的模式称为视图17.三级模式从用户(或应用程序)到数据库之间,DB的数据结构描述有三个层次1)外模式用户与数据库系统的接口,是用户用到的那部分数据的描述外模式由若干个记录类型组成2)逻辑模式是数据库中全部数据的整体逻辑结构的描述3)内模式是数据库在物理存储方面的描述注意外模式是逻辑模式的子集18.两级映像1)外模式/逻辑模式映像存在于外模式和逻辑模式之间,用于定义外模式和逻辑模式之间的对应性2)逻辑模式/内模式映像存在于逻辑模式和内模式之间,用于定义逻辑模式和内模式之间的对应性19.数据库系统的三级模式、两级映像结构使数据库系统达到了高度的数据独立性20.数据独立性是指应用程序与数据库的数据结构之间相互独立,在修改数据结构时,尽可能不修改应用程序分为逻辑数据独立性和物理数据独立性21.逻辑数据独立性如果数据库的逻辑模式要修改,那么只要对外模式/逻辑模式映像作相应的修改,可以使外模式和应用程序尽可能保持不变这样就认为数据库达到了逻辑数据独立性22.物理数据独立性如果数据库的内模式要修改,即数据库的物理结构有所变化,那么只要对逻辑模式/内模式映像作相应的修改,可以使逻辑模式尽可能保持不变也就是对内模式的修改尽量不影响逻辑模式,当然对外模式和应用程序的影响更小,这样就认为数据库达到了物理数据独立性
4、数据库管理系统(DBMS)1.DBMS的主要功能数据库的定义功能(DBMS提供DDL定义数据库的三级模式、两级映像等)、数据库的操纵功能(DBMS提供DML实现对数据的操作,基本的数据操作有检索和更新两类)、数据库的保护功能、数据库的维护功能、数据字典
5、数据库系统(DBS)1.DBS的组成是数据库、硬件、软件和数据库管理员的集合体2.软件包括DBMS、OS、各种主语言和应用开发支撑软件等程序其中,DBMS是DBS的核心软件,要在OS支持下才能工作3.数据库管理员(DBA)是控制数据整体结构的一组人员,负责DBS的正常运行,承担创建、监控和维护数据库结构的责任第一章复习题
一、单项选择题1.在数据库系统中,当数据库的内模式发生改变时,应用程序也可以不变这是(A)A)物理数据独立性B)逻辑数据独立性C)位置数据独立性D)存储数据独立性2.在下面列出的数据模型中,哪一个是概念数据模型(D)A)关系模型B层次模型C网状模型D实体-联系模型
2.下面列出的数据管理技术发展阶段中,哪个些阶段数据不能保存在计算机中?(A)Ⅰ.人工管理阶段Ⅱ.文件系统阶段Ⅲ.数据库阶段A)只有ⅠB只有ⅡCⅠ和ⅡDⅡ和Ⅲ
3.用二维表结构表示实体以及实体间联系的数据模型称为(C)A)网状模型B层次模型C关系模型D实体-联系模型
4.下面列出的条目中,哪些是数据库技术的主要特点(A)Ⅰ.数据共享度高Ⅱ.数据的冗余小Ⅲ.较高的数据独立性Ⅳ.程序的标准化A)Ⅰ、Ⅱ和ⅢBⅠ和ⅡCⅠ、Ⅱ和ⅣD都是
5.数据库管理系统DBMS中用来定义逻辑模式、内模式和外模式的语言是(C)A)DMLBCCDDLDBasic
6.层次模型的典型代表是(A)数据库管理系统A)IMSBIBMCDBTGDATM
7.负责数据库系统的正常运行,承担创建、监控和维护数据库结构责任的是(C)A)应用程序员B终端用户C数据库管理员D数据库管理系统的软件设计员
8.在以下各条叙述中,正确的叙述有几条(B)1数据库避免了一切数据重复2数据库减少了数据冗余3数据库中,如果逻辑模式改变,则需将与其有关的外模式做相应改变,否则应用程序需改写4数据库中的内模式如有改变,逻辑模式可以不变A)1B)2C)3D)
49.在三级模式之间引入两级映像,其主要功能之一是(A)A)使数据与程序具有较高的独立性B)使系统具有较高的通道能力C)保持数据与程序的一致性D)提高存储空间的利用率
10.视图对应于数据库系统三级模式结构中的(A)A)外模式B)逻辑模式C)内模式D)都不对应
11.对数据库中数据可以进行查询、插入、删除、修改,这是因为数据库管理系统提供了(B)A)数据库定义功能B)数据库操纵功能C)数据库维护功能D)数据库控制功能
12.A)层次模型B)网状模型C)关系模型D)实体联系模型
13.具有数据冗余度小、数据共享、以及较高数据独立性等特征的系统是(B)A)文件系统B)数据库系统C)管理系统D)高级程序
14.在概念设计中的事物称为(A)A)实体B)记录C)对象D)结点
15.层次模型表达实体及实体之间联系用的数据结构是(D)A)网状B)表C)有向图D)树型
16.DB是(A)A)数据库B)数据库管理系统C)数据处理系统D)数据库系统
17.DBMS是(B)A)数据库B)数据库管理系统C)数据处理系统D)数据库系统
18.已知在一个工厂中有多个车间,每一个车间有多名职工,工厂的产品要经过多个车间的多道工序加工具体来说,一个产品要经过多个工人加工,一位工人要加工多个产品问工厂与车间之间属于(A)联系,车间与工人之间属于(A)联系,工人与产品之间属于(D)联系A)一对多B)一对一C)未知D)多对多
19.(D)是存储在计算机内的有结构的数据集合A)网络系统B)数据库系统C)操作系统D)数据库
20.数据库系统的核心是(D)A)编译系统B)数据库C)操作系统D)数据库管理系统
21.数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)三者之间的关系是(A)A)DBS包括DB和DBMSB)DBMS包括DB和DBSC)DB包括DBS和DBMSD)DBS就是DB,也就是DBMS
22.数据库管理系统(DBMS)是(B)A)一组硬件B)一组软件C)既有硬件,也有软件
23.在DBS中,DBMS和OS之间关系是(B)A)相互调用B)DBMS调用OSC)OS调用DBMSD)并发运行
24.数据库系统是在(A)的基础上发展起来的A)文件系统B)应用程序系统C)数据库管理系统D)编译系统
25.三级模式间存在两种映射,它们是(A)A)逻辑模式与外模式间,逻辑模式与内模式间B)外模式与内模式间,外模式与逻辑模式间C)内模式与外模式间,内模式与逻辑模式间
26.表达用户使用观点的数据库局部逻辑结构的模型是(C)A)概念模型B)逻辑模型C)外部模型D)内部模型
二、填空题1.数据管理技术的发展经历了如下四个阶段人工管理阶段、文件系统阶段、数据库阶段和高级数据库阶段2.用二维表结构表示的实体及实体间联系的数据模型称为关系模型3.两个实体集之间的联系有三种,分别是一对一联系,一对多联系和多对多联系4.如果实体集E1中每个实体至多和实体集E2中的一个实体有联系,反之亦然,那么实体集E1和E2的联系称为一对一联系5.数据库系统的三级模式、两级映像结构使数据库系统达到了高度的数据独立性第二章数据库设计和ER模型要求、目标了解和掌握数据库应用系统设计的全过程,掌握ER模型和关系模型的基本概念,掌握概念设计中ER模型的设计方法,掌握逻辑设计中ER模型向关系模型转换的方法
一、数据库系统生存期1.数据库系统生存期数据库应用系统从开始规划、设计、实现、维护到最后被新的系统取代而停止使用的整个期间2.数据库系统生存期分七个阶段规划、需求分析、概念设计、逻辑设计、物理设计、实现、运行维护3.规划阶段三个步骤系统调查、可行性分析、确定数据库系统总目标4.需求分析阶段主要任务是系统分析员和用户双方共同收集数据库系统所需要的信息内容和用户对处理的需求,并以需求说明书的形式确定下来5.概念设计阶段产生反映用户单位信息需求的概念模型与硬件和DBMS无关6.逻辑设计阶段将概念模型转换成DBMS能处理的逻辑模型外模型也将在此阶段完成7.物理设计阶段对于给定的基本数据模型选取一个最适合应用环境的物理结构的过程数据库的物理结构主要指数据库的存储记录格式、存储记录安排和存取方法8.数据库的实现包括定义数据库结构、数据装载、编制与调试应用程序、数据库试运行
二、ER模型的基本概念1.ER模型的基本元素是实体、联系和属性2.实体是一个数据对象,指应用中可以区别的客观存在的事物实体集是指同一类实体构成的集合实体类型是对实体集中实体的定义一般将实体、实体集、实体类型统称为实体3.联系表示一个或多个实体之间的关联关系联系集是指同一类联系构成的集合联系类型是对联系集中联系的定义一般将联系、联系集、联系类型统称为联系4.同一个实体集内部实体之间的联系,称为一元联系;两个不同实体集实体之间的联系,称为二元联系,以此类推5.属性实体的某一特性称为属性在一个实体中,能够惟一标识实体的属性或属性集称为实体标识符6.ER模型中,方框表示实体、菱形框表示联系、椭圆形框表示属性、实体与联系、实体与其属性、联系与其属性之间用直线连接实体标识符下画横线联系的类型要在直线上标注注意联系也有可能存在属性,但联系本身没有标识符例假设一个学生可选多门课程,而一门课程又有多个学生选修,一个教师可讲多门课程,一门课程至多只有一个教师讲授ER图如下7.概念设计三个步骤设计局部ER模型、设计全局ER模型和全局ER模型的优化
三、关系模型的基本概念1.关系模型的定义用二维表格表示实体集,用关键码表示实体之间联系的数据模型2.在关系模型中,字段称为属性,字段值称为属性值,记录类型称为关系模式记录称为元组,元组的集合称为关系或实例有时习惯称关系为表或表格,元组为行,属性为列关系中属性个数称为元数,元组个数称为基数3.关键码(简称键)由一个或多个属性组成4.超键在关系中能惟一标识元组的属性集称为关系模式的超键5.候选键不含有多余属性的超键6.主键用户选作元组标识的候选键一般如不加说明,键是指主键7.外键如果模式R中属性集K是其他模式的主键,那么K在模式R中称为外键8.值域关系中每一个属性都有一个取值范围,称为属性的值域每一个属性对应一个值域,不同的属性可对应于同一值域9.关系的定义关系是一个属性数目相同的元组的集合10.关系的性质关系是一种规范化了的二维表格1)关系中每一个属性值都是不可分解的;2)关系中不允许出现重复元组;3)关系没有行序;4)元组中的属性在理论上也是无序的,但使用时按习惯考虑列的顺序11.关系数据库中的数据与更新操作必须遵循三类完整性规则实体完整性规则、参照完整性规则、用户定义的完整性规则12.实体完整性规则要求关系中元组在组成主键的属性上不能有空值13.参照完整性规则如果属性集K是关系模式R1的主键,K也是关系模式R2的外键,那么在R2关系中,K的取值只允许两种可能,或者为空值,或者等于R1关系中某个主键值这条规则的实质是“不允许引用不存在的实体”其中,R1称为参照关系;R2称为依赖关系注意这条规则在具体使用时,有三点变通1)外键和相应的主键可以不同名,只要定义在相同值域上即可;2)R1和R2可以是同一个关系模式,此时表示了同一个关系中不同元组之间的联系;3)外键值是否允许空,应视具体问题而定14.用户定义的完整性规则用户针对具体的数据约束,设置的完整性规则,由系统来检验实施
四、ER模型到关系模型的转换1.ER图转换成关系模式集的算法1)实体类型的转换将每个实体类型转换成一个关系模式,实体的属性即为关系模式的属性,实体标识符即为关系模式的键2)联系类型的转换主要掌握二元联系类型的转换a若实体间联系是11,可以在两个实体类型转换成的关系模式中任意一个关系模式的属性中加入另一个关系模式的键(作为外键)和联系类型的属性b若实体间联系是1N,则在N端实体类型转换成的关系模式中加入1端实体类型的键(作为外键)和联系类型的属性c若实体间联系是M N,则将联系类型也转换成关系模式,其属性为两端实体类型的键(作为外键)加上联系类型的属性,而键为两端实体键的组合例下面是教学管理的一个可能的ER图图中,有三个实体类型系、教师和课程;有四个联系类型主管、聘用、开设和任教根据转换算法,把该图转换成关系模式集的步骤如下第一步把三个实体类型转换成三个关系模式(注意关系模式的表示方法)系(系编号,系名,电话)教师(教工号,姓名,性别,职称)课程(课程号,课程名,学分)第二步对于11联系,可以在“系”模式中加入教工号(教工号为外键)对于1N联系“聘用”,可以在“教师”模式中加入系编号和聘期两个属性(系编号为外键);对于1N联系“开设”,可以在“课程”模式中加入系编号(系编号为外键)这样第一步得到的三个模式改变成如下形式(注意外键通常使用波浪线表示)系(系编号,系名,电话,主管人的教工号)教师(教工号,姓名,性别,职称,系编号,聘期)课程(课程号,课程名,学分,系编号)第三步对于M N联系“任教”,则生成一个新的关系模式任教(教工号,课程号,教材)这样,转换成的四个关系模式如下系(系编号,系名,电话,主管人的教工号)教师(教工号,姓名,性别,职称,系编号,聘期)课程(课程号,课程名,学分,系编号)任教(教工号,课程号,教材)2.采用ER模型的逻辑设计步骤1)导出初始关系模式集把概念设计的结果(即全局ER模型)转换成初始关系模式集2)规范化处理3)模式评价4)模式修正5)设计外模式第二章复习题
一、单项选择题1.下面对于关系的叙述中,哪个是不正确的?(C)A)关系中的每个属性是不可分解的B)在关系中元组的顺序是无关紧要的C)任意的一个二维表都是一个关系D)每一个关系只有一种记录类型2.设属性A是关系R的主键,则属性A不能取空值这是(A)A)实体完整性规则B参照完整性规则C)用户定义完整性规则D域完整性规则3.对关系数据库来讲,下面(C)说法是错误的A)外键和相应的主键可以不同名,只要定义在相同值域上即可B)不同的属性可对应于同一值域C)行的顺序可以任意交换,但列的顺序不能任意交换D)关系中的任意两个元组不能完全相同4.数据库的物理设计是为一个给定的逻辑结构选取一个适合应用环境的B的过程包括确定数据库在物理设备上的存储结构和存取方法A)逻辑结构B物理结构C概念结构D层次结构5.在关系中,能惟一标识元组的属性集称为(B)A)外键B)超键C)域D)元组6.在数据库逻辑设计中当将E-R图转换为关系模式时下面的做法B是不正确的A)一个实体类型转换为一个关系模式B)一个联系类型转换为一个关系模式C)由实体类型转换成的关系模式的主键是该实体类型的主键7.数据库设计的概念设计阶段,表示概念结构的常用方法和描述工具是(D)A)层次分析法和层次结构图B)数据流程分析法和数据流程C)结构分析法和模块结构图D)实体—联系方法和E—R图8.关系数据库中,实现表与表之间的联系是通过(B)A)实体完整性规则B)参照完整性规则C)用户定义的完整性D)值域9.有两个实体集,并且它们之间存在着一个M N联系,那么按照E—R模型转换成关系数据库的规则,这个E—R结构转换成表的个数为(C)A)1B)2C)3D)410.把E-R图转换为关系模型的过程,属于数据库设计的(B)A)概念设计B)逻辑设计C)需求分析D)物理设计11.在数据库设计的(D)阶段,进行应用程序的编制和调试A)概念设计B)逻辑设计C)物理设计D)实现12.EMP雇员号雇员名部门号工资001张山022000010王宏达011200056马林生021000101赵敏041500DEPT部门号部门名地址01业务部1号楼02销售部2号楼03服务部3号楼04财务部4号楼在雇员信息表关系EMP中,哪个属性是外键?(C)A)雇员号B雇员名C部门号D工资
二、填空题1.表示实体及其联系的方法为ER图,基本图素包括方框、菱形框和椭圆形框习惯上实体用方框表示,实体的属性用椭圆形框表示,联系用菱形框表示2.在关系模型中,二维表的列称为属性,二维表的行称为元组3.假设班级和班长之间的联系是一对一联系,则班级和学生之间是一对多联系;另外,学生和课程之间的联系是多对多联系4.关系模型的三种完整性规则是实体完整性规则、参照完整性规则和用户定义的完整性规则5.已知系(系编号,系名称,系主任,电话,地点)和学生(学号,姓名,性别,入学日期,专业,系编号)两个关系,系关系的主键是系编号,学生关系的主键是学号,外键是系编号6.数据库系统生存期分七个阶段规划、需求分析、概念设计、逻辑设计、物理设计、实现、运行维护7.关系中属性个数称为元数,元组个数称为基数
三、综合题1.设某商业集团数据库中有三个实体集一是“商店”实体集,属性有商店编号、商店名、地址等;二是“商品”实体集,属性有商品号、商品名、规格、单价等;三是“职工”实体集,属性有职工编号、姓名、性别、业绩等商店与商品间存在“销售”联系,每个商店可销售多种商品,每种商品也可放在多个商店销售,每个商店每销售一种商品,有月销售量;商店与职工间存在着“聘用”联系,每个商店有许多职工,每个职工只能在一个商店工作,商店聘用职工有聘期和月薪试画出ER图,并在图上注明属性、联系的类型再转换成关系模式集,并指出每个关系模式的主键和外键关系模式集商店(商店编号,商店名,地址)商品(商品号,商品名,规格,单价)职工(职工编号,姓名,性别,业绩,商店编号,月薪,聘期)销售(商店编号,商品编号,月销售量)2.设某商业集团数据库中有三个实体集一是“公司”实体集,属性有公司编号、公司名、地址等;二是“仓库”实体集,属性有仓库编号、仓库名、地址等;三是“职工”实体集,属性有职工编号、姓名、性别等公司与仓库间存在“隶属”联系,每个公司管辖若干仓库,每个仓库只能属于一个公司管辖;仓库与职工间存在“聘用”联系,每个仓库可聘用多个职工,每个职工只能在一个仓库工作,仓库聘用职工有聘期和工资试画出ER图,并在图上注明属性、联系的类型再转换成关系模式集,并指出每个关系模式的主键和外键关系模式集公司(公司编号,公司名,地址)仓库(仓库编号,仓库名,地址,公司编号)职工(职工编号,姓名,性别,仓库编号,聘期,工资)3.设某商业集团数据库中有三个实体集一是“商品”实体集,属性有商品号、商品名、规格、单价等;二是“商店”实体集,属性有商店编号、商店名、地址等;三是“供应商”实体集,属性有供应商编号、供应商名、地址等供应商与商品间存在“供应”联系,每个供应商可供应多种商品,每种商品可向多个供应商订购,供应商供应商品有月供应量;商店与商品间存在“销售”联系,每个商店可销售多种商品,每种商品可在多个商店销售,商店销售商品有月计划数试画出ER图,并在图上注明属性、联系的类型再转换成关系模式集,并指出每个关系模式的主键和外键关系模式集供应商(供应商编号,供应商名,地址)商店(商店编号,商店名,地址)商品(商品号,商品名,规格,单价)供应(供应商编号,商店编号,月供应量)销售(商店编号,商品号,月计划数)第3章关系模式设计理论要求、目标了解关系数据库规范化理论及其在数据库设计中的作用,重点是函数依赖和范式,要求掌握这些概念并能运用它们来进行模式分解
一、关系模式的设计准则1.数据冗余同一个数据在系统中多次重复出现2.关系模式设计不当引起的异常问题数据冗余、操作异常(包括修改异常、插入异常和删除异常)3.关系模式的非形式化设计准则1)关系模式的设计应尽可能只包含有直接联系的属性,不要包含有间接联系的属性也就是,每个关系模式应只对应于一个实体类型或一个联系类型2)关系模式的设计应尽可能使得相应关系中不出现插入异常、删除和修改等操作异常现象3)关系模式的设计应尽可能使得相应关系中避免放置经常为空值的属性4)关系模式的设计应尽可能使得关系的等值连接在主键和外键的属性上进行,并且保证以后不会生成额外的元组4.习惯使用的一些符号1)英文字母表首部的大写字母“A,B,C,…”表示单个的属性2)英文字母表尾部的大写字母“…,U,V,W,X,Y,Z”表示属性集3)大写字母R表示关系模式,小写字母r表示其关系4)关系模式的简化表示方法R(A,B,C,…)或R(ABC…)5)属性集X和Y的并集简写为XY
二、函数依赖1.函数依赖(FD)的定义设有关系模式R(U),X和Y是属性集U的子集,函数依赖是形成X→Y的一个命题,只要r是R的当前关系,对r中任意两个元组t和s,都有t[X]=s[X]蕴涵t[Y]=s[Y],那么称FDX→Y在关系模式R(U)中成立说明1)t[X]表示元组t在属性集X上的值,其余类同2)X→Y读作“X函数决定Y”或“Y函数依赖于X”3)FD是对关系模式R的一切可能的关系r定义的对于当前关系r的任意两个元组,如果X值相同,则要求Y值也相同,即有一个X值就有一个Y值与之对应,或者说Y值由X值决定例设关系模式R(ABCD),在R的关系中,属性值间有这样的联系A值与B值有一对多联系;C值与D值之间有一对一联系试根据这些规则写出相应的函数依赖B→AC→DD→C2.如果X→Y和Y→X同时成立,则可记为X↔Y3.FD的逻辑蕴涵设F是在关系模式R上成立的函数依赖的集合,X→Y是一个函数依赖如果对于R的每个满足F的关系r也满足X→Y,那么称F逻辑蕴涵X→Y,记为F|=X→Y4.设F是函数依赖集,被F逻辑蕴涵的函数依赖全体构成的集合,称为函数依赖集F的闭包,记为F+即F+={X→Y|F|=X→Y}5.FD的推理规则(Armstrong公理)设U是关系模式R的属性集,F是R上成立的只涉及到U中属性的函数依赖集1)自反性若YÍXÍU,则X→Y在R上成立2)增广性若X→Y在R上成立,且ZÍU,则XZ→YZ在R上成立3)传递性若X→Y和Y→Z在R上成立,则X→Z在R上成立6.FD的其他五条推理规则1)合并性{X→Y,X→Z}|=X→YZ2)分解性{X→Y,ZÍY}|=X→Z3)伪传递性{X→Y,WY→Z}|=WX→Z4)复合性{X→Y,W→Z}|=WX→YZ5){X→Y,W→Z}|=X∪(W-Y)→YZ7.对于FDX→Y,如果YÍX,那么称X→Y是一个“平凡的FD”,否则称为“非平凡的FD”通常研究非平凡FD例X→X,X→φφ→φ,XY→X都是平凡函数依赖;X→XY则是非平凡函数依赖8.函数依赖是关键码概念的推广设关系模式R的属性集是U,X是U的一个子集如果X→U在R上成立,那么称X是R的一个超键如果X→U在R上成立,但对于R的任一真子集X1都有X1→U不成立,那么称X是R的一个候选键在关系模式设计理论中,键通常是指候选键9.属性集的闭包10.设F是属性集U上的FD集,X上U的子集,那么(相对于)属性集X的闭包用X+表示,它是一个从F集使用FD推理规则推出的所有满足X→A的属性A的集合X+={属性A|F|=X→A}11.X→Y能用FD推理规则推出的充分必要条件是YÍX+,从而避开求F+,使问题得到简化12.求属性集X相对于FD集F的闭包X+的算法X+=X;do{oldX+:=X+;forF中每个FDY→ZdoifYÍX+thenX+=X+∪Z;}whileX+!=oldX+;例属性集U为ABCD,FD集为{A→B,B→C,D→B}求A+、(AD)+和(BD)+A+=ABC(AD)+=ABCD(BD)+=BCD13.如果关系模式R(U)上的两个函数依赖集F和G,有F+=G+,则称F和G是等价的函数依赖集
三、关系模式的分解特性1.关系模式的分解设有关系模式R(U),属性集为U,而R1,R2,…,Rk都是U的子集,并且有R1∪R2∪…∪Rk=U关系模式R1,R2,…,Rk的集合用ρ表示,ρ={R1,R2,…,Rk}用ρ代替R的过程称为关系模式的分解这里ρ称为R的一个分解,也称为数据库模式一般把上述的R称为泛关系模式,R对应的当前值称为泛关系数据库模式ρ对应的当前值称为数据库实例,它由数据库模式中的每一个关系模式的当前值组成我们用σ=r1,r2,…,rk表示因此,在计算机中数据并不是存储在泛关系r中,而是存储在数据库σ中2.σ和r是否等价,即是否表示同样的数据这个问题用“无损分解”特性表示在模式R上有一个FD集F,在ρ的每一个模式Ri上有一个FD集Fi,那么{F1,F2,…,Fk}与F是否等价这个问题用“保持依赖”特性表示
四、范式1.范式衡量关系模式好坏的标准2.数据库设计中最常用的是3NF和BCNF3.第一范式(1NF)如果关系模式R的每个关系r的属性值都是不可分的原子值,那么称R是第一范式的模式满足1NF的关系称为规范化的关系,否则称为非规范化的关系1NF是关系模式应具备的最起码的条件4.局部依赖和完全依赖对于FDW→A,如果存在XÌW有X→A成立,那么称W→A是局部依赖(A局部依赖于W);否则称W→A是完全依赖5.主属性和非主属性如果A是关系模式R的候选键中的属性,那么称A是R的主属性;否则称A是R的非主属性6.第二范式(2NF)如果关系模式是1NF,且每个非主属性完全函数依赖于候选键,那么称R是第二范式(2NF)的模式7.分解成2NF模式集的算法设关系模式R(U),主键是W,R上还存在FDX→Z,并且Z是非主属性和XÌW,那么W→Z就是一个局部依赖此时应把R分解成两个模式R1(XZ),主键是X;R2(Y),其中Y=U-Z,主键仍是W,外键是X(参照R1)如果R1和R2还不是2NF,则重复上述过程,一直到数据库模式中的每一个关系模式都是2NF为止8.如果X→Y,Y→A,且Y→X和AÍY,那么称X→A是传递依赖(A传递依赖于X)9.第三范式(3NF)如果关系模式R是2NF,且每个非主属性都不传递依赖于R的候选键,那么称R是第三范式(3NF)的模式10.分解成3NF模式集的算法设关系模式R(U),主键是W,R上还存在FDX→Z并且Z是非主属性,ZÍX,X不是候选键,这样W→Z就是一个传递依赖此时应把R分解成两个模式R1(XZ),主键是X;R2(Y),其中Y=U-Z,主键仍是W,外键是X(参照R1)如果R1和R2还不是3NF,则重复上述过程,一直到数据库模式中的每一个关系模式都是3NF为止11.如果R是3NF模式,那么R也是2NF模式如果R是2NF模式,那么R也是1NF模式12.BC范式(BCNF)如果关系模式R是1NF,且每个属性都不传递依赖于R的候选键,那么称R是BCNF的模式13.如果R是BCNF模式,那么R也是3NF模式14.分解成BCNF模式集的算法能保持无损分解,但不一定能保持FD集而分解成3NF模式集的算法既能保持无损分解,又能保持FD集15.关系模式由1NF分解为2NF,消除了非主属性对键的局部函数依赖;由2NF分解为3NF,消除了非主属性对键的传递函数依赖;而BCNF则消除了每一属性对键的传递函数依赖16.关系模式设计理论主要用于数据库的逻辑设计过程中第三章复习题
一、单项选择题1.由于关系模式设计不当所引起的插入异常指的是(B)A)两个事务并发地对同一关系进行插入而造成数据库不一致B)由于键值的一部分为空而不能将有用的信息作为一个元组插入到关系中C)未经授权的用户对关系进行了插入D)插入操作因为违反完整性约束条件而遭到拒绝2.下面有关模式分解的叙述中,不正确的是(D)A)若一个模式分解保持函数依赖,则该分解一定具有无损连接性B)若要求分解保持函数依赖,那么模式分解可以达到3NF,但不一定能达到BCNFC)若要求分解既具有无损连接性,又保持函数依赖,则模式分解可以达到3NF,但不一定能达到BCNFD)若要求分解具有无损连接性,那么模式分解一定可以达到BCNF3.下述哪一条不是由于关系模式设计不当而引起的(B)A)数据冗余B丢失修改C插入异常D修改异常4.根据数据库规范化理论,下面命题中正确的是(D)A)若R∈2NF,则R∈3NFB)若R∈3NF,则R不属于BCNFC)若R∈3NF,则R∈BCNFD)若R∈BCNF,则R∈3NF5.若关系模式R∈3NF,则下面最正确的说法是(C)A)某个主属性不传递依赖于码B)某个非主属性不部分依赖于码C)所有的非主属性都不传递依赖于码D)所有的非主属性都不部分依赖于码6.给定关系模式R〈U,F〉,其中,U是所有属性的集合,F是FD集如果X,Y是U的子集,且X→Y∈F,则X和Y之间必然存在(C)A)一对一联系B)一对多联系(含一对一联系)C)多对一联系(含一对一联系)D)多对多联系7.设R(U),其中,U是所有属性的集合如果存在U的子集K,且K→U则K为R的(D)A)外键B)候选键C)主键D)超键8.任何一个二元关系在函数依赖的范畴内必能达到(D)A)1NFB)2NFC)3NFD)BCNF9.在关系模式设计理论中,如果一个关系R满足1NF,但R的某个非主属性传递依赖于键,则关系R至多属于(B)A)1NFB)2NFC)3NFD)BCNF10.在一个BCNF关系模式中,所有的非主属性对每一个键都是(D)A)部分函数依赖B)平凡函数依赖C)传递函数依赖D)完全函数依赖11.在一个关系模式R(A,B,C,D)中,若各个属性间没有任何函数依赖关系,则该模式的主属性有(A)A)A,B,C,DB)R,AC)A,BD)R,A,B,C,D12.当下述哪一条成立时,称X→Y为平凡的函数依赖(B)13.当关系模式R(A,B)已属于3NF,下列(B)说法是正确的A)它一定消除了插入和删除异常B)仍可能存在着一定的插入和删除异常C)一定属于BCNFD)A和C都是14.关系模型中的关系模式至少是(A)A)1NFB)2NFC)3NFD)BCNF15.下列函数依赖中,(C)是平凡的函数依赖A)AB→BCB)AB→CDC)AB→AD)AB→D16.下列命题中,不正确的是(D)A)若X→Y在R上成立,且ZÍU,则XZ→YZ在R上成立B)若X→Y和Y→Z在R上成立,则X→Z在R上成立C)若X→Y,X→Z在R上成立,则X→YZ在R上成立D)若X→Y,WY→Z在R上成立,则WX→Z在R上不成立17.设关系模式R(ABCDE),F是R上成立的FD集,F={AB→C,CD→E,DE→B},则下列哪一项不是关系模式R的候选键(D)A)ACDB)ABDC)AEDD)AD18.设关系模式R(ABCD)上FD集为F,并且F={AB→C,C→D,D→A},则下列哪一项不是关系模式R的候选键(B)A)ABB)ADC)BCD)BD
二、填空题1.关系模式规范化过程中,若要求分解保持函数依赖,那么模式分解一定可以达到3NF,但不一定能达到BCNF2.将一个关系从1NF规范到2NF,目的是消除非主属性对键的部分函数依赖,若进一步规范到3NF,目的是消除非主属性对键的传递函数依赖3.在关系数据库的规范化设计中,对模式分解的等价性进行评价的两条主要标准是具有无损连接性和保持函数依赖4.若关系为1NF,且它的每一非主属性都完全函数依赖于候选键,则该关系为2NF5.衡量关系模式好坏的标准称为范式6.满足第一范式的关系称为规范化的关系7.设关系模式R(ABCD),F是R上成立的FD集,F={A→B,C→B},则相对于F,关系模式R的候选键是AC
三、综合题1.设关系模式R(ABCD),F是R上成立的FD集,F={A→B,B→C}1)试写出属性集BD的闭包(BD)+2)试写出所有左部是B的函数依赖(即形为“B→?”)(BD)+=BCD左部是B的函数依赖有B→φ,B→B,B→C,B→BC2.设关系模式R(ABCDE)上FD集为F,并且F={A→BC,CD→E,B→D,E→A}1)试求R的候选键2)试求B+的值R的候选键为A、E、BC、CDB+=BD3.设关系模式R(ABCD),F是R上成立的FD集,F={AB→CD,A→D}1)试说明R不是2NF模式的理由2)试把R分解成2NF模式集理由R的候选键是AB,则非主属性为C和D,并且AB→D成立而已知A→D,因此AB→D为非主属性D对候选键的局部依赖R分解为R1(AD)主键是A;R2(ABC)主键是AB,外键是A4.设关系模式R(ABCD),F是R上成立的FD集,F={C→B,B→A}1)试说明R不是3NF模式的理由2)试把R分解成3NF模式集理由R的候选键是C,则非主属性为A和B因为C→B,B→A,则C→A为非主属性A对候选键的传递依赖R分解为R1(CB)主键是C,外键是B;R2(AB)主键是B5.设有关系模式R(职工编号,日期,日营业额,部门名,部门经理),该模式记录了商店里每个职工的日营业额,以及职工所在的部门和经理信息如果规定每个职工每天只有一个营业额;每个职工只在一个部门工作;每个部门只有一个经理试回答下列问题1)根据上述规定,写出模式R的基本FD和关键码;2)说明R不是2NF的理由,并把R分解成2NF模式集;3)进而分解成3NF模式集答1)R的基本FD(职工编号,日期)→日营业额,职工编号→部门名,部门名→部门经理R的关键码(职工编号,日期)2)R不是2NF的理由R的候选键是(职工编号,日期),则部门名和部门经理为非主属性,并且(职工编号,日期)→部门名和(职工编号,日期)→部门经理成立而职工编号→部门名,部门名→部门经理,因此职工编号→部门经理,因此(职工编号,日期)→部门名为非主属性部门名对候选键的局部依赖,(职工编号,日期)→部门经理为非主属性部门经理对候选键的局部依赖R分解为R1(职工编号,部门名,部门经理)主键是职工编号;R2(职工编号,日期,日营业额)主键是(职工编号,日期),外键是职工编号3)R分解为R11(职工编号,部门名)主键是职工编号,外键是部门名(参照R12);R12(部门名,部门经理)主键是部门名;R2(职工编号,日期,日营业额)主键是(职工编号,日期),外键是职工编号(参照R11)6.设有关系模式R(运动员编号,比赛项目,成绩,比赛类别,比赛主管),存储运动员比赛成绩及比赛类别、主管等信息如果规定每个运动员每参加一个比赛项目,只有一个成绩;每个比赛项目只属于一个比赛类别;每个比赛类别只有一个比赛主管试回答下列问题1)根据上述规定,写出模式R的基本FD和关键码;2)说明R不是2NF的理由,并把R分解成2NF模式集;3)进而分解成3NF模式集答1)R的基本FD(运动员编号,比赛项目)→成绩,比赛项目→比赛类别,比赛类别→比赛主管R的关键码(运动员编号,比赛项目)2)R不是2NF的理由R的候选键是(运动员编号,比赛项目),则比赛类别和比赛主管为非主属性,并且(运动员编号,比赛项目)→比赛类别和(运动员编号,比赛项目)→比赛主管成立而比赛项目→比赛类别,比赛类别→比赛主管,因此比赛项目→比赛主管成立,因此(运动员编号,比赛项目)→比赛类别为非主属性比赛类别对候选键的局部依赖,(运动员编号,比赛项目)→比赛主管为非主属性比赛主观对候选键的局部依赖R分解为R1(比赛项目,比赛类别,比赛主管)主键是比赛项目;R2(运动员编号,比赛项目,成绩)主键是(运动员编号,比赛项目),外键是比赛项目3)R分解为R11(比赛项目,比赛类别)主键是比赛项目,外键是比赛类别(参照R12);R12(比赛类别,比赛主管)主键是比赛类别;R2(运动员编号,比赛项目,成绩)主键是(运动员编号,比赛项目),外键是比赛项目(参照R11)第四章关系运算要求、目标理解关系模型的运算理论,了解关系演算和查询优化,熟练掌握关系代数运算,掌握关系代数表达式的构造方法
一、简介1.关系模型的三个组成部分数据结构、数据操纵和数据完整性规则2.数据结构数据库中全部数据及其相互联系都被组织成“关系”(二维表格)的形式关系模型基本的数据结构是关系3.数据操纵关系模型提供一组完备的高级关系运算,以支持对数据库的各种操作关系运算分成关系代数和关系演算两类4.数据完整性规则数据库中数据必须满足实体完整性、参照完整性和用户定义的完整性等三类完整性规则5.关系数据库的数据操纵语言(DML)的语句分成查询语句和更新语句两大类查询语句用于描述用户的各种检索要求;更新语句用于描述插入、删除、修改等操作前者是基础6.关系查询语言分两类关系代数语言(查询操作以集合操作为基础)和关系演算语言(查询操作以谓词演算为基础)
二、关系代数1.关系代数中的操作可以分为两类1)传统的集合操作并、差、交、笛卡儿积(乘法)、笛卡儿积的逆运算(除法)2)扩充的关系操作投影、选择、连接等2.关系代数的五个基本操作并、差、笛卡儿积、投影和选择3.并设关系R和S具有相同的关系模式,R和S的并是由属于R或属于S的元组构成的集合,记为R∪S4.差设关系R和S具有相同的关系模式,R和S的差是由属于R但不属于S的元组构成的集合,记为R-S5.笛卡儿积设关系R和S的元数分别为r和s,R和S的笛卡儿积是一个r+s元的元组集合,每个元组的前r个分量(属性值)来自R的一个元组,后s个分量来自S的一个元组若R有m个元组,S有n个元组,则R×S有m×n个元组6.投影对一个关系进行垂直分割,消去某些列,并重新安排列的顺序例π3,1(R)下标也可以用属性名表示7.选择对关系做水平分割,即选取符合条件的元组表示为σF(R)从R中挑选满足公式F为真的元组所构成的集合F中有两种成分1)运算对象常数(用引号括起来)、元组分量(属性名或列的序号)2)运算符算术比较运算符(<、≤、>、≥、=、≠、也称为θ符)、逻辑运算符(∧、∨、¬)例两个关系R和S如下求R∪S、R-S、R×S、πC,A(R)、σB’4’(R)关系R关系SABC123456789ABC246456答案ABC123789R∪SR-SABC123456789246R×SπC,A(R)R.AR.BR.CS.AS.BS.C123246123456456246456456789246789456CA316497σB’4’(R)ABC
4567898.交设关系R和S具有相同的关系模式,R和S的交是由属于R又属于S的元组构成的集合,记为R∩SR∩S=R-(R-S)或R∩S=S-(S-R)9.连接从关系R和S的笛卡儿积中选取属性值满足某一θ操作的元组,记为R∞Si和j分别是关系R和S中的第i个和第j个属性名或序号连接是由笛卡儿积和选择操作组合而成如果θ为“=”,该连接操作称为“等值连接”例已知关系R和S,求R∞S关系R关系SABC123456729DE245678答案R∞SABCDE12324456567292410.自然连接公共属性只出现一次的等值(公共属性值全部相等)连接记为R∞S一般自然连接使用在R和S有公共属性的情况中如果两个关系没有公共属性,那么其自然连接就转化为笛卡儿积操作例已知关系R和S,求R∞S关系R关系SABC246357746547BCD573462579563答案ABCD246235733579746211.除法设关系R(X,Y)和关系S(Y,Z),则R÷S定义为R(X,Y)÷S(Y,Z)=∏X(R)-∏X((∏X(R)×∏Y(S))-R)例关系R是学生选修课程的情况,COURSE表示课程情况,而操作R÷COURSE表示至少选修COURSE中列出课程的学生名单RCOURSES#SNAMEC#S1BAOC1S1BAOC2S1BAOC3S1BAOC4S2GUC1S2GUC2S3ANC2S4LIC4S4LIC2C#CNAMEC2OSC4MISR÷COURSES#SNAMES1BAOS4LI12.关系代数表达式由五个基本操作经过有限次复合的式子称为代数表达式这种表达式的运算结果仍是一个关系可以用关系代数表达式表示各种数据查询操作例教学数据库中的四个关系如下教师关系T(T#,TNAME,TITLE)课程关系C(C#,CNAME,T#)学生关系S(S#,SNAME,AGE,SEX)选课关系SC(S#,C#,SCORE)使用关系代数表达式表达下列每个查询语句1)检索学习课程号为C2课程的学生学号与成绩πS#,SCORE(σC#=‘C2‘(SC))或π1,3(σ2=‘C2‘(SC))2)检索学习课程号为C2课程的学生学号和姓名πS#,SNAME(σC#=‘C2‘(S∞SC))3)检索至少选修LIU老师所授课程中一门课程的学生学号与姓名πS#,SNAME(σTNAME=‘LIU‘(S∞SC∞C∞T))4)检索选修课程号为C2或C4课程的学生学号πS#(σC#=‘C2‘∨C#=‘C4‘(SC))5)检索至少选修课程号为C2和C4课程的学生学号π1(σ1=4∧2=‘C2‘∧5=‘C4‘(SC×SC))6)检索不学C2课程的学生姓名与年龄πSNAME,AGE(S)-πSNAME,AGE(σC#=‘C2‘(S×SC))7)检索学习全部课程的学生姓名πSNAME(S∞(πS#,C#(SC)÷πC#(C)))8)检索所学课程包含学号为S3学生所学课程的学生学号πS#,C#(SC)÷πC#(σS#=‘S3‘(SC))总结查询语句的关系代数表达式的一般形式是π…σ…R×S或π…σ…R∞S即首先把查询涉及到的关系取来,执行笛卡儿积或自然连接操作得到一张大的表格,然后对大表格执行水平分割(选择操作)和垂直分割(投影操作)但这种形式不适用于否定或全部值的查询这时要用差或除法操作13.外连接如果R和S做自然连接时,把原该舍弃的元组也保留在新关系中,同时在这些元组新增加的属性上填上空值(Null),这种操作称为“外连接”操作14.左外连接如果R和S做自然连接时,只把R中原该舍弃的元组放到新关系中,那么这种操作称为“左外连接”操作15.右外连接如果R和S做自然连接时,只把S中原该舍弃的元组放到新关系中,那么这种操作称为“右外连接”操作16.外部并两个关系R和S做并操作时,如果它们的关系模式不同,构成的新关系的属性由R和S的所有属性组成(公共属性只取一次),新关系的元组由属于R或属于S的元组构成,同时元组在新增加的属性上填上空值,那么这种操作称为“外部并”操作
三、关系演算关系演算又可分为元组关系演算和域关系演算,前者以元组为变量,后者以属性(域)为变量
四、关系代数表达式的优化1.目的提高系统效率2.三条启发式规则1)尽可能早地执行选择操作;2)尽可能早地执行投影操作;3)避免直接做笛卡儿积,把笛卡儿积操作之前和之后的一连串选择和投影合并起来一起做第四章复习题
一、单项选择题1.设关系R和S的元组个数分别为100和300,关系T是R与S的笛卡儿积,则T的元组个数是(C)A)400B)10000C)30000D)900002.设关系R与关系S具有相同的关系模式,则R-(R-S)等于(B)A)R∪SB)R∩SC)R×SD)R-S3.在关系代数中,从两个关系的笛卡儿积中,选取它们属性间满足一定条件的元组的操作,称为(D)A)投影B)选择C)自然连接D)连接4.设关系R和关系S的元数分别是3和4,关系T是R与S的笛卡儿积,即T=R×S,则关系T的元数是(A)A)7B9C12D165.在关系代数中,自然连接的运算符号为(A)A)∞B╳CπDσ6.设有关系R,S和T如下关系T由关系R和S经过(B)操作得到RABC143212364SABC421761TABC132234A)R∪SBR-SCR×SDR∞S7.查询优化策略中最重要、最基本的一条原则是(C)A)投影运算应尽可能先做B)连接运算应尽可能先做C)选择运算应尽可能先做D)把投影运算和选择运算同时进行8.假定有两个关系R与S,其内容分别为R关系ABC123255564S关系BCD2255541791则R∞S的运算结果为(B)A)ABC112225545B)ABCD1132255541791C)ABCS.BS.CD1232555642255541791D)ABC2569.对表进行垂直方向的分割用的运算是(B)A)交B)投影C)选择D)连接10.当关系R与S做自然连接时,能够把R和S原该舍弃的元组放到结果关系中的操作是(D)A)左外连接B)右外连接C)外部并D)外连接11.关系笛卡儿积运算记号R∞S中,(D)A)R为关系名,S为属性名B)R,S均为属性名B)R为属性名,S为关系名D)R,S均为关系名12.关系模型通常由3部分组成,它们是(B)A)数据结构、数据通信、数据操作B)数据结构、数据操作、完整性规则C)数据通信、数据操作、完整性规则D)数据结构、数据通信、完整性规则13.如果两个关系没有公共属性,那么其自然连接操作(A)A)转化为笛卡儿积操作B)转化为连接操作C)转化为外部并操作D)结果为空关系
二、填空题1.关系模型的三个组成部分分别是数据结构、数据操纵和数据完整性规则2.已知关系R,T,试求下列运算结果R ABabfdcfBCbcbbcgT:AR.BT.BCbccc⑴σA=C(R×T)⑵R∞TABCbcc3.给定两个关系S1,S2,BCD232356567789S1BC2356S2求πBσC>’5’S1∞S2BC364.关系代数中,从两个关系中找出相同元组的运算称为交运算5.关系代数的五个基本操作为并、差、笛卡儿积、投影和选择6.关系运算分成关系代数和关系演算两类
三、计算题1.设有关系R和S RSABC246357468ABC257468359计算R∪S、R-S、R∩S、R×S、π3,1(S)、σC’6’(R)、R∞S、R∞S答R∪SR-SABC246357468257359ABC246357R∩SR×SABC468R.AR.BR.CS.AS.BS.C246257246468246359357257357468357359468257468468468359π3,1(S)CA728493σC’6’(R)ABC357468R∞SR∞SR.AR.BR.CS.AS.BS.C357257357359468468ABC
4682.设有关系R和S,计算R∞S、R∞S、σ3=6(R×S)RSACD258741458349BCD358441418641答R∞SR∞SACDB2583741474164583AR.CR.DBS.CS.D458441458418349358σ3=6(R×S)AR.CR.DBS.CS.D258358258418741441741641458358458418
四、设计题1.设教学数据库中有四个关系教师关系T(T#,TNAME,TITLE)课程关系C(C#,CNAME,T#)学生关系S(S#,SNAME,AGE,SEX)选课关系SC(S#,C#,SCORE)试用关系代数表达式表示下列查询语句1)检索年龄小于17岁的女学生的学号和姓名2)检索男学生所学课程的课程号和成绩3)检索男学生所学课程的任课教师的工号和姓名4)检索至少选修两门课程的学生学号5)检索至少有学号为S2和S4学生选修的课程的课程号6)检索WANG同学不学的课程的课程号7)检索全部学生都选修的课程的课程号和课程名8)检索选修课程包含LIU老师所授全部课程的学生学号答1)πS#,SNAME(σAGE’17’∧SEX=’女’(S))2πC#,SCORE(σsex=‘男‘(S∞SC))3)πT#,TNAME(σsex=‘男‘(S∞SC∞C∞T))4)π1(σ1=4∧2≠5(SC×SC))5)πC#(σS#=‘S2‘(SC))∩πC#(σS#=‘S4‘(SC))6)πC#(C)-πC#(σSNAME=‘WANG‘(S×SC))7)πc#,CNAME(C∞(πS#,C#(SC)÷πS#(S)))8)πS#,C#(SC)÷πC#(σTNAME=‘LIU‘(C∞T))第五章SQL语言要求、目标SQL语言是关系数据库的标准语言,是本课程的一个重点本章总的要求是全面掌握、深刻理解、熟练应用要求了解嵌入式SQL和存储过程,掌握SQL定义语句的应用,熟练掌握SQL查询语句、视图、SQL更新语句的应用
一、SQL简介1.SQL结构化查询语言,关系数据库的标准语言2.SQL数据库的体系结构SQL数据库的体系结构基本上也是三级结构,但术语与传统的关系模型术语不同在SQL中,关系模式称为“基本表”,存储模式称为“存储文件”,子模式称为“视图”,元组称为“行”,属性称为“列”SQL数据库的体系结构要点1)一个SQL模式是表和约束的集合2)一个表由行集构成,一行是列的序列,每列对应一个数据项3)表有三种类型基本表、视图和导出表基本表实际存储在数据库中的表视图由若干基本表或其他视图构成的表的定义导出表执行了查询时产生的表4)一个基本表可以跨一个或多个存储文件,一个存储文件也可以存放一个或多个基本表每个存储文件与外部存储器上一个物理文件对应5)用户可以用SQL语句对基本表和视图进行查询等操作在用户看来,两者一样,都是表6)SQL语句可嵌在C、FORTRAN等主语言的程序中使用,也可在交互环境下供终端用户使用3.SQL的组成核心SQL主要有四个部分1)数据定义语言,即DDL,用于定义SQL模式、基本表、视图、索引等结构2)数据操纵语言,即SQLDML数据操纵分成数据查询和数据更新两类而数据更新又分成插入、删除和修改三种操作3)嵌入式SQL语言的使用规定4)数据控制语言,即SQLDCL,这一部分包括对基本表和视图的授权、完整性规则的描述、事务控制等内容4.SQL的特点1)SQL具有十分灵活和强大的查询功能2)SQL不是一个应用开发语言,它只提供对数据库的操作功能但SQL既可作为交互式语言独立使用,也可作为子语言嵌入在主语言中使用,成为应用开发语言的一部分3)SQL是国际标准语言,有利于各种数据库之间交换数据,有利于程序的移植,有利于实现高度的数据独立性,有利于实现标准化4)SQL完成核心功能只用9个英语动词,语法结构接近英语,容易学习和使用
二、SQL的数据定义1.SQL模式的创建在SQL中,一个SQL模式定义为基本表的集合一个SQL模式由模式名和模式拥有者的用户名或账号来确定,并包含模式中每一个元素(基本表、视图、索引等)的定义创建SQL模式,就是定义了一个存储空间创建模式语法CREATESCHEMA模式名AUTHORIZATION用户名2.SQL模式的撤销语法DROPSCHEMA模式名[CASCADE|RESTRICT]说明CASCADE(级联式)方式执行DROP语句时,把SQL模式及其下属的基本表、视图、索引等所有元素全部撤销RESTRICT(约束式)方式只有当SQL模式中没有任何下属元素时,才能撤销SQL模式,否则拒绝执行DROP语句3.SQL的基本数据类型1)数值型INTEGER(或INT)长整数SMALLINT短整数REAL浮点数DOUBLEPRECISION双精度浮点数FLOAT(n)浮点数,精度至少为n位数字NUMERIC(p,d)定点数,有p位数字(不包括符号、小数点)组成,小数点后有d位数字,也可写成DECIMAL(p,d)或DEC(p,d)2)字符串型CHAR(n)长度为n的定长字符串VARCHAR(n)具有最大长度为n的变长字符串3)位串型BIT(n)长度为n的二进制位串BITVARYING(n)最大长度为n的变长二进制位串4)时间型DATE日期,包含年、月、日,形为YYYY-MM-DDTIME时间,包含时、分、秒,形为HH MMSS4.基本表结构的创建语法CREATETABLE基本表名(列名类型,……完整性约束,……)说明完整性约束常用以下几种子句主键子句(PRIMARYKEY)、外键子句(FOREIGNKEY)等NOTNULL表示不允许某一列的值为空值例对于教学数据库中的四个关系教师关系T(T#,TNAME,TITLE)课程关系C(C#,CNAME,T#)学生关系S(S#,SNAME,AGE,SEX)选课关系SC(S#,C#,SCORE)创建基本表CREATETABLET(T#CHAR
(4)NOTNULL,TNAMECHAR
(8)NOTNULL,TITLECHAR
(10),PRIMARYKEY(T#))CREATETABLEC(C#CHAR
(4)NOTNULL,CNAMECHAR
(10)NOTNULL,T#CHAR
(4),PRIMARYKEY(C#),FOREIGNKEY(T#)REFERENCEST(T#))CREATETABLES(S#CHAR
(4)NOTNULL,SNAMECHAR
(8)NOTNULL,AGESMALLINT,SEXCHAR
(2),PRIMARYKEY(S#))CREATETABLESC(S#CHAR
(4),C#CHAR
(4),SCORESMALLINT,PRIMARYKEY(S#,C#),FOREIGNKEY(S#)REFERENCESS(S#),FOREIGNKEY(C#)REFERENCESC(C#))5.基本表结构的修改1)增加新的列语法ALTERTABLE基本表名ADD列名类型2)删除原有的列语法ALTERTABLE基本表名DROP列名[CASCADE|RESTRICT]说明CASCADE方式表示在基本表中删除某列时,所有引用到该列的视图和约束也要一起自动地被删除;RESTRICT方式表示在没有视图或约束引用该属性时,才能在基本表中删除该列,否则拒绝删除3)修改原有列的类型、宽度语法ALTERTABLE基本表名MODIFY列名类型6.基本表的撤销语法DROPTABLE基本表名[CASCADE|RESTRICT]7.索引的创建语法CREATE[UNIQUE]INDEX索引名ON基本表名(列名序列)说明UNIQUE表示每个索引值对应惟一的数据记录索引在用户查询时会自动起作用一个索引键可以对应多个列索引排列时可以升序,也可以降序,升序排列用ASC表示,降序排列用DESC表示,默认时表示升序8.索引的撤销语法DROPINDEX索引名
三、SQL的数据查询1.SELECT查询语句句型在关系代数中最常用的式子是下列表达式ΠA1,…,AnσFR1×…×Rm这里,R
1、…、Rm为关系,F是公式,A
1、…、An为属性与该表达式对应,SQL设计了SELECT—FROM—WHERE句型SELECTA1,…,AnFROMR1,…,RmWHEREF注意1)在学习时,应把SELECT语句和关系代数表达式联系起来考虑问题2)在WHERE子句的条件表达式F中可使用下列运算符比较运算符〈、〈=、〉、〉=、=、〈〉或!=逻辑运算符AND、OR、NOT集合成员资格运算符IN、NOTIN谓词EXISTS、ALL、SOME聚合函数AVG、MIN、MAX、SUM、COUNTF中运算对象还可以是另一个SELECT语句,即SELECT语句可以嵌套2.SELECT语句的使用技术SELECT使用时有三种写法连接查询、嵌套查询和带存在量词的嵌套查询例针对前面使用的教学数据库,检索学习课程号为C2课程的学生学号与姓名第一种写法(连接查询)SELECTS.S#SNAMEFROMSSCWHERES.S#=SC.S#ANDC#=’C2’第二种写法(嵌套查询)SELECTS#,SNAMEFROMSWHERES#IN(SELECTS#FROMSCWHEREC#=‘C2’)第三种写法(使用存在量词的嵌套查询)SELECTS#,SNAMEFROMSWHEREEXISTS(SELECT*FROMSCWHERESC.S#=S.S#ANDC#=’C2’)例对于教学数据库中四个基本表T、C、S、SC,用SELECT语句表示下面查询1)检索学习课程号为C2课程的学生学号与成绩SELECTS#,SCOREFROMSCWHEREC#=‘C2’2)检索学习课程号为C2课程的学生学号和姓名见上例3)检索至少选修LIU老师所授课程中一门课程的学生学号与姓名SELECTS.S#SNAMEFROMSSCCTWHERES.S#=SC.S#ANDSC.C#=C.C#ANDC.T#=T.T#ANDTNAME=’LIU’4)检索选修课程号为C2或C4课程的学生学号SELECTS#FROMSCWHEREC#=’C2’ORC#=’C4’5)检索至少选修课程号为C2和C4课程的学生学号SELECTX.S#FROMSCASXSCASYWHEREX.S#=Y.S#ANDX.C#=’C2’ANDY.C#=’C4’6)检索不学C2课程的学生姓名与年龄SELECTSNAMEAGEFROMSWHERES#NOTINSELECTS#FROMSCWHEREC#=’C2’7)检索学习全部课程的学生姓名(在表S中找学生,在C中不存在一门课程,这个学生没有学)SELECTSNAMEFROMSWHERENOTEXISTSSELECT*FROMCWHERENOTEXISTSSELECT*FROMSCWHERESC.S#=S.S#ANDSC.C#=C.C#8)检索所学课程包含学号为S3学生所学课程的学生学号(在SC表中找一个学生,不存在S3学的一门课,该学生没有学)SELECTDISTINCTS#FROMSCASXWHERENOTEXISTS(SELECT*FROMSCASYWHEREY.S#=’S3’ANDNOTEXISTSSELECT*FROMSCASZWHEREZ.S#=X.S#ANDZ.C#=Y.C#注DISTINCT表示去掉重复值3.聚合函数COUNT(*)计算元组个数COUNT(列名)对一列中的值计算个数SUM(列名)求某一列值的总和(此列值为数值型)AVG(列名)求某一列值的平均值(此列值为数值型)MAX列名求某一列值的最大值MIN列名求某一列值的最小值说明列名前均可加DISTINCT,表示去掉重复值例1求男生的总人数和平均年龄SELECTCOUNT(*),AVG(AGE)FROMSWHERESEX=‘男’例2统计选修了课程的学生人数SELECTCOUNT(DISTINCTS#)FROMSC4.SELECT语句完整的句法SELECT目标表的列名或列表达式序列FROM基本表名和(或)视图序列[WHERE行条件表达式][GROUPBY列名序列[HAVING组条件表达式]][ORDERBY列名[ASC|DESC]…]说明[]表示其中的内容根据需要可以省略|表示二选一各子句的作用SELECT子句用于指定输出的内容;FROM子句用于指定要检索的数据的来源表;WHERE子句称为“行条件子句”,用于指定对元组的选取条件;GROUPBY子句称为“分组子句”,作用是指定对元组进行分类后再检索;HAVING子句称为“组条件子句”,用于指定对分类后的元组的选取条件;ORDERBY子句称为“排序子句”,作用是对检索到的元组进行排序整个语句的执行过程为1)读取FROM子句中基本表、视图的数据,执行笛卡儿积操作2)选取满足WHERE子句中给出的条件表达式的元组3)按GROUP子句中指定列的值分组,同时提取满足HAVING子句中组条件表达式的那些组4)按SELECT子句中给出的列名或列表达式求值输出5)ORDER子句对输出的目标表进行排序,按附加说明ASC升序排列,或按DESC降序排列例1统计每门课程的学生选修人数SELECTCOUNT(S#)FROMSCGROUPBYC#例2统计每门课程的学生选修人数,要求只查询出选修人数超过50人的结果SELECTCOUNT(S#)FROMSCGROUPBYC#HAVINGCOUNT(S#)50例3检索每名学生的学号和年龄,查询结果按年龄降序排列,年龄相同按学号升序排列SELECTS#,AGEFROMSORDERBYAGEDESC,S#ASC
5.SELECT子句的具体规定SELECT[ALL|DISTINCT]〈列名或列表达式序列|*说明1)DISTINCT选项保证重复的行将从结构中去除;而ALL选项是默认的,将保证重复的行留在结果中,一般可不必写出2)*是对于在FROM子句中命名表的所有列的简写3)列表达式中允许出现+、-、*、/等运算符以及列名和常数、聚合函数等例1检索男同学选修的课程的课程号SELECTDISTINCTC#FROMS,SCWHERES.S#=SC.S#ANDSEX=’男’例2检索所有的学生信息SELECT*FROMS例3检索每个学生的学号和出生年份SELECTS#,2008-AGEFROMS6.列和基本表的改名操作有时,一个基本表在SELECT语句中多次出现,即这个表被多次调用,为区别不同的引用,应给每次的引用加上不同的名字当然,除此情况之外,也可以给任何一个表起别名但要注意一旦给表起了别名,在该语句中,凡是引用该表名时,必须用别名而不能用原表名有时,用户也可以要求输出的列名与基本表中列名不一致,可在SELECT子句用“旧名AS新名”形式改名其中AS可以省略例检索每个学生的姓名和出生年份,输出的列名分别为STUDENT_NAME和BIRTH_YEARSELECTS#ASSTUDENT_NAME,2008-AGEASBIRTH_YEARFROMS7.条件表达式中的比较操作1)算术比较操作常用运算符有〈、〈=、〉、〉=、=、或!=[NOT]BETWEEN…AND用来查找(不)在给定范围内的数据,下限在前,上限在后,包括上、下限例检索18—20岁的学生姓名SELECTSNAMEFROMSWHEREAGE〉=18ANDAGE〈=20或SELECTSNAMEFROMSWHEREAGEBETWEEN18AND202)字符串的匹配操作语法字符串[NOT]LIKE匹配模式说明匹配模式中常使用两个通配符%与零个或多个字符组成的字符串匹配_与单个字符匹配例检索姓名以字符D打头的学生姓名SELECTSNAMEFROMSWHERESNAMELIKE‘D%’转义字符为使字符串中包含特殊字符(即%和_),允许定义转义字符转义字符紧靠特殊字符并放在它前面,表示该特殊字符被当成普通字符使用ESCAPE定义转义字符例LIKE‘ab\%cd%’ESCAPE‘\’匹配所有以ab%cd开头的字符串LIKE‘ab\\cd%’ESCAPE‘\’匹配所有以ab\cd开头的字符串3)空值的比较操作使用IS[NOT]NULL来比较例检索年龄为空值的学生姓名SELECTSNAMEFROMSWHEREAGEISNULL4)集合成员资格的比较语法[NOT]IN(集合)例1检索年龄分别是
18、
20、21岁的学生姓名SELECTSNAMEFROMSWHEREAGEIN(18,20,21)例2检索男同学选修课程的课程号SELECTDISTINCTC#FROMSCWHERES#IN(SELECTS#FROMSWHERESEX=‘男’)5)集合成员的算术比较语法元组θALL|SOME|ANY(〈集合〉)说明ALL表示左边那个元组与右边集合中每一个元组满足θ运算;ANY和SOME含义相同,表示左边那个元组与右边集合中至少一个元组满足θ运算例1检索学习C2课程的学生学号和姓名SELECTS#,SNAMEFROMSWHERES#=SOME(SELECTS#FROMSCWHEREC#=‘C2’)例2检索不学C2课程的学生姓名与年龄SELECTSNAME,AGEFROMSWHERES#〈〉ALL(SELECTS#FROMSCWHEREC#=‘C2’)6)集合空否的测试使用[NOT]EXISTS见前面例子
四、数据更新1.数据插入语法1)单元组的插入INSERTINTO基本表名[(列名序列)]VALUES(元组值)2)多元组的插入INSERTINTO基本表名[(列名序列)]VALUES(元组值)(元组值)…(元组值)3)查询结果的插入INSERTINTO基本表名[(列名序列)]SELECCT查询语句4)表的插入INSERTINTO基本表名1[(列名序列)]TABLE基本表名2说明在上述各种插入语句中,如果插入的值在属性个数、顺序与基本表的结构完全一致,那么基本表后的(列名序列)可省略,否则必须详细列出2.数据删除语法DELETEFROM基本表名[WHERE条件表达式]说明如果省略WHERE子句,表示删除基本表中所有元组例把课程名为MATHS的成绩从基本表SC中删除DELETEFROMSCWHEREC#IN(SELECTC#FROMCWHERECNAME=‘MATHS’)3.数据修改语法UPDATE基本表名SET列名=值表达式[列名=值表达式…]|ROW=元组[WHERE条件表达式]例1把C5课程的课程名改为DBUPDATECSETCNAME=‘DB’WHEREC#=‘C5’例2把课程号为C5的元组修改为(C5,DB,T3)UPDATECSETROW=(‘C5’,‘DB’,‘T3’)WHEREC#=‘C5’
五、视图1.在SQL中,外模式一级数据结构的基本单位是视图2.视图的定义视图是从若干基本表和(或)其他视图构造出来的表这种构造方法采用SELECT语句实现在我们创建一个视图时,只是把其视图的定义存放在数据字典中,而不存储视图对应的数据,在用户使用视图时才去求对应的数据因此,视图被称为“虚表”3.视图的创建语法CREATEVIEW视图名(列表序列)ASSELECT查询语句4.视图的撤销语法DROPVIEW视图名5.对视图的操作1)视图的查询操作,与基本表一样2)视图的更新操作,一般仅限于“行列子集视图”行列子集视图如果视图是从单个基本表中只使用选择、投影操作导出的,并且包含了基本表的主键,那么这样的视图称为“行列子集视图”
六、嵌入式SQL1.SQL语言有两种使用方式一种是在终端交互方式下使用,称为交互式SQL;另一种是在主语言的程序中使用,称为嵌入式SQL2.嵌入式SQL的实现,有两种处理方式一种是扩充主语言的编译程序,使之能处理SQL语句;另一种是采用预处理方式目前多数系统采用后一种方式预处理方式是先用预处理程序对源程序进行扫描,识别出SQL语句,并处理成主语言的函数调用形式;然后再用主语言的编译程序编译成目标程序3.嵌入式SQL的使用规定1)在程序中要区分SQL语句与主语言语句2)允许嵌入的SQL语句引用主语言的程序变量(成为共享变量)3)通过游标协调SQL的集合处理方式和主语言的单记录处理方式
七、存储过程1.存储过程是使用SQL语句和流程控制语句编写的模块,存储过程经编译和优化后存储在数据库服务器端的数据库中,使用时调用即可2.使用存储过程的优点1)提高运行速度;2)增强了SQL的功能和灵活性3)可以降低网络的通信量;4)减轻了程序编写的工作量;5)间接实现安全控制功能第五章复习题
一、单项选择题1.已知学生选课表SC(S#,C#,SCORE),其中S#代表学生学号,C#代表课程号,SCORE代表成绩为了提高查询速度,对该表创建唯一索引,应该创建在哪个(组)属性上?(A)A)(S#,C#)B)S#C)C#D)SCORE2.有如下两个关系,其中雇员信息表关系EMP的主键是雇员号,外键是部门号;部门信息表关系DEPT的主键是部门号EMP雇员号雇员名部门号工资001张山022000010王宏达011200056马林生021000101赵敏041500DEPT部门号部门名地址01业务部1号楼02销售部2号楼03服务部3号楼04财务部4号楼若执行下面列出的操作,哪个操作不能成功执行?(D)A)从EMP中删除行‘010’,‘王宏达’,‘01’,1200B)在EMP中插入行‘102’,‘赵敏’,‘01’,1500C)将EMP中雇员号=‘056’的工资改为1600元D)将EMP中雇员号=‘101’的部门号改为‘05’3.有如下两个关系,其中雇员信息表关系EMP的主键是雇员号,外键是部门号;部门信息表关系DEPT的主键是部门号EMP雇员号雇员名部门号工资001张山022000010王宏达011200056马林生021000101赵敏041500DEPT部门号部门名地址01业务部1号楼02销售部2号楼03服务部3号楼04财务部4号楼若执行下面列出的操作,哪个操作不能成功执行?(C)A)从DEPT中删除部门号=‘03’的行B)在DEPT中插入行‘06’,‘计划部’,‘6号楼’C)将DEPT中部门号=‘02’的部门号改为‘10’D)将DEPT中部门号=‘01’的地址改为‘5号楼’4.SQL语言集数据定义、数据操纵和数据控制功能于一体,语句INSERT、DELETE、UPDATE实现哪类功能(B)A)数据定义B数据操纵C数据控制5.下面列出的关于“视图View”的条目中,哪一条是不正确的(C)A)视图是外模式B)视图是虚表C)使用视图可以加快查询语句的执行速度D)使用视图可以简化查询语句的编写6.设有关系RA,B,C和SC,D与SQL语句selectA,B,DfromR,SwhereR.C=S.C等价的关系代数表达式是(B)A)σR.C=S.CπABDR×SB)πABDσR.C=S.CR×SC)σR.C=S.CπABR×πDSD)σR.C=S.CπDπABR×S7.在SQL语言的SELECT语句中,实现投影操作的是哪个子句(A)A)selectBfromCwhereDgroupby8.SQL的DROPINDEX语句的作用是(A)A)删除索引B建立索引C修改索引D更新索引9.在所有的关系数据库上的操作,(D)是核心,是其他操作的前提A)插入B删除C修改D查询10.设两个关系C和SC如下,它们的主键分别为C#和(S#,C#)若要向关系SC执行下列插入操作,(A)元组可以被插入CC#CNAMETEACHERc1c2c3DatabaseNetworkOSZhangLiWuSCS#C#SCORE993001991021997345993069C1C3C2C3887895A)(‘993001’,‘C2’null)B‘994010’’C4’90C‘997345’’C2’6511.设有关系RABC与SQL语句SELECTDISTINCTAFROMRWHEREB=17等价的关系代数表达式是(C)A)πA(R)B)σB=17(R)C)πA(σB=17(R))D)σB=17(πA(R))12.SQL语言集数据定义、数据操纵和数据控制于一体,其中CREATE、DROP、ALTER语句是实现哪种功能的(A)A)数据定义B)数据操纵C)数据控制13.SQL语言具有两种使用方式,分别称为交互式SQL和(C)A)提示式SQLB)多用户SQLC)嵌入式SQLD)解释式SQL14.在SQL中,基本表的撤销可以用(B)A)DROPSCHEMA命令BDROPTABLE命令CDROPVIEW命令DDROPINDEX命令15.在SQL中,创建基本表用(B)A)CREATESCHEMA命令B)CREATETABLE命令C)CREATEINDEX命令D)CTEATEVIEW命令16.下列说法中错误的是(D)A)一个基本表可以跨一个或多个存储文件B)一个存储文件可存放一个或多个基本表C)每个存储文件与外部存储器上一个物理文件对应D)每一个基本表与外部存储器上一个物理文件对应17.实际存储在数据库中的表是(A)A)基本表B)视图C)基本表和视图D)以上均不是18.在下列哪种情况下,视图可被更新(A)A)行列子集视图B)从多个基本表中使用联接操作导出的C)在导出视图的过程中使用了分组操作D)在导出视图的过程中使用了聚合操作19.在SQL中,SELECT语句的“SELECTDISTINCT“表示查询结果中(C)A)属性名都不相同B)去掉了重复的列C)去掉了重复的行D)属性值都不相同20.HAVING子句中应后跟(B)A)行条件表达式B)组条件表达式C)视图序列D)列名序列21.哪种对象实质上是一个虚拟的表,用来存储预先定义好的查询?(B)A)表B视图C索引D存储过程22.嵌入式SQL实现时,采用预处理方式是(C)A)把SQL语句和主语言语句区分开来B)为SQL语句加前缀标识和结束标志C)识别出SQL语句,并处理成函数调用形式D)把SQL语句编译成二进制码
二、填空题1.在SQL语言中,删除表的定义应该使用的语句是DROPTABLE2.使用SQL语言,建立一个“学生”表student由学号SN,性别Ssex,年龄Sage组成,其中学号属性为主键CREATETABLEstudent(SNCHAR
(4),SsexCHAR
(2),SageSMALLINT,PRIMARYKEY(SN))3.在SQL中,建立唯一索引要用到关键字UNIQUE4.在SQL中,用DISTINCT子句消除重复出现的元组5.在SQL中,用DELETE命令可以从表中删除行,用DROPTABLE命令可以删除表6.在SQL中,用UPDATE命令可以修改表中的数据,用ALTERTABLE命令可以修改表的结构7.视图是从一个或几个基本表导出的表,它与基本表不同,是一个虚表换句话说,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中8.SQL的中文全称为结构化查询语言9.SQL的数据操纵语言分成数据查询和数据更新两类10.撤销SQL模式abc,同时把该模式下属的基本表、视图、索引等所有元素全部撤销,完成这一操作所使用的SQL语句为DROPSCHEMAabcCASCADE
三、设计题1.设教学数据库中有四个关系教师关系T(T#,TNAME,TITLE)课程关系C(C#,CNAME,T#)学生关系S(S#,SNAME,AGE,SEX)选课关系SC(S#,C#,SCORE)试用SQL的查询语句表示下列查询1)检索年龄小于17岁的女学生的学号和姓名2)检索男学生所学课程的课程号和成绩3)检索男学生所学课程的任课教师的工号和姓名4)检索至少选修两门课程的学生学号5)检索至少有学号为S2和S4学生选修的课程的课程号6)检索WANG同学不学的课程的课程号7)检索全部学生都选修的课程的课程号和课程名8)检索选修课程包含LIU老师所授全部课程的学生学号9)统计有学生选修的课程门数10)求选修C4课程的女学生的平均年龄11)求LIU老师所授课程的每门课程的平均成绩12)统计每门课程的学生选修人数(超过10人的课程才统计)要求显示课程号和人数,查询结果按人数降序排列,若人数相同,按课程号升序排列13)检索学号比WANG同学大,而年龄比他小的学生姓名14)在表SC中检索成绩为空值的学生学号和课程号15)检索姓名以L打头的所有学生的姓名和年龄16)求年龄大于女同学平均年龄的男学生姓名和年龄17)求年龄大于所有女同学年龄的男学生姓名和年龄答1)SELECTS#,SNAMEFROMSWHEREAGE〈17ANDSEX=‘女’2)SELECTC#,SCOREFROMSCFROMSCWHERES#IN(SELECTS#FROMSWHERESEX=‘男’)3)SELECTT.T#,TNAMEFROMS,C,SC,TWHERES.S#=SC.S#ANDSC.C#=C.C#ANDT.T#=C.T#ANDSEX=’男’4)SELECTX.S#FROMSCX,SCYWHEREX.S#=Y.S#ANDX.C#Y.C#5)SELECTC#FROMSCWHERES#=‘S2’ANDC#IN(SELECTC#FROMSCWHERES#=‘S4’)6)SELECTC#FROMCWHEREC#NOTIN(SELECTC#FROMSCWHERES#IN(SELECTS#FROMSWHERESNAME=‘WANG’))7)SELECTC#,CNAMEFROMCWHERENOTEXISTS(SELECT*FROMSWHERENOTEXISTS(SELECT*FROMSCWHERESC.S#=S.S#ANDSC.C#=C.C#))8)SELECTS#FROMSWHERENOTEXISTS(SELECT*FROMCWHERENOTEXISTS(SELECT*FROMSCWHERESC.S#=S.S#ANDSC.C#=C.C#)ANDT#IN(SELECTT#FROMTWHERETNAME=‘LIU’))9)SELECTCOUNT(*)FROMSCGROUPBYC#10)SELECTAVG(AGE)FROMSWHERES#IN(SELECTS#FROMSCWHEREC#=‘C4’)ANDSEX=‘女’11)SELECTC#,AVG(SCORE)FROMSCWHEREC#IN(SELECTC#FROMCWHERET#IN(SELECTT#FROMTWHERETNAME=‘LIU’)GROUPBYC#12)SELECTC#,COUNT(*)FROMSCGROUPBYC#HAVINGCOUNT(*)〉10ORDERBY2DESC,C#13)SELECTSNAMEFROMSWHERES#(SELECTS#FROMSWHERESNAME=‘WANG’)ANDAGE(SELECTAGEFROMSWHERESNAME=‘WANG’)14)SELECTS#,C#FROMSCWHERESCOREISNULL15)SELECTSNAME,AGEFROMSWHERESNAMELIKE‘L%’16)SELECTSNAME,AGEFROMSWHERESEX=‘男’ANDAGE(SELECTAVG(AGE)FROMSWHERESEX=‘女’)17)SELECTSNAME,AGEFROMSWHERESEX=‘男’ANDAGEALL(SELECTAGEFROMSWHERESEX=‘女’)2.试用SQL更新语句表达对上一题的教学数据库关系S、SC、C的更新操作1)往关系C中插一个课程元组(‘C8’,‘VC++’,‘BAO’)2)在SC中删除尚无成绩的选课元组3)把选修LIU老师课程的女同学选课元组全部除去4)把MATHS课不及格的成绩全改为60分5)把低于所有课程总平均成绩的女同学成绩提高5%6)在表SC中,当某个成绩低于全部课程的平均成绩时,提高5%答1)INSERTINTOCVALUES(‘C8’,‘VC++’,‘BAO’)2)DELETEFROMSCWHERESCOREISNULL3)DELETEFROMSCWHERES#IN(SELECTS#FROMSWHERESEX=‘女’)ANDS#IN(SELECTS#FROMSCWHEREC#IN(SELECTC#FROMCWHERET#IN(SELECTT#FROMTWHERETNAME=‘LIU’))4)UPDATESCSETSCORE=60WHEREC#IN(SELECTC#FROMCWHERECNAME=‘MATHS’)ANDSCORE〈605)UPDATESCSETSCORE=SCORE+SCORE*
0.05WHERES#IN(SELECTS#FROMSWHERESEX=‘女’)ANDSCORE(SELECTAVG(SCORE)FROMSC)6)UPDATESCSETSCORE=SCORE+SCORE*
0.05WHERESCORE(SELECTAVG(SCORE)FROMSC)第六章数据库管理要求、目标了解数据库的恢复、数据库的安全性,熟悉事务、数据库的并发控制、数据库的完整性
一、事务1.DBMS对DB的监控,称为数据库的管理,也称为数据库的保护它分为四个方面数据库的恢复、并发控制、完整性控制和安全性控制2.事务是构成单一逻辑工作单元的操作集合,要么完整地执行,要么完全不执行DBS运行的最小逻辑工作单位是“事务”,所有对数据库的操作,都要以事务作为一个整体单位来执行或撤销3.一个事务由应用程序中的一组操作序列组成,在程序中,事务以BEGINTRANSACTION开始,以COMMIT语句或ROLLBACK语句结束COMMIT语句表示事务执行成功地结束(提交);ROLLBACK语句表示事务执行不成功地结束(应该“回退)4.事务的ACID性质1)原子性(Atomicity)一个事务对数据库的所有操作,是一个不可分割的工作单元这些操作要么全部执行,要么什么也不做2)一致性(Consistency)一个事务独立执行的结果,应保持数据库的一致性,即数据不会因事务的执行而遭受破坏3)隔离性(Isolation)在多个事务并发执行时,系统应保证与这些事务先后单独执行时的结果一样4)持久性(Durability)一个事务一旦完成全部操作后,它对数据库的所有更新应永久地反映在数据库中,不会丢失
二、数据库的恢复1.数据库的可恢复性系统能把数据库从被破坏、不正确的状态,恢复到最近一个正确的状态,DBMS的这种能力称为可恢复性2.为保证可恢复性,平时应做好转储和建立日志日志库记录事务的开始、结束标志,记录事务对数据库的每一次插入、删除和修改前后的值3.常见故障分三类事务故障、系统故障(硬件故障、软件(DBMS、OS或应用程序)错误、掉电等,不破坏数据库)、介质故障事务故障和系统故障的恢复由系统自动进行,而介质故障的恢复需要DBA配合执行系统故障通常称为软故障,介质故障通常称为硬故障
三、数据库的并发控制1.并发操作带来的三个问题丢失更新、读脏数据(把未提交的随后被撤销的数据称为“脏数据”)、不可重复读采用“封锁”技术解决这些问题2.锁是一个与数据项相关的变量,对可能应用于该数据项上的操作而言,锁描述了该数据项的状态通常在数据库中每个数据项都有一个锁3.锁的主要类型1)排他锁(X锁、写锁)如果事务T对某个数据R(可以是数据项、记录、数据集乃至整个数据库)实现了X锁,那么在T对数据R解除封锁之前,不允许其他事务再对该数据加任何类型的锁,这种锁称为“X锁”2)共享锁(S锁、读锁)如果事务T对某数据加上S锁后,仍允许其他事务再对该数据加S锁,但在对该数据的所有S锁都解除之前决不允许任何事务对该数据加X锁4.封锁的粒度封锁对象的大小封锁粒度与系统的并发度成反比5.调度事务的执行次序如果多个事务依次执行,称为事务的串行调度;如果利用分时的方法,同时处理多个事务,则称为事务的并发调度6.可串行化调度每个事务中,语句的先后顺序在各种调度中始终保持一致在这个前提下,如果一个并发调度的执行结果与某一串行调度的执行结果等价,那么,这个并发调度称为“可串行化的调度”,否则是“不可串行化的调度”
四、数据库的完整性1.数据库的完整性是指数据的正确性、有效性和相容性,防止错误的数据进入数据库1)正确性是指数据的合法性2)有效性是指数据是否属于所定义的有效范围3)相容性是指表示同一事实的两个数据应相同,不一致就是不相容
2、SQL中的完整性约束1)域约束例CREATEDOMAINCOLORCHAR
(6)DEFAULT‘’CONSTRAINTVALID_COLORSCHECK(VALUEIN(‘Red’,‘Yellow’,‘Blue’,‘Green’,‘’))定义完后,该域便可作为一种数据类型使用,如用在CREATETABLE中2)基本表约束主要有三种形式候选键定义、外键定义和检查约束定义这些定义都可在前面加CONSTRAINT约束名,也可以省略候选键的定义UNIQUE(列名序列)或PRIMARYKEY(列名序列)UNIQUE方式表示值惟一;PRIMARYKEY值惟一,并且自动设为非空一个基本表只能指定一个主键检查约束的定义例CHECK(AGE=18ANDAGE=20)3)断言如果完整性约束牵涉面较广,与多个关系有关,或者与聚合操作有关,应使用断言3.触发器是一个能由系统自动执行对数据库修改的语句有时也称为主动规则(相对于前面的各种被动约束机制)
五、数据库的安全性1.数据库的安全性是指保护数据库,防止不合法的使用,以免数据的泄密、更改或破坏2.SQL中的安全性机制提供四个视图、权限、角色和审计1)视图使系统具有三个优点数据安全性(用来对无权用户屏蔽数据)、逻辑数据独立性和操作简便性视图不占存储空间2)权限授权语句GRANT、回收语句REVOKE3)角色在SQL中,用户是实际的人或是访问数据库的应用程序而角色是一组具有相同权限的用户,实际上角色是属于目录一级的概念用户和角色之间存在多对多联系,即一个用户可以参与多个角色,一个角色也可授予多个用户4)审计用于安全性目的的数据库日志,称为审计追踪第六章复习题
一、单项选择题1.在关系数据库系统中,为了简化用户的查询操作,而又不增加数据的存储空间,常用的方法是创建(B)A)另一个表B视图C索引D)模式2.为了考虑安全性,每个教师只能存取自己讲授的课程的学生成绩,为此DBA应创建(A)A)视图B索引C模式D表3.事务的所有操作在数据库中要么全部正确反映出来,要么全部不反映,这是事务的哪一个特性?(A)A)原子性B一致性C隔离性D持久性4.事务的ACID特性中,C的含义是(A)A)一致性(Consistency)B)邻接性(Contiguity)C)连续性(Continuity)D)并发性(Concurrency)5.如果有两个事务,同时对数据库中同一数据进行操作,不会引起冲突的操作是(C)A)其中有一个是DELETEB)一个是SELECT,另一个是UPDATEC)两个都是SELECTD)两个都是UPDATE6.下述哪一条是并发控制的主要方法(B)A)授权B)封锁C)日志D)索引7.事务的一致性是指(D)A)事务中包括的所有操作要么都做,要么都不做B)事务一旦提交,对数据库的改变是永久的C)一个事务内部的操作及使用的数据对并发的其他事务是隔离的D)事务必须是使数据库从一个一致性状态变到另一个一致性状态8.事务的隔离性是指(C)A)事务中包括的所有操作要么都做,要么都不做B)事务一旦提交,对数据库的改变是永久的C)一个事务内部的操作及使用的数据对并发的其他事务是隔离的D)事务必须是使数据库从一个一致性状态变到另一个一致性状态9.事务的原子性是指(A)A)事务中包括的所有操作要么都做,要么都不做B)事务一旦提交,对数据库的改变是永久的C)一个事务内部的操作及使用的数据对并发的其他事务是隔离的D)事务必须是使数据库从一个一致性状态变到另一个一致性状态10.SQL的主码子句和外码子句属于DBS的(A)A)完整性措施B)安全性措施C)恢复措施D)并发控制措施11.系统能把数据库从被破坏、不正确的状态,恢复到最近一个正确的状态,DBMS的这种能力称为(C)A)完整性控制B)安全性控制C)可恢复性D)并发控制12.保证数据的正确性、有效性和相容性,防止错误的数据进入数据库这属于数据库保护中的(A)措施A)完整性控制B)安全性控制C)可恢复性D)并发控制13.下列何种方法属于SQL中的主动约束机制?(D)A)域约束B)基本表约束C)断言D)触发器14.保护数据库,防止不合法的使用,以免数据的泄密、更改或破坏这属于数据库保护中的(B)措施A)完整性控制B)安全性控制C)可恢复性D)并发控制
二、填空题1.数据库管理系统中,为了保证事务的正确执行,维护数据库的完整性,要求数据库系统维护以下事务特性原子性、一致性、隔离性和持久性2.有两种基本类型的锁,它们是排他锁和共享锁3.DBS运行的最小逻辑工作单位是事务4.常见故障分三类事务故障、系统故障和介质故障第七章SQLServer2000简介及应用要求、目标了解SQLServer2000,了解企业管理器的功能与操作,了解T-SQL的使用
一、概述1.SQLServer2000是Microsoft公司推出的适用于大型网络环境的关系型数据库管理系统它支持客户机/服务器体系结构2.客户机/服务器体系结构将数据库防在服务器上,该服务器数据库中的数据可被多个用户同时存取,而用户存取服务器中的数据是通过客户机或服务器端的应用程序获得的3.SQLServer2000的系统数据库1)Master数据库记录了所有系统信息、登录账号、系统配置设置、系统中所有数据库及其系统信息以及存储介质信息2)Model数据库为用户创建数据库提供的模板数据库3)Msdb数据库主要用于存储任务计划信息、事件处理信息、备份恢复信息以及异常SQLServer2000的报告等4)Tempdb数据库存放所有临时表和临时的存储程序,并且存放目前使用中的表,它是一个全局的资源,临时表和存储程序可供所有用户使用4.SQLServer2000的主要工具1)查询分析器使用这个工具,用户可以交互地设计和测试T-SQL语句、批处理和脚本2)服务管理器可以用来启动、暂停和停止SQLServer的主要服务和指示其当前状态3)企业管理器用户管理SQLServer2000的主要管理工具和图形界面在企业管理器中可以完成几乎所有的管理工作,如管理登录账号、数据库用户和权限、创建和管理数据库、创建和管理表、视图、存储过程以及用户自定义数据类型等
二、企业管理器1.触发器与存储过程的联系和区别联系触发器是一种特殊的存储过程区别1)存储过程利用EXEC语句调用执行,触发器为表上的INSERT、UPDATE、DELETE事件所触发而自动执行2)触发器不能传递或接受参数2.两个临时表触发器被执行时,系统会创建一个或两个临时表INSERTED和DELETED,这些表在结构上类似于定义触发器的表,用于保存用户操作更改的行的新值和旧值3.一个用户要访问SQLServer数据库中的数据,必须经过三个认证过程1)身份验证使用登录账号来标识用户,身份验证只验证用户连接到SQLServer数据库服务器的资格,即验证该用户是否具有连接到数据库服务器的“连接权”2)当用户访问数据库时,他必须具有对具体数据库的访问权,即验证用户是否是该数据库的合法用户3)当用户操作数据库中的数据或对象时,他必须具有所要进行操作的操作权4.SQLServer的两种身份验证模式Windows身份验证模式和混合验证模式
三、T-SQL语言1.T-SQL Transact-SQL的简称,为扩展SQL2.批处理由一条或多条T-SQL语句构成,前端应用程序会将所有这些语句作为单个代码单元发送给SQLServerSQLServer将整个批处理作为一个整体加以解析批处理分隔符为go3.SQL脚本文件可包含多个批处理第七章复习题
一、单项选择题1.SQLServer2000是(B)公司的软件产品ASybaseBMicrosoftCOracleDIBM2.SQLServer2000中,负责启动、暂停和停止SQLServer服务的管理工具为(D)A)企业管理器B查询分析器C事件探查器D服务管理器3.SQLServer2000中,用于配置SQLServer系统环境,创建和管理所有SQLServer对象的管理工具为(A)A)企业管理器B查询分析器C事件探查器D服务管理器4.SQLServer2000中,允许输入和执行Transact-SQL语句并返回语句的执行结果的管理工具为(B)A)企业管理器B查询分析器C事件探查器D服务管理器5.SQLServer2000中,包含用户登录标识、系统配置信息、初始化等系统级信息的系统数据库为(C)A)modelBmsdbCmasterDtempdb6.SQLServer2000中,A系统数据库为用户数据库的模板A)modelBmsdbCmasterDtempdb7.SQLServer2000中,存储用户建立的临时表的系统数据库为(D)A)modelBmsdbCmasterDtempdb8.SQLServer2000是(C)类型的数据库管理系统A)层次型B网状型C关系型
二、填空题1.SQLServer2000中,可供选择的身份验证模式有两种,分别是Windows验证模式和混合验证模式2.SQLServer2000安装完成后,包括四个系统数据库,分别为Master、Model、Msdb和Tempdb第八章PowerBuilder
9.0简介及应用要求、目标了解PB
9.0的集成开发环境,了解应用程序的开发步骤,了解PB
9.0连接数据库的方法
一、PowerBuilder
9.0集成开发环境1.PowerBuilder
9.0是当前最为流行的数据库前端应用开发和多层应用开发工具之一2.PB的主要特点1)采用面向对象的编程方法和事件驱动的工作原理2)支持跨平台开发,具有开放的数据库连接系统3.PB
9.0的开发空间有三个层次1)工作空间2)目标3)库文件
二、PB
9.0与数据库的连接1.连接步骤1)建立ODBC数据源;2)建立数据库描述文件;3)用Connect命令连接数据库第八章复习题填空题1.PB
9.0的开发空间有三个层次工作空间、目标和库文件第九章数据库技术的发展要求、目标了解数据库技术发展的前景,了解面向对象的概念建模和开放数据库互连技术
一、面向对象的概念建模1.概念建模经历了“ER图—对象联系图—类图”的发展历程2.面向对象的数据类型系统由基本类型、复合类型和引用类型三部分组成3.对象联系图是面向对象数据模型中数据结构的一种重要图例表示方法,由于使用了对象标识的概念,使结构的嵌套和递归成为可能是描述面向对象数据模型的基本工具它不仅完整地揭示了数据之间的联系,也把查询的层次观点表现的一清二楚4.统一建模语言(UML)面向对象开发的行业标准语言
二、开放数据库互连(ODBC)1.API即应用程序设计接口,是为开发者提供单一的编程接口,这样同一个应用程序就可以访问不同的数据库服务器2.ODBC Microsoft公司的产品,以C/S结构为设计基础该技术使得应用程序与DBMS之间在逻辑上可以分离,使应用程序具有数据库武官性ODBC定义了一个API,每个应用程序利用相同的源代码就可访问不同的数据库系统,存取多个数据库中的数据ODBC一个最显著的优点是用它生成的应用程序与数据库或数据库引擎无关第九章复习题填空题1.面向对象的数据类型系统由基本类型、复合类型和引用类型三部分组成2.概念建模经历了从ER图到对象联系图,再到类图的发展历程MN1111系系编号系名电话主管开设聘用教师课程任教学分姓名性别教工号职称教材课程号课程名NN教学管理的ER图聘期1NMN商店商品职工姓名职工编号聘期性别业绩月销售量商店名地址商店编号单价商品名规格商品号销售聘用月薪1NN1仓库公司职工姓名职工编号聘期性别仓库名地址仓库编号公司名地址公司编号隶属聘用工资MNNM商店供应商商品商品名商品号月计划数规格单价月供应量供应商名地址供应商编号商店名地址商店编号供应销售A)XYB)YXC)X∩Y=φD)X∩Y≠φ。