第二章关系数据库

基本知识点

    本章系统地讲解了关系数据库的重要概念,并着重对关系模型进行了阐述。

    关系模型和关系数据库是《数据库系统概论》一书的重点,在全书中占有较大的篇幅。因此掌握本章的关键内容是学习后续章节的基础。

    ①需要了解的:了解关系数据库理论的产生和发展的过程;了解关系数据库产品的发展及沿革;了解关系演算的概念,这部分内容不包括在本科教学大纲,读写可根据自身选择了解。

    详见第一章绪论。需要补充内容有:范式理论与E-R模型。

2.1.1范式理论

    关系模型原理的核心是“规范化”概念,规范化是把数据库组织成在保持存储数据完整性的同时最小化冗余数据的结构的过程。规范化的数据库是符合关系模型规则的数据库,通常把这些规则称为范式。

    范式是符合某一种级别的关系模型的集合。关系数据库中的关系必须满足一定的要求即满足不同的范式,目前关系数据库有6种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、Boyce-Codd范式(BCNF)、第四范式(4NF)、和第五范式(5NF)。在实际的数据设计中,通常需要用到的是前3类范式,下面将以此介绍。

    第一范式

    第一范式是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。第一范式包括下列指导原则。

    □    数组的每个属性只能包含一个值。

    □    关系中的每个数组必须包含相同数量的值。

    □    关系中的每个数组一定不能相同。

注意:第一范式是对关系模型的最起码的要求,是所有范式的基础,不满足第一范式的数据模式不能称为关系数据库。

    如表1-1所示,以【学生信息】表为例,其中的最后一个数组违反了第一范式。在最后一个数组中,“姓名”属性包含了3个值。“入学时间”也包含了3个值,也就是说把原本的3跳记录放进了一条记录的位置。

表1-1    违反第一范式的关系

姓名性别入学时间
刘凯2003
戴飞2004
王鹏通,张明,熊建军2004,2005,2006

    如果要将这些数据规格化,就必须使每个属性只能包含一个值,每个数组包含相同数量的值,并且每个数组各不相同,如表1-2所示。这时的数据才符合第一范式,简而言之,第一范式就是无重复的列。

表1-2    符合第一范式的关系


姓名性别入学时间
刘凯2003
戴飞2004
王鹏通2004
张明2005
熊建军2006

    第二范式

    如果一个数据表已经满足第一范式,而且该数据表中的任何一个非主键字段的数值都依赖于改数据表的主键字段,那么该数据表满足第二范式,即2NF。

    例如,在下面的【项目计划】表中,数据表的主键是项目编号。其中“负责人部门”字段完全信赖与“负责人”字段,而不是取决于项目编号,因此,改数据表不满足第二范式。但该数据表中的其他字段都完全依赖于该表的主键字段“项目编号”,因此,可以将该数据表拆分为【项目计划】表和【部门数据】表,以满足第二范式,如图1-1所示。

QQ图片20201125184617.png

图1-1    第二范式

   第三范式

    如果一个数据表已经满足第二范式,而且该数据表中的任何两个非主键字段的数据值之间不存在函数依赖关系,那么该数据表满足第三范式,即3NF。

    例如,在【员工数据】表中,“奖金”字段的数年值是“工资”字段的10%,因此,这两个字段之间存在着函数依赖关系,所以该数据表不满足第三范式。可以将“奖金”字段从该数据表中去掉,以满足第三范式,如图1-2所示。

QQ图片20201125201044.png

图1-2    第三范式

    实际上,第三范式就是要求不要在数据库中存储可以通过简单计算得出的数据。这样不但可以节省存储空间,而且在拥有函数依赖的一方发生变动时,避免了修改成倍数据的麻烦,同时也避免了在这种修改过程中可能造成的认为错误。

    通过前面3种范式的对比可以看出,数据表规范化的程度越高,数据冗余度就越少,同时造成人为错误的可能性也就越小;同时,规范化的程度越高,在查询检索时需要做的关联等工作就越多,数据库在操作过程上需要访问的数据表以及之间的关联就越多。因此,在数据库设计的规范化过程中,需要根据数据库需求的实际情况,选择一个折中的规范化程序。

2.1.2 E-R模型

    在数据库设计过程中,数据建模是第一步,它将确定要在数据库中保留什么信息和确认各种信息之间存在什么联系。这需要使用E-R数据模型来描述和定义。E-R(Entity-Relationship)数据模型,即实体-关系数据模型,是于1976年提出的。它是早期的语义数据模型。该数据模型最初提出是用于数据库设计的,是面向问题的概念性数据模型。它用简单的图形反映了现实世界中存在的事物或数据及它们之间的关系。

    实体模型

    实体是观念世界中描述客观事物的概念可以是具体的事物,例如一本书、一条街、一朵鲜花等;也可以是抽象的事物,例如一个容量、一个城市、一种气体或一种感受等。同一类实体的所有实例就构成该对象的实体集。实体集是实体的集合,由该集合中实体的结构或形式表示,而实例则是实体集中某个特例,如学号为20041010001的学生是“学生信息”实体集中的一个实例,通过其属性值表示。

    通常实体集中有多个实例。例如,数据库中存储的每个学生信息都是“学生信息”实体集中的实例,如图1-3所示。

QQ图片20201125203702.png

图1-3    实体集合实例

    关系模型

    实体之间是通过关联进行联系的,E-R模型中包括了关系集和关系实例的额概念。关系集反映出实体集之间的关联,二关联实例则是用来关联实体实例的。关联的度是指它所关联的实体数目,大多数的关系都是二元的。有3种二元关系:1:1、1:N、N:M,分别用来表示实体间一对一、一对多、多对多关系。



    ②需要牢固掌握的:掌握关系模型的三个组成部分及各部分所包括的主要内容,牢固掌握关系数据结构及其形式化定义,关系的三类完整性约束的概念。

2.2.1关系模型的三个组成部分

    关系数据结构

    (1)域(domain)

    域是一组具有相同数据类型的值得集合。

    (2)笛卡儿积(cartesian product)

    给定一组域D1,D2,……,Dn,允许其中某些域是有相同的。这组域的笛卡儿积为

    

    (3)关系(relation)

    在域D1,D2,……,Dn上笛卡儿积D1×D2×……×Dn的子集称为关系,表示为

    

    (4)元组:关系中的每个元素是关系中的元组。

    (5)属性:关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性。

    (6)候选码:若关系中的某一属性组的值能够唯一地表示一个元组,而其子集不能,则称该属性组为候选码。

    (7)主码:若一个关系有多个候选码,则选定其中一个为主码。

    (8)外码:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外部码,简称外码。

    (9)关系模型:关系的描述简称为关系模型。它可以形式化地表示为

其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。

    关系是关系模型在某一时刻的状态或内容。

    (10)关系数据库:关系数据库也有型和值之分。关系数据库的型称为关系数据库模式,是对关系数据库的描述,它包括若干域的定义以及在这些域上定义的若干关系模式。关系数据库的值是这些关系模型在某一时刻对应的关系的集合,通常就称为关系数据库。

    关系操作集合

    关系模型中常用的关系操作包括查询(query)操作和插入(insert)、删除(delete)、修改(update)操作两大类。

    关系的查询表达能力很强,是关系操作中最重要的部分。查询操作又可分为选择(select)、投影(project)、连接(join)、除(divide)、并(union)、差(except)、交(intersection)、笛卡儿积等。其中选择、投影、并、差、笛卡尔积是5种基本操作,其他操作可以用基本操作来定义和导出。

    传统的集合运算

    传统的集合运算是二目运算,包括并、差、交、笛卡儿积4中运算。

    设关系R和关系S具有相同数目的n(即两个关系都有n个属性),且相应的属性取自同一个域,t是元组变量,t∈R表示t是R的一个元组。

    可以定义并、差、交、笛卡儿积运算如下。

    (1)并(union)

    关系R与关系S的并记作:

    (2)差(except)

    关系R与关系S的差记作:

    (3)交(intersection)

    关系R与关系S的交记作:

    (4)笛卡儿积(cartesian product)

    这里的笛卡儿积严格地讲应该是广义的笛卡儿积,因为这里笛卡儿积地元素是元组。

    两个分别为n目和m目的关系S和R的笛卡儿积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的笛卡儿积有k1×k2个元组。记作


    专门的集合运算

    (1)选择(selection)选择又称为限制(restriction)。它是在关系R中选择满足给定条件的诸元组,记作

其中F表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假”。

    

aHR0cDovL3Nwb2MuY2NudS5lZHUuY24vdWVkaXRvci9qc3AvdXBsb2FkL2ltYWdlLzIwMjAwMzE3LzE1ODQ0MzYzMzczODIwNDA5NDkucG5n.pngaHR0cDovL3Nwb2MuY2NudS5lZHUuY24vdWVkaXRvci9qc3AvdXBsb2FkL2ltYWdlLzIwMjAwMzE3LzE1ODQ0MzYzMzczODIwNDA5NDkucG5n.png

    (2)投影(projection)

    关系R上的投影是从R中选择出若干属性列组成新的关系。记

其中A为R的属性列。

    投影是从列的角度进行选择。

aHR0cDovL3Nwb2MuY2NudS5lZHUuY24vdWVkaXRvci9qc3AvdXBsb2FkL2ltYWdlLzIwMjAwMzE3LzE1ODQ0MzYzNzAwNDEwNTMzODYucG5n.pngaHR0cDovL3Nwb2MuY2NudS5lZHUuY24vdWVkaXRvci9qc3AvdXBsb2FkL2ltYWdlLzIwMjAwMzE3LzE1ODQ0MzYzNzAwNDEwNTMzODYucG5n.png

    (3)连接(join)

    连接也称为θ连接。它是从两个关系的笛卡儿积中选取属性间满足一定条件的元组。记作

png.png

其中,A和B分别为R和上列数相等且可比的属性组,θ是比较运算符。连接运算从R和S的笛卡尔积R×S中选取R关系在A属性组上的值与B属性组上的值满足比较关系θ的元组。

     θ为“=”的连接运算称为等值连接。它是从关系R与S的广义笛卡儿积中选取A、B属性值相等的那些元组,即等值连接记作

png (1).png

    自然连接是一种特殊的等值连接。它要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉。即若R和S中具有相同的属性组B,U为R和S的全体属性集合,则自然连接可记作

    一般的连接操作是从行的角度进行运算,但自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。

aHR0cDovL3Nwb2MuY2NudS5lZHUuY24vdWVkaXRvci9qc3AvdXBsb2FkL2ltYWdlLzIwMjAwMzE3LzE1ODQ0MzY1ODkyNzIwMDczOTIucG5n.pngaHR0cDovL3Nwb2MuY2NudS5lZHUuY24vdWVkaXRvci9qc3AvdXBsb2FkL2ltYWdlLzIwMjAwMzE3LzE1ODQ0MzY1ODkyNzIwMDczOTIucG5n.png

    (4)除运算(division)

    设关系R除以关系S的结果为T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组都所有组合都在R中。

    下面用象集来定义除法:

    给定关系R(X,Y)和S(Y,Z),其中X、Y、Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。

    R和S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性上的投影:元组在X上的分量值x的象集Yx包含S在Y上的投影。记作

其中Yx为x在R中的象集,x=tr[X]。

    除运算是同时从行和列角度进行运算。

aHR0cDovL3Nwb2MuY2NudS5lZHUuY24vdWVkaXRvci9qc3AvdXBsb2FkL2ltYWdlLzIwMjAwMzE3LzE1ODQ0MzY0MTk1MTgwMTkyNTgucG5n.pngaHR0cDovL3Nwb2MuY2NudS5lZHUuY24vdWVkaXRvci9qc3AvdXBsb2FkL2ltYWdlLzIwMjAwMzE3LzE1ODQ0MzY0MTk1MTgwMTkyNTgucG5n.png


    关系完整性约束

    实体完整性

    实体完整性规则    若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值(null value)。所谓空值就是“不知道”或“不存在”或“无意义”的值。

    对实体完整性规则说明如下:

    (1)实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。例如学生关系对应学生的集合。

    (2)现实世界中的实体是可区分的,即他们具有某种唯一性标识。例如每个学生都是独立的个体,是不一样的。

    (3)相应地,关系模型中以主码作为唯一性标识。

    (4)主码中的属性即主属性不能取空值。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体。

    参照完整性

    若属性(或属性组)F是基本关系的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的取值必须:

    □ 或者取空值(F中每个属性均为空值);

    □ 或者的等于S中某个元组的主码值。

    用户定义的完整性

    用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。



    ③需要举一反三的:关系代数,关系代数中的各种运算,包括并、交、差、选择、投影、连接、除及广义笛卡尔积等。


    ④难点:本章的难点在于关系代数。



2.3.1补充习题

1.选择题

(1)关于关系模型,下列叙述不正确的是(    )。

A.一个关系至少要有一个候选码    B.列的次序可以任意交换    C.行的次序可以任意交换    D.一个列的值可以来自不同的域

(2)下列说法正确的是(    )。

A.候选码都可以唯一地标识一个元组    B.候选码中只能包含一个属性    C.主属性可以取空值    D.关系的外码不可以取空值

(3)关系操作中,操作的对象和结果都是(    )。

A.记录    B.集合    C.元组    D.列

(4)假设存在一张职工表,包含“性别”属性,要求这个属性的值只能取“男”或“女”,这属于(    )。

A.实体完整性    B.参照完整性    C.用户定义的完整性    D.关系不变性

(5)有两个关系R(A,B,C)和S(B,C,D),将R和S进行自然连接,得到的结果包含几个列(    )。

A.6    B.4    C.5    D.2


2.判断题

(1)关系模型的一个特点是,实体以及实体之间的联系都可以使用相同的结果类型来表示。(    )

(2)关系模型中,非主属性不可能出现在任何候选码中。(    )

(3)在左外连接中,保留的是左边关系中所有的元组。    (    )

(4)关系模型是对关系的描述,关系是关系模式在某一时刻的状态或内容。(    )


3.填空题

(1)在关系模型中,关系操作包含查询、                                    等。

(2)关系模型的三类完整性约束是指                                    

(3)关系模型包括8种查询操作,其中                        、并、            和笛卡尔积是5中基本操作,其他操作可以用基本操作定义和导出。

(4)职工(职工号、姓名、年龄、部门号)和部门(部门号、部门名称)存在引用关系,其中            是参照关系,            是外码。


4.问答题

(1)解释候选码和主码以及它们之间的关系。

(2)说明什么是关系完备性,关系演算在语言表达能力上市完备的吗?


5.综合题

(1)假设有一个数据库包含以下关系模式:

Teacher(Tno,Tname,Tage,Tsex)/*主码下面加了下划线*/
Department(Dno,Dname,Tno)
Work(Tno,Dno,Year,Salary)

    教师表Teacher由教师代码(Tno)、教师名字(Tname)、教师年龄(Tage)、教师性别(Tsex)组成。

    系表Department由系代码(Dno)、系名(Dname)、系主任代码(Tno)组成。

    工作表Work由教师代码(Tno)、系代码(Dno)、入职年份(Year)、工资(Salary)组成。

    使用关系代数表示每个查询:

    ①列出工资超过5000的教师的不同年龄;

    ②查找不在计算机系工作的教师代码;

    ③系主任T1管辖范围内的所有教师姓名;

    ④假设对关系r,ρx(r)表示得到别名为x的一个相同的关系,系里每个教师都有工资,列出比D1系的所有教师工资都高的教师代码。

(2)考虑第(1)题秒速的数据库,每个关系包含的元组如下:

QQ图片20201209161206.png

    (左外连接与右外连接)使用关系代数完成以下查询并给出结果:

    ①列出所有教师的姓名以及所在的系名;

    ②列出所有系的名称以及包含的教师姓名。

(3)有两个关系S(A,B,C,D)和T(C,D,E,F),分别包括N1、N2个元组,N2>N1>0,对下列每个关系代数表达式,计算在使表达式有意义的情况下,可以得到的最大、最小元组的数目以及列的数目。

        ①1.png              ②2.png        ③3.png        ④4.png

        ⑤5.png        ⑥6.png    ⑦7.png       ⑧8.png


2.3.2补充习题答案

购买或注册会员即可查看。

已注册会员点击登录



参考文献:

[1]王珊,萨师煊.数据库系统概论(第五版)[M]. 北京:高等教育出版社, 2014.

[2]王珊,张俊.数据库系统概论(第五版)习题解析与实验指导[M]. 北京:高等教育出版社, 2015.

[3]郭郑州,陈军红.SQL Server 2008完全学习手册[M]. 北京:清华大学出版社, 2011. 

#转载请注明出处!
支付3元或购买VIP会员后,才能查看本内容!立即支付升级会员查询订单
快来制作你的简历吧 ,请猛戳这里→点击在线制作
宝塔服务器面板,一键全能部署及管理,送你3188元礼包。请猛戳这里→点我领取

本文标题:《第二章关系数据库》作者:xuanzhe
原文链接:https://blog.xuanzhe.club/?id=27
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

上一篇: 第一章绪论

相关文章

发表评论:
验证码

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

你好,朋友

真是美好的一天!

访客信息

  • IP: 52.90.49.108
  • 地点: United StatesVirginiaAshburn

毒鸡汤

  • API可调用次数不足...请尝试检查插件设置的APIKEY
  • 英语小句子

  • 木有了,杯具了...请尝试检查插件设置的APIKEY
  • 标签列表

    站点信息

    • 文章总数:48
    • 页面总数:2
    • 分类总数:15
    • 标签总数:22
    • 评论总数:6
    • 浏览总数:20147
    您好,欢迎到访网站!
    忘记密码

    精美句子

  • 木有了,杯具了...请尝试检查插件设置的APIKEY
  • 网站分类

    文章归档

    歌曲 - 歌手
    0:00