版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关系数据库基础本章内容关系数据库系统概述关系模型的完整性约束关系数据模型关系代数关系数据库基础关系数据库系统概述关系数据库系统概述123关系数据库的发展?关系数据库管理系统简介关系数据库标准语言SQL简介4关系数据库的三层模式结构5SQLServer的数据库存储结构6SQLServer的用户数据库关系数据库系统的发展及SQL简介关系数据库的发展关系数据库的发展CODASYL于1962年发表的“信息代数”一文
E.F.Codd从1970年起发表了一系列的论文20世纪70年代末的实验系统SystemR和Ingres
从20世纪80年代逐步走向成熟关系数据库管理系统简介SQLServer简介20世纪80年代:诞生。1995年:SQLServer6.01996年:SQLServer6.51998年:SQLServer7.02000年:SQLServer20002005年:SQLServer20052008年:SQLServer20082012年:SQLServer2012(开始突出云和大数据)2014年:SQLServer2014(进一步强调inmemory)2016年:SQLServer2016(进一步提升云、大数据、内存数据库)DBMS和解决方案SQLServer是关系数据库管理系统,但更是基于数据库的全面应用解决方案。可以为数据库提供更安全可靠的存储功能可以构建和管理用于业务的高可用和高性能的数据应用系统提供了分布式数据库解决方案、商业智能和数据仓库解决方案、数据集成服务解决方案、以及超越关系数据库的应用解决方案(如XML数据管理、空间数据管理、云部署、大数据)等。1234567企业版工作组版开发者版移动版标准版Web版学习版SQLServer的版本1234567企业版工作组版开发者版移动版标准版Web版学习版SQLServer的版本1234567企业版工作组版开发者版移动版标准版Web版学习版SQLServer的版本Oracle(甲骨文)简介诞生于20世纪70年代,成型于20世纪80年代,快速发展于20世纪90年代。1998年发布的Oracle8i(internet)2001年发布的Oracle9i2003年发布的Oracle10g(grid)2007年发布的Oracle11g2013年发布的Oracle12c(cloud)……MySQL简介MySQL是目前最流行的关系数据库管理系统之一,它的一个很重要的标签是“开源”。MySQL由瑞典MySQLAB公司开发,2008年被SUN公司收购,2010年Oracle公司又收购了SUN公司,所以目前MySQL属于Oracle旗下的产品。MySQL由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为后台数据库。MySQL分为社区版和商业版,社区版是完全免费的,Oracle不为其提供任何官方技术支持;商业版则是要付费的,当然也会有更好的可靠性、安全性和更高的性能。关系数据库标准语言SQL简介SQL的历史SQL的特点SQL是一种一体化的语言,它包括了数据定义、数据查询、数据操纵和数据控制等方面的功能,它可以完成数据库活动中的全部工作。SQL语言是一种高度非过程化的语言。SQL语言非常简洁。SQL语言可以直接以命令方式交互使用,也可以嵌入到程序设计语言中以程序方式使用。关系数据库的三层模式结构关系数据库的三层模式结构SQL视图1基本表1概念模式存储模式SQL存储基本表2基本表3基本表4视图2用户外部模式关系数据库和SQL均支持三层模式结构。关系数据库的三层模式结构SQL视图1基本表1概念模式存储模式SQL存储基本表2基本表3基本表4视图2用户外部模式关系数据库和SQL均支持三层模式结构。关系数据库的三层模式结构SQL视图1基本表1概念模式存储模式SQL存储基本表2基本表3基本表4视图2用户外部模式关系数据库和SQL均支持三层模式结构。关系数据库的三层模式结构SQL视图1基本表1概念模式存储模式SQL存储基本表2基本表3基本表4视图2用户外部模式关系数据库和SQL均支持三层模式结构。关系数据库的三层模式结构SQL视图1基本表1概念模式存储模式SQL存储基本表2基本表3基本表4视图2用户外部模式关系数据库和SQL均支持三层模式结构。关系数据库的三层模式结构SQL视图1基本表1概念模式存储模式SQL存储基本表2基本表3基本表4视图2用户外部模式关系数据库和SQL均支持三层模式结构。关系数据库的三层模式结构SQL视图1基本表1概念模式存储模式SQL存储基本表2基本表3基本表4视图2用户外部模式关系数据库和SQL均支持三层模式结构。基本表、视图、SQL存储。关系数据库的三层模式结构SQL视图1基本表1概念模式存储模式SQL存储基本表2基本表3基本表4视图2用户外部模式关系数据库和SQL均支持三层模式结构。基本表、视图、SQL存储。外部数据库、概念数据库、存储数据库。SQLServer的数据库存储结构北京信息科技大学车蕾SQL用户SQLServer系统数据库master数据库tempdb数据库model数据库……视图基本表基本表基本表视图用户数据库……用户数据库……物理文件……物理文件物理文件SQLServer的数据库存储结构SQL用户SQLServer系统数据库master数据库tempdb数据库model数据库……视图基本表基本表基本表视图用户数据库……用户数据库……物理文件……物理文件物理文件SQLServer的数据库存储结构SQLServer的数据库存储结构SQL用户SQLServer系统数据库master数据库tempdb数据库model数据库……视图基本表基本表基本表视图用户数据库……用户数据库……物理文件……物理文件物理文件每个SQLServer有3个基本系统数据库用于支持它的运行和管理SQL用户SQLServer系统数据库master数据库tempdb数据库model数据库……视图基本表基本表基本表视图用户数据库……用户数据库……物理文件……物理文件物理文件SQLServer的数据库存储结构所有用户对象(包括基本表、视图、存储过程、触发器等)都建立在用户数据库中master数据库用于存储所有系统级信息,包括:所有的其他数据库(如建立的用户数据库)的信息(包括数据库的设置、对应的操作系统文件名称和位置等)所有数据库注册用户的信息系统配置信息等tempdb数据库用于保存所有的临时表和临时存储过程,它还可以满足任何其它的临时存储要求。在SQLServer每次启动时都重新创建全局资源空间管理model数据库model数据库必须一直存在于SQLServer系统中model数据库是一个模板数据库SQL用户SQLServer系统数据库master数据库tempdb数据库model数据库……视图基本表基本表基本表视图用户数据库……用户数据库……物理文件……物理文件物理文件SQLServer的数据库存储结构SQL用户SQLServer系统数据库master数据库tempdb数据库model数据库……视图基本表基本表基本表视图用户数据库……用户数据库……物理文件……物理文件物理文件数据库的物理存储基本是由SQLServer自动管理的。SQLServer的数据库存储结构某大型企业总部在北京,在全国各地有很多分公司,由于各分公司的业务模式相近,因此各分公司的数据库中都有一些相同的基础数据、数据库对象、角色等,为了使建立数据库的工作简单、正确,请以SQLServer为例给出最佳的解决方案。?????????课后思考题???SQLServer的用户数据库SQLServer的用户数据库向操作系统申请存储空间用户数据存储在用户数据库中用来存储数据库数据的操作系统文件可以分为3类}主数据文件次数据文件事务日志文件数据文件Log(file)
.ldfDatabaseData(file)
.mdfor.ndf主数据文件Log(file)
.ldfDatabaseData(file)
.mdfor.ndf存储数据库的启动信息和系统表,也可以用来存储用户数据。每个数据库有且仅有一个主数据文件。建议主数据文件使用.mdf扩展名。次数据文件Log(file)
.ldfDatabaseData(file)
.mdfor.ndf保存所有主数据文件中容纳不下的数据。次数据文件次数据文件Log(file)
.ldfDatabaseData(file)
.mdfor.ndf保存所有主数据文件中容纳不下的数据。使用多个独立磁盘驱动器上的次数据文件,还可以将一个数据库中的数据分布在多个物理磁盘上。每个数据库有0至多个次数据文件。次数据文件次数据文件Log(file)
.ldfDatabaseData(file)
.mdfor.ndf保存所有主数据文件中容纳不下的数据。使用多个独立磁盘驱动器上的次数据文件,还可以将一个数据库中的数据分布在多个物理磁盘上。每个数据库有0至多个次数据文件。建议次数据文件使用.ndf扩展名。Log(file)
.ldfDatabaseData(file)
.mdfor.ndf事务日志文件保存恢复数据库的日志信息。建议事务日志文件使用.ldf扩展名。每个数据库有1至多个事务日志文件。事务日志文件a.mdfb.ndfc.ndfd.ndfx.ldfy.ldf创建数据库创建数据库创建数据库创建数据库创建数据库c创建数据库创建数据库v创建数据库创建数据库创建数据库关系数据模型关系数据模型123关系数据模型的3个要素?关系的形式定义关系的基本性质4关系模型的数据结构和基本术语关系数据模型的3个要素和关系的形式定义关系数据模型的3个要素关系数据模型的三个要素关系数结构关系操作集合关系完整性约束关系数据结构关系数据结构非常简单,在关系数据模型中,现实世界中的实体及实体与实体之间的联系均用关系来表示。从逻辑或用户的观点来看,关系就是二维表。关系操作集合传统的集合运算
并(Union)交(Intersection)差(Difference)广义笛卡尔积(ExtendedCartesianProduct)
专门的关系运算选择(Select)投影(Project)连接(Join)除(Divide)有关的数据操作插入(Insert)删除(Delete)修改(Update)
关系模型的基本运算;是为了满足关系数据库的操作需求而增加的。关系操作集合关系是以集合的方式操作的,即操作的对象是元组的集合,操作的结果也是元组的集合。关系操作通过关系语言实现,关系语言的特点是高度非过程化,所谓非过程化是指:用户不用关心数据的存取路径和存取过程,只需要提出数据请求,然后数据库管理系统会以经过优化的机制和方法来完成用户提出的操作。用户没有必要再编写循环或递归程序来完成数据的重复操作。关系操作关系的操作能力可以用代数方式和逻辑方式来表示:代数方式是通过关系代数对关系的运算来表达查询要求的方式。逻辑方式是通过关系演算、用谓词表达对关系的查询要求的方式。关系数据语言分为三类:关系代数语言、关系演算语言以及具有关系代数和关系演算双重特点的SQL语言。
关系完整性约束在数据库中数据完整性是指保证数据正确的特性数据完整性是一种语义概念,它包括两方面的内容:与现实世界中应用需求的数据的相容性和正确性数据库内数据之间的相容性和正确性在关系数据模型中一般将数据完整性分为三类实体完整性参照完整性用户定义完整性关系的形式定义关系的形式定义笛卡儿积定义:设D1,D2,…,Dn为任意集合,定义D1,D2,…,Dn的笛卡儿积为:其中每一个元素(d1,d2,…,dn)叫作一个n元组,简称元组,元组中每一个di叫作元组的一个分量。笛卡儿积定义例如,设D1={P2,P4,P7,P9}D2={内存,硬盘,鼠标}则D1
D2={(P2,内存),(P2,硬盘),(P2,鼠标),
(P4,内存),(P4,硬盘),(P4,鼠标),(P7,内存),(P7,硬盘),(P7,鼠标),
(P9,内存),(P9,硬盘),(P9,鼠标)}笛卡儿积定义关系的形式定义笛卡儿积定义关系的形式定义:笛卡儿积D1×D2…×Dn的任意一个子集称为D1,D2,…,Dn上的一个n元关系。关系的形式定义笛卡尔积和关系举例则D1
D2={(P2,内存),(P2,硬盘),(P2,鼠标),
(P4,内存),(P4,硬盘),(P4,鼠标),(P7,内存),(P7,硬盘),(P7,鼠标),
(P9,内存),(P9,硬盘),(P9,鼠标)}一个关系R={(P2,内存),(P4,硬盘),
(P7,硬盘),(P9,鼠标)}关系的形式定义笛卡尔积和关系举例则D1
D2={(P2,内存),(P2,硬盘),(P2,鼠标),
(P4,内存),(P4,硬盘),(P4,鼠标),(P7,内存),(P7,硬盘),(P7,鼠标),
(P9,内存),(P9,硬盘),(P9,鼠标)}一个关系R={(P2,内存),(P4,硬盘),
(P7,硬盘),(P9,鼠标)}关系的形式定义笛卡尔积和关系举例则D1
D2={(P2,内存),(P2,硬盘),(P2,鼠标),
(P4,内存),(P4,硬盘),(P4,鼠标),(P7,内存),(P7,硬盘),(P7,鼠标),
(P9,内存),(P9,硬盘),(P9,鼠标)}一个关系R={(P2,内存),(P4,硬盘),
(P7,硬盘),(P9,鼠标)}关系的形式定义需要说明以下两点:①关系是元组的集合,集合(关系)中的元素(元组)是无序的;需要说明以下两点:①关系是元组的集合,集合(关系)中的元素(元组)是无序的;而元组不是分量di的集合,元组中的分量是有序的。例如,在关系中(a,b)≠(b,a),但在集合中{a,b}={b,a}。②若一个关系的元组个数是无限的,则该关系称为无限关系,否则称为有限关系。在数据库中只考虑有限关系。84关系的基本性质85关系的基本性质(1)每一分量必须是不可分的最小数据项,即每个属性都是不可再分解的,这是关系数据库对关系的最基本的限定。
86关系的基本性质(2)列的个数和每列的数据类型是固定的,即每一列中的分量是同类型的数据,来自同一个值域。仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆30087关系的基本性质(3)不同的列可以出自同一个值域,每一列称为属性,每个属性要给予不同的属性名。仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆30088关系的基本性质(3)不同的列可以出自同一个值域,每一列称为属性,每个属性要给予不同的属性名。仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆30089关系的基本性质(4)列的顺序是无关紧要的,即列的次序可以任意交换,但一定是整体交换,属性名和属性值必须作为整列同时交换。仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆300仓库号面积城市WH1500北京WH2450上海WH3200广州WH4300重庆90关系的基本性质(5)行的顺序是无关紧要的,即行的次序可以任意交换。仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆300仓库号城市面积WH3广州200WH2上海450WH1北京500WH4重庆30091关系的基本性质(6)元组不可以重复,即在一个关系中任意两个元组不能完全一样。仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆300WH3广州200
92关系的基本性质每一分量必须是不可分的最小数据项,即每个属性都是不可再分解的,这是关系数据库对关系的最基本的限定。列的个数和每列的数据类型是固定的,即每一列中的分量是同类型的数据,来自同一个值域。不同的列可以出自同一个值域,每一列称为属性,每个属性要给予不同的属性名。列的顺序是无关紧要的,即列的次序可以任意交换,但一定是整体交换,属性名和属性值必须作为整列同时交换。行的顺序是无关紧要的,即行的次序可以任意交换。元组不可以重复,即在一个关系中任意两个元组不能完全一样。关系模型的数据结构和基本术语关系关系就是二维表。二维表名就是关系名。仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆300关系名
仓库关系属性(attribute)二维表中的列称为属性;每个属性有一个名称,称为属性名;二维表中对应某一列的值称为属性值;二维表中列的个数称为关系的元数;一个二维表如果有n列,则称为n元关系。仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆300关系名
仓库关系属性属性名属性值
3元关系值域(domain)二维表中属性的取值范围称为值域。仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆300关系名
仓库关系大于零的整数面积属性的值域属性属性名属性值元组(tuple)二维表中的每一行数据称作是一个元组,它相当于一记录值。(WH1,北京,370)(WH2,上海,500)(WH3广州,200)仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆300关系名
仓库关系元组(集合)主关键字大于零的整数面积属性的值域属性属性名属性值分量(component)元组中的每一个属性值称为元组的一个分量,n元关系的每个元组有n个分量。例如:元组(WH2,上海,500)中对应于面积属性的分量是500,对应于仓库号属性的分量是WH2。仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆300分量(component)仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆300元组中的每一个属性值称为元组的一个分量,n元关系的每个元组有n个分量。例如:元组(WH2,上海,500)中对应于面积属性的分量是500,对应于仓库号属性的分量是WH2。关系模式(relationschema)二维表的结构称为关系模式,或者说关系模式就是二维表的表框架或结构,它相当于文件结构或记录结构。
设关系名为REL,其属性为A1,A2,…,An,则关系模式可以表示为:REL(A1,A2,…,An)
对于每个Ai(i=1,…,n)还包括属性到值域的映像,即属性的取值范围。可以用下划线标识出主关键字。关系模式可以表示为:仓库(仓库号,城市,面积)仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆300
关系模型(relationmodel)
关系数据库(relationdatabase)关系模型是所有的关系模式、属性名和关键字的汇集,是模式描述的对象。关系数据库是对应于一个关系模型的所有关系的集合。关系模型是“型”,而关系数据库是“值”。数据模型是相对稳定的,而数据库则是随时间不断变化(因为数据库中的记录在不断被更新)。候选关键字(candidatekey)如果一个属性集的值能唯一标识一个关系的元组而不含有多余的属性,则称该属性集为候选关键字。简言之,候选关键字是指能唯一标识一个关系的元组的最小属性集。候选关键字又称为候选码或候选键。在一个关系上可以有多个候选关键字。候选关键字——举例已知关系模式:银行(银行代码,银行名称,负责人),请确定其候选关键字。由于属性“银行代码”可以唯一标识银行关系中的元组,而此属性又是单属性,显然不包含多余的属性,所以银行关系的候选关键字有1个,即(银行代码)。候选关键字——举例已知关系模式:银行(银行代码,银行名称,电话,负责人),假设每家银行的电话互不相同,请确定其候选关键字。由于属性“银行代码”可以唯一标识银行关系中的元组,而此属性又是单属性,显然不包含多余的属性,所以“银行代码”是银行关系的候选关键字。又由于每家银行的电话互不相同,所以属性“电话”也可以唯一标识银行关系中的元组,而此属性也是单属性,显然不包含多余的属性,所以“电话”也是银行关系的候选关键字。所以银行关系的候选关键字有2个,即(银行代码)和(电话)。候选关键字——举例已知关系模式:贷款(银行代码,法人代码,贷款日期,贷款金额,贷款年限),请在下列语义环境中确定其候选关键字。(1)假设一个法人只能贷一次款,一家银行可以有多个法人贷款。该语义环境下,贷款关系的候选关键字有1个,即(法人代码)。候选关键字——举例已知关系模式:贷款(银行代码,法人代码,贷款日期,贷款金额,贷款年限),请在下列语义环境中确定其候选关键字。(2)假设一个法人可以在多家银行贷款,一家银行可以有多个法人贷款,但是一个法人只能在一家银行贷款一次。该语义环境下,贷款关系的候选关键字有1个,它由两个属性构成,即(银行代码,法人代码)。候选关键字——举例已知关系模式:贷款(银行代码,法人代码,贷款日期,贷款金额,贷款年限),请在下列语义环境中确定其候选关键字。(3)假设一个法人可以在多家银行贷款,一家银行可以有多个法人贷款,一个法人可以在同一家银行贷款多次,但是一个法人同一天只能在同一家银行贷款一次。该语义环境下,贷款关系的候选关键字有1个,它由三个属性构成,即(银行代码,法人代码,贷款日期)。主关键字(primarykey)有时一个关系中有多个候选关键字,这时就可以选择其中一个作为主关键字,简称关键字。主关键字也称为主码或主关键字。每一个关系都有且仅有一个主关键字。仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆300主属性(primaryattribute)包含在任一候选关键字中的属性称为主属性。已知关系模式:银行(银行代码,银行名称,电话,负责人),假设每家银行的电话互不相同。则银行关系的候选关键字有2个,即(银行代码)和(电话)。所以主属性有2个,为“银行代码”和“电话”。仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆300非主属性(nonprimaryattribute)不包含在任一候选关键字中的属性称为非主属性。仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆300外部关键字(foreignkey)如果一个属性集不是所在关系的关键字,但是是其他关系的关键字,则该属性集称为外部关键字。仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆300职工号仓库号工资E1WH21220E3WH11210E4WH21250E6WH31230E7WH11250主关键字外部关键字参照外部关键字(foreignkey)外部关键字并不一定要与参照的主关键字同名。不过,在实际应用当中,为了便于识别,当外部关键字与参照的主关键字属于不同关系时,往往给它们取相同的名字。仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆300职工号仓库号工资E1WH21220E3WH11210E4WH21250E6WH31230E7WH11250主关键字外部关键字参照参照关系(referecingrelation)
和被参照关系(referencedrelation)在关系数据库中可以通过外部关键字使两个关系关联,这种联系通常是一对多(1:n)的,其中主(父)关系(1方)称为被参照关系,从(子)关系(n方)称为参照关系。仓库号城市面积WH1北京500WH2上海450WH3广州200WH4重庆300职工号仓库号工资E1WH21220E3WH11210E4WH21250E6WH31230E7WH11250仓库被参照关系职工参照关系主关键字外部关键字参照讨论1、学生信息(学号、姓名、性别、身份证号)(1)候选关键字(2)主关键字(3)主属性(4)非主属性3、选课情况(学号、课程号、成绩)(1)候选关键字(2)主关键字(3)主属性(4)非主属性(5)外部关键字2、课程信息(课程号、课程名、学分)(1)候选关键字(2)主关键字(3)主属性(4)非主属性学号、身份证号学号或者身份证号学号、身份证号姓名、性别课程号课程号课程号课程名、学分(学号,课程号)(学号,课程号)学号、课程号成绩学号、课程号4、销售表(产品号,销售时间,销售数量)
语义:同一种产品可以在不同时间销售多次,同一个时间可以销售不同的产品,但在同一个时间对同一种产品只能销售一次。(1)主关键字产品号销售时间销售数量15.1216.1026.10讨论关系模型的完整性约束北京信息科技大学车蕾1234思考关系数据结构123关系操作集合关系完整性约束问题思考关系模型的3个要素是什么?关系模型的完整性约束123实体完整性约束参照完整性约束用户定义完整性约束关系模型的完整性约束123实体完整性约束参照完整性约束用户定义完整性约束实体完整性是要保证关系中的每个元组都是可识别和唯一的。实体完整性规则的具体内容是:若属性A是关系R的主属性,则属性A不可以为空值。实体完整性约束实体完整性约束
库存关系:库存(仓库号,器件号,存放数量)仓库号器件号存放数量WH1P21855WH112P419
实体完整性约束
仓库关系:仓库(仓库号,城市,面积)仓库号城市面积WH1北京370上海500WH3广州200
实体完整性约束
仓库关系:仓库(仓库号,城市,面积)仓库号城市面积WH1北京370WH2上海500WH2广州200
主关键字取值必须唯一空值是一个概念,它是指一个属性或变量还没有确定值,就是“不知道”或“没有确定”,它既不是数值0、也不是空字符串,是一个未知的量。空值用NULL表示。空值空值和任何值的运算结果都是空实体完整性是关系模型必须满足的完整性约束条件,也称作是关系的不变性。关系数据库管理系统可以用主关键字实现实体完整性约束,这是由关系系统自动支持的。(见第6章)主关键字中的属性(即主属性)不能取空值。如果主属性取空值,则意味着关系中的某个元组是不可标识的,即存在不可区分的实体,这与实体的定义也是矛盾的。实体完整性规则是针对关系而言的,而关系则对应一个现实世界中的实体集。现实世界中的实体是可区分的,它们具有某种标识特征;相应地,关系中的元组也是可区分的,在关系中用主关键字做唯一性标识。实体完整性几点说明关系模型的完整性约束123实体完整性约束参照完整性约束用户定义完整性约束参照完整性约束现实世界中的实体间存在着某种联系,而在关系模型中实体是用关系描述的、实体之间的联系也是用关系描述的,这样就自然存在着关系和关系之间的参照或引用。参照关系和被参照关系的定义设F是关系R的一个属性或属性组,但不是关系R的关键字,另外有主关键字为K的关系S。如果关系R的属性或属性组F与关系S的主关键字K相对应,则称F是关系R的外部关键字,并称关系R是参照关系、S是被参照关系(或目标关系)。关系R和S可以是同一个关系。FRKS参照完整性约束如果属性(或属性组)F是关系R的外部关键字,它与关系S的主关键字K相对应,则对于关系R中每个元组在属性(或属性组)F上的值必须为:或者取空值(F的每个属性均为空值);或者等于S中某个元组的主关键字的值。
仓库号职工仓库仓库号参照完整性约束如果属性(或属性组)F是关系R的外部关键字,它与关系S的主关键字K相对应,则对于关系R中每个元组在属性(或属性组)F上的值必须为:或者取空值(F的每个属性均为空值);或者等于S中某个元组的主关键字的值。仓库号职工仓库仓库号
WH7参照完整性约束的实现在关系系统中通过说明外部关键字来实现参照完整性,而说明外部关键字是通过说明引用的主关键字来实现的,也即通过说明外部关键字,关系系统则可以自动支持关系的参照完整性。(参见第6章)关系模型的完整性约束123实体完整性约束参照完整性约束用户定义完整性约束用户定义完整性约束手机号唯一身份证号唯一姓名不重复一种与应用密切相关的数据完整性约束,如:某个属性的值必须唯一用户定义完整性约束面积>0工资范围:2000~8000一种与应用密切相关的数据完整性约束,如:某个属性的值必须唯一某个属性的取值必须在某个范围内用户定义完整性约束一种与应用密切相关的数据完整性约束,如:某个属性的值必须唯一某个属性的取值必须在某个范围内某些属性值之间应该满足一定的函数关系等用户定义完整性约束一种与应用密切相关的数据完整性约束,如:某个属性的值必须唯一某个属性的取值必须在某个范围内某些属性值之间应该满足一定的函数关系等在用户定义完整性中最常见的是域完整性约束。用户定义完整性约束一种与应用密切相关的数据完整性约束,如:某个属性的值必须唯一某个属性的取值必须在某个范围内某些属性值之间应该满足一定的函数关系等在用户定义完整性中最常见的是域完整性约束。用户完整性约束的定义方式详见第6章。完整性约束的作用插入!实体完整性更新!参照完整性完整性约束的作用删除!用户定义完整性关系模型的完整性约束123插入操作检查的完整性约束?删除操作检查的完整性约束?更新操作检查的完整性约束?插入操作检查的完整性约束?实体完整性约束插入操作检查的完整性约束?实体完整性约束主属性不能为NULL插入操作检查的完整性约束?实体完整性约束主关键字唯一插入操作检查的完整性约束?实体完整性约束插入操作检查的完整性约束?实体完整性约束被参照表参照表插入操作检查的完整性约束?参照完整性约束被参照表参照表插入操作检查的完整性约束?参照完整性约束向被参照关系插入元组,无须检查参照完整性被参照表参照表插入操作检查的完整性约束?参照完整性约束向被参照关系插入元组,无须检查参照完整性插入操作检查的完整性约束?参照完整性约束向参照关系插入元组,则要检查外部关键字属性上的值是否在被参照关系中存在对应的主关键字的值,如果存在则可以执行插入操作,否则不允许执行插入操作。被参照表参照表插入操作检查的完整性约束?参照完整性约束插入元组的外部关键字允许为空值,则当外部关键子是空值时也允许执行插入操作。被参照表参照表插入操作检查的完整性约束?实体完整性约束参照完整性约束插入操作检查的完整性约束?用户定义完整性约束插入的元组在相应的属性值上要遵守用户定义完整性规则。插入操作检查的完整性约束?实体完整性约束参照完整性约束用户定义完整性约束关系模型的完整性约束123插入操作检查的完整性约束?删除操作检查的完整性约束?更新操作检查的完整性约束?删除操作检查的完整性约束?实体完整性约束删除操作检查的完整性约束?用户完整性约束2.删除操作检查的完整性约束?实体完整性约束?用户定义完整性约束?2.删除操作检查的完整性约束?参照完整性约束小实验(SQLServer)部门号部门名B1XB2YB3Z职工号职工名部门号Z1AB1Z2CB2部门表职工表外部关键字部门号部门名B1XB2YB3Z职工号职工名部门号Z1AB1Z2CB2部门表职工表外部关键字小实验(SQLServer)createdatabase部门库GoUse部门库gocreatetable部门表(
部门号char(2)primarykey,
部门名char(1))gocreatetable职工表(
职工号char(2)primarykey,
职工名char(1),
部门号char(2)default'B3'foreignkeyreferences部门表)goinsertinto部门表values('B1','X')insertinto部门表values('B2','Y')insertinto部门表values('B3','Z')goinsertinto职工表values('Z1','A','B1')insertinto职工表values('Z2','C','B2')createdatabase部门库GoUse部门库gocreatetable部门表(
部门号char(2)primarykey,
部门名char(1))gocreatetable职工表(
职工号char(2)primarykey,
职工名char(1),
部门号char(2)default'B3'foreignkeyreferences部门表)goinsertinto部门表values('B1','X')insertinto部门表values('B2','Y')insertinto部门表values('B3','Z')goinsertinto职工表values('Z1','A','B1')insertinto职工表values('Z2','C','B2')createdatabase部门库GoUse部门库gocreatetable部门表(
部门号char(2)primarykey,
部门名char(1))gocreatetable职工表(
职工号char(2)primarykey,
职工名char(1),
部门号char(2)default'B3'foreignkeyreferences部门表)goinsertinto部门表values('B1','X')insertinto部门表values('B2','Y')insertinto部门表values('B3','Z')goinsertinto职工表values('Z1','A','B1')insertinto职工表values('Z2','C','B2')168createdatabase部门库GoUse部门库gocreatetable部门表(
部门号char(2)primarykey,
部门名char(1))gocreatetable职工表(
职工号char(2)primarykey,
职工名char(1),
部门号char(2)default'B3'foreignkeyreferences部门表)goinsertinto部门表values('B1','X')insertinto部门表values('B2','Y')insertinto部门表values('B3','Z')goinsertinto职工表values('Z1','A','B1')insertinto职工表values('Z2','C','B2')169createdatabase部门库GoUse部门库gocreatetable部门表(
部门号char(2)primarykey,
部门名char(1))gocreatetable职工表(
职工号char(2)primarykey,
职工名char(1),
部门号char(2)default'B3'foreignkeyreferences部门表)goinsertinto部门表values('B1','X')insertinto部门表values('B2','Y')insertinto部门表values('B3','Z')goinsertinto职工表values('Z1','A','B1')insertinto职工表values('Z2','C','B2')170删除规则设置测试1删除规则设置部门号部门名B2YB3Z职工号职工名部门号Z1AB1Z2CB2删除规则设置1、设置如右图2、保存设置3、执行:DETELEFROM部门表WHERE部门号='B1'4、执行成功。5、执行结果:测试1删除规则设置1、设置如右图2、保存设置3、执行:DETELEFROM部门表WHERE部门号='B1'4、无法执行,违反参照完整性约束。测试2删除规则设置1、设置如右图2、保存设置3、执行:DETELEFROM部门表WHERE部门号='B1'4、执行成功。5、执行结果:部门号部门名B2YB3Z职工号职工名部门号Z2CB2测试3删除规则设置1、设置如右图2、保存设置3、执行:DETELEFROM部门表WHERE部门号='B1'4、执行成功。5、执行结果:部门号部门名B2YB3Z职工号职工名部门号Z1ANULLZ2CB2测试4删除规则设置1、设置如右图2、保存设置3、执行:DETELEFROM部门表WHERE部门号='B1'4、执行成功。5、执行结果:部门号部门名B2YB3Z职工号职工名部门号Z1AB3Z2CB2测试53.删除操作检查的完整性约束?参照完整性约束关系模型的完整性约束123插入操作检查的完整性约束?删除操作检查的完整性约束?更新操作检查的完整性约束?3.更新操作检查的完整性约束?更新可看作先删除旧元组、再插入新元组3.更新操作检查的完整性约束?实体完整性约束参照完整性约束用户定义完整性约束实体完整性约束参照完整性约束用户定义完整性约束插入操作检查的完整性约束?123删除操作检查的完整性约束?更新操作检查的完整性约束?实体完整性约束参照完整性约束用户定义完整性约束实体完整性约束参照完整性约束用户定义完整性约束{{{总结关系代数关系代数123基本概念和几个符号?传统的集合运算专门的关系运算4基本运算及变换关系代数的基本概念和几个符号基本概念和几个符号关系代数的运算对象是关系,关系代数的运算结果也是关系。与一般的运算一样,运算对象、运算符和运算结果也是关系代数的三个要素。关系代数的运算可以分为两大类传统的集合运算
专门的关系运算
关系代数用到的运算符几个概念和专门的符号元组的分量元组的连串元组中属性的映像集元组的分量设有关系模式R(A1,A2,…,An)r∈R表示r是R的一个元组r.Ai或r[Ai]表示r这个元组中相应于属性Ai的一个分量例如,假设R是仓库关系,r=(’WH1’,’北京’,370)是仓库关系的一个元组,则r∈R
r.仓库号或r[仓库号]为"WH1"。元组的连串设R为m元关系,S为n元关系,并且
r=(r1,r2,…,rm)∈Rs=(s1,s2,…,sn)∈S则称为元组的连串。这是一个(m+n)元组,前m个分量为R中的一个m元组,后n个分量为S中的一个n元组。设r=(‘WH1’,’北京’,500),s=(‘WH1’,’E3’,’李丽’,5500)则r和s的连串为:(‘WH1’,’北京’,500,‘WH1’,’E3’,’李丽’,5500)元组中属性的映像集设有关系模式R(X,Y),其中X、Y可以是单个属性,也可以是属性集,定义当X取值为x时,x在R中的映象集为:
设有如表所示的订购单关系,把它命名为R,并且进一步设X为属性经手人,Y为属性集{订购单号,供货方,订购日期},则当X取值为E3时:Yx={(OR67,S7,2009/06/23),(OR79,S4,2009/06/13),(OR90,NULL,NULL),(OR91,S3,2009/07/13)}Yx=映像集的例子传统的集合运算关系代数123基本概念和几个符号?传统的集合运算专门的关系运算4基本运算及变换传统的集合运算集合的并运算集合的交运算集合的差运算集合的广义笛卡尔积运算集合的并运算
RS集合的交运算
RS集合的差运算
RS集合的并、交、差运算示意两个关系的属性不一定完全一样,但是一定列数相同、对应列出自同一值域。集合的广义笛卡尔积运算
设R和S是两个关系,如果R是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第1课 中华文明的起源与早期国家说课稿2025学年高中历史统编版2019必修中外历史纲要上-统编版2019
- 时间基准的核心力量:低相噪铷原子振荡时钟的多领域应用解析
- 试论演员如何通过肢体语言传达情感-以《青蛇》为例
- 健康体检报告解读服务规范
- 造林学考试题库及答案
- 2026年施工现场光污染控制措施
- 2026年气动与液压原理在CNC中应用培训
- 江苏省盐城市七校联盟2025-2026学年高三1月月考语文试题(解析版)
- 成人高考政治试题及答案
- 2026语文高考试题及答案
- 2026江苏扬州市宝应城市发展控股有限公司招聘9人笔试参考题库及答案解析
- 2025年入团考试题及答案
- 传染病防控中的伦理与科技应用
- JBT 7361-2023 滚动轴承 零件硬度试验方法 (正式版)
- GB/T 30727-2014固体生物质燃料发热量测定方法
- GB/T 2828.10-2010计数抽样检验程序第10部分:GB/T 2828计数抽样检验系列标准导则
- 络用丝瓜栽培技术
- 常见的技术图样课件
- 航空气象-102雷达回波的识别课件
- 出版物发行员考试题库及答案
- 内部控制自我评估CSA技术与应用课件
评论
0/150
提交评论