精华内容
下载资源
问答
  • 关系的基本运算只要分为两类,第一类是传统的集合操作:并、交、差、笛卡尔积(乘法)、笛卡尔积的逆运算(除法)。第二类是扩充的关系操作:投影(对关系的垂直分割)、选择(对关系的水平分割)、连接和自然连接...
  • 关系代数基本运算

    千次阅读 2016-02-16 15:07:14
    关系代数有分为基于集合的关系代数和基于包的关系代数;关系代数的基本操作有:并、差、除、选择、投影、笛卡尔积等。 1、差  定义:差即Difference,用符号-表示,表示两个表中不一样的部分。此种...


    前言:关系代数名称的由来是因为其中含有操作符和操作数,操作数为表,操作符为交、并等。关系代数有分为基于集合的关系代数和基于包的关系代数;关系代数的基本操作有:并、差、除、选择、投影、笛卡尔积等。



    1、差


      定义:差即Difference,用符号-表示,表示两个表中不一样的部分。此种计算需要使得运算的两个表具有相同的字段。例如S1-S2是在S1中而不在S2中的记录的集合:


            



    2、投影


      定义:从一个关系里面抽取指明的属性(列)。投影运算符是π,该运算作用于关系R将产生一个新关系S,S只具有R的某几个属性列。

      投影运算的一般表达式为:S = πA1, A2, … , An(R)

      S是投影运算产生的新关系,它只具有R的属性A1, A2, … , An所对应的列。

      例如:

        对于关系:


                


        进行投影运算:πStudentNo, StudentName(Student) 结果为:


                    



    3、选择


      定义:从关系里面抽取出满足给定限制条件的记录。

      即:投影是获得表中的列,而选择是获得表中的行。



    4、除


      定义:除运算是同时从关系的水平方向和垂直方向进行运算。例如给定关系R(X,Y)和S(Y,Z),X、Y、Z为属性组。R÷S应当满足元组在X上的分量值x的象集y包含关系S在属性Y上投影的集合。

      其形式定义为:


           


      例如:


                     


      找出关系R和关系S中相同的属性,即Y属性。在关系S中对Y做投影,得到:


                          


      被除关系R中与S中不相同的属性列是X,关系在属性X上做取消重复值的投影为{X1,X2};根据关系R的记录,可以得到与X1值有关的记录,如图3所示;与X2有关的记录,如图4所示:


                    


      得出结论:R÷S其实就是判断关系R中X各个值的像集Y是否包含关系S中属性Y的所有值。可知:X1的像集只有Y1,不能包含关系S中属性Y的所有值,所以排除掉X1;

      而X2的像集包含了关系S中属性Y的所有值,所以R÷S的最终结果就是X2 :


                         



    5、笛卡尔积


      计算两个关系的笛卡尔积。两个关系R和S的笛卡尔积记作R×S,它的关系模式属性是R和S的模式的并集。R×S是把R和S的元组以所有可能的方式组合起来,因此,R×S拥有的元组数量应该是R的元组数与S的元组数的乘积。

      例如:


                





    展开全文
  • 一、关系数据结构及形式化定义 1、关系 关系模型的数据结构非常简单,只包含单一的数据结构——关系。... 笛卡儿积是域上的一种集合运算。 定义:给定一组域D1,D2,...,Dn,允许其中某些域是相同的,D...

    一、关系数据结构及形式化定义

    1、关系

            关系模型的数据结构非常简单,只包含单一的数据结构——关系。在用户看来,关系模型中数据的逻辑结构是一张扁平的二维表。

    1.1 域

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

    1.2 笛卡儿积

            笛卡儿积是域上的一种集合运算。

            定义:给定一组域D1,D2,...,Dn,允许其中某些域是相同的,D1,D2,...,Dn的笛卡儿积为D1×D2×...Dn = {(d1,d2,...,dn)|di∈Di,i = 1,2,...,n}

            每一个元素(d1,d2,...,dn)叫做一个元组,元素中的每一个值di叫做一个分量

            一个域允许的不同取值个数称为这个域的基数。若Di(i = 1,2,...,n)为有限集,其基数为mi(i = 1,2,...,n)。

            笛卡儿积可表示为一张二维表,表中的每行对应一个元组,表中每一列的值来自一个域。

    1.3 关系

            定义:D1×D2×...×Dn的子集叫做在域D1,D2,...,Dn上的关系,表示为R(D1,D2,...,Dn)。这里R表示关系的名字,n是关系的目或度,关系中的每个元素是关系中的元组,通常用t表示。当n=1时,称该关系为单元关系或一元关系;当n=2时,称该关系为二元关系。

            关系是笛卡儿积的有限子集,所以关系也是一张二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性。n目关系必有n个属性。

            若关系中的某一属性组的值能唯一的标识一个元组,而其子集不能,则称该属性组为候选码。若一个关系中有多个候选码,则选定其中一个为主码(primary key)。候选码的诸属性称为主属性。不包含在候选码中的属性称为非主属性或非码属性。简单的情况下,候选码只包含一个属性。最坏情况下,关系模式的所有属性是这个关系模式的候选码,称为全码。

            一般来说,笛卡儿积是没有实际语义的,只有它的真子集才有实际含义。

    ⑴ 关系的三种类型

    基本关系(基本表):是实际存在的表,是实际存储的逻辑表示;

    查询表:查询结果对应的表;

    视图表:是由基本一或其他视图表导出的表,是虚表,不对应实际存储的数据。

    ⑵ 关系的限定和扩充

    ① 无限关系在数据库系统中是无意义的,限定关系数据模型中的关系必须是有限集合;

    ② 通过为关系的每个列附加一个属性名的方法取消关系属性的有序性。

    ⑶ 基本关系具备的性质

    ① 列是同质的,每一列中的分量是同一类型的数据,来自同一个域;

    ② 不同的列可出自同一个域,称其中的每一个列为一个属性,不同的属性要给予不同的属性名;

    ③ 列的次序可以任意交换;

    ④ 任意两个元组的候选码不能取相同的值;

    ⑤ 行的次序可以任意交换;

    ⑥ 分量必须取原子值,每一个分量都必须是不可再分的数据项。

    关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件。规范化的关系称为范式。

    2、关系模式

            定义:关系的描述称为关系模式,它可以表示为R(U,D,DOM,F)。R是关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合(说明它们出自哪个域,常常直接说明为属性的类型和长度),F为属性间数据的依赖关系集合。

            关系是关系模式在某一时刻的状态或内容,关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断的更新着数据库中的数据。

    3、关系数据库

            所有关系的集合构成一个关系数据库。

            关系数据库也有型和值之分。关系数据库的型称为关系数据库模式,是对关系数据库的描述。关系数据库的值是这些关系模式在某些时刻对应的关系的集合,通常称作关系数据库。

    4、关系模型的存储结构

            表是关系数据的逻辑模型。

            在关系数据库的物理组织中,有的一个表对应一个操作系统文件,将物理数据组织交给操作系统来完成;有的从操作系统那里申请若干个大的文件,自己划分文件空间,组织表、索引等存储结构,并进行存储管理。

    二、关系操作

    1、基本的关系操作

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

            查询操作又可以分为选择(select)、投影(project)、连接(join)、除(divide)、并(union)、差(except)、交(intersection)、笛卡儿积等。其中选择、投影、并、差、笛卡儿积是5种基本操作,其他操作可以用基本操作来定义和导出。

    2、关系数据语言的分类

            关系数据语言可以分为三类:关系代数语言(如ISBL),关系演算语言,具有关系代数和关系演算双重特点的语言(如SQL)。

    2.1 关系代数语言

            关系代数用对关系的运算来表达查询要求。

    2.2 关系演算语言

            关系演算用谓词来表达查询要求。它可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。

            一个关系数据语言能够表示关系代数可以表示的查询,称为具有完备的表达能力,简称关系完备性。已经证明关系代数、元组关系演算和域关系演算三种语言在表达能力上是等价的,都具有完备的表达能力。

    2.3 结构化查询语言

            它是一种具有关系代数和关系演算双重特点的语言,是集查询、数据定义语言、数据操纵语言和数据控制语言于一体的关系数据语言。

    三、关系的完整性

            关系模型中有三类完整性约束:实体完整性、参照完整性和用户定义的完整性,其中实体完整性和参照完整性是关系数据模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。

    1、实体完整性

    1.1 实体完整性规则

            若属性(一个或一组属性)A是基本关系R的主属性,则A不能取空值。

    1.2 实体完整性规则说明

    ⑴ 一个基本表通常对应现实世界的一个实体集;

    ⑵ 实体在现实世界中是可区分的,它们具有某种唯一性的标识,关系模型中以主码作为唯一性标识;

    ⑶ 主码中的属性即主属性不能取空值。

    2、参照完整性

    2.1 参照完整性规则

            若属性(一个或一组属性)F是基本关系R的外码,它与基本关系S的主码相对应(R和S有可能是相同的关系),则对于R中每个元组在F上的值必须:或者取空值,或者等于S中某个元组的主码值。

            参照完整性规则就是定义外码和主码之间的引用规则。

    2.2 参照完整性规则说明

    ⑴ 不仅两个或两个以上的关系间存在引用关系,同一关系内部属性间也可能存在引用关系(如学生(学员,...,班长));

    ⑵ 如果F是关系R的一个或一组属性,但不是关系R的主码,K是基本关系S的主码。如果F与K相对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S为被参照关系。关系R和S有可能是相同的关系。

    ⑶ 外码并不一定发与相对应的主码同名,但实际应用中为了方便识别,一般使用同名;

    ⑷ 当参照完整性约束和实体完整性约束无法同时满足时,优先满足实体完整性约束,如成绩关系中学号和课程号分别参照学生关系和课程关系中的主码,此时由于学号和课程号是成绩关系中的主属性,则它们不能取空值,只能取被参照关系中已经存在的主码值。

    3、用户定义的完整性

            用户定义的完整性约束就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求,如某个属性必须取唯一值、某个非主属性不能取空值。

    四、关系代数

            关系代数是一门抽象的查询语言,它用对关系的运算来表达查询。

            运算对象、运算符、运算结果是运算的三大要素。关系代数的运算对象是关系,运算结果也是关系,运算符包括:集合运算符和关系运算符。

    1、传统的集合运算

    传统的集合运算是二目运算,包括并、交、差、笛卡儿积四种运算。以下以oracle为例:

    1.1 并(union)

    R∪S

    其结果仍为n目关系,由属于R或属于S的元组组成。

    --结果:2条记录
    select * from emp where empno=7369
    union
    select * from emp where empno=7788
    --结果:11条记录
    select * from emp where sal < 2000 --只有2个20号部门的人,一共8条记录
    union 
    select * from emp where deptno = 20 --20号部门共有5个人,一共5条记录

    1.2 差(except)

    R-S

    其结果关系仍为n目关系,由属于R而不属于S的所有元组组成。

    --结果:1条记录
    select * from emp where deptno=30 --30号部门共有6个人,一共6条记录
    minus 
    select * from emp where deptno=30 and mgr=7698 --部门经理为7698的员工有5个,一共5条记录

    1.3 交(intersection)

    R∩S

    其结果仍为n目关系,由既属性R又属于S的元组组成。交可以用差来表示,即R∩S=R-(R-S)。

    --结果:5个
    select * from emp where deptno=30 --6个
    intersect
    select * from emp where deptno=30 and mgr=7698 --5个

    1.4 笛卡儿积

            关系R和S的笛卡儿积是一个(n+m)列的元组的集合,元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有x个元组,S有y个元组,则关系R和S的笛卡儿积有x*y个元组。

    --笛卡儿积(若关系R有n列x行,关系S有m列y行,则R和S的笛卡儿积为列n+m,行x*y)
    select a.*,b.* from emp a,dept b --第一种
    select * from emp cross join dept --第二种

    2、专门的关系运算

            专门的关系运算包括选择、投影、连接、除运算等。以下以oracle为例:

    2.1 选择(selection)

            选择的逻辑表达式的基本形式为:XθY。其中θ代表比较运算符,它可以是比较运算符。X、Y是属性名或常量或简单函数。它是从行的角度进行的运算。

    select * from emp where sal > 3000

    2.2 投影(projection)

            关系R上的投影是从关系R中选出若干属性列组成新的关系。它是从列的角度进行的运算。由于投影取消了某些列之后可能出现重复的行,应取消这些完全相同的行。

    select distinct deptno from emp

    2.3 连接(join)

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

    --向dept中添加列(平均工资)设置10、20、30号部门的平均工资并提交
    alter table dept add (avgsal number(10))
    update dept set avgsal=3000 where deptno = 10;
    update dept set avgsal=2000 where deptno = 20;
    update dept set avgsal=1500 where deptno = 30;
    commit;
    --向emp中添加一条没有部门的员工信息记录并提交
    insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(8888,'ZHANG','ENGINEER',7788,sysdate,3000,2000,null);
    commit;

    ⑴ 非等值连接

    θ不为“=”的连接称为非等值连接

    select * from emp e join dept d on e.sal > d.avgsal

    ⑵ 等值连接

            θ为“=”的连接称为等值连接,它是从关系R和S的笛卡儿积中选取A、B属性值相等的那些元组。等值连接的属性名可以相同也可以不相同。

    select * from emp e join dept d on e.sal = d.avgsal
    select * from emp e join dept d on e.deptno = d.deptno

    ⑶ 自然连接

            自然连接是一种特殊的等值连接,它要求两个关系进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉。一般的连接是从行的角度进行操作,自然连接需要取消重复列,所以它是从行和列的角度进行操作。

    select * from emp natural join dept

    ⑷ 外连接

            两个关系R和S在做自然连接时,选择两个关系在公共属性上值相等的元组构成新的关系。此时,关系R和S可能有在公共属性上不相等的元组,从而造成R或S中元组的舍弃,这些舍弃的元组被称为悬浮元组。如果把悬浮元组也保存在结果关系中,而在其他属性上填空值,那么这种连接就叫做外连接。

    ① 左外连接

    如果只保留左边关系R中的悬浮元组就叫做左外连接。

    select * from emp e left join dept d on e.deptno = d.deptno --员工8888没有部门,只保留左表的悬浮元组,其他属性为null

    ② 右外连接

    如果只保留右边关系S中的悬浮元组就叫做右外连接。

    select * from emp e right join dept d on e.deptno = d.deptno --40号部门没有人,只保留右表的悬浮元组,其他属性为null

    ③ 全外连接

    如果保留两边关系R和S中的所有悬浮无级就叫做全外连接。

    select * from emp e full join dept d on e.deptno = d.deptno --保留两边的悬浮元组,左表和右表各有一条悬浮元组记录,一共16行

    ⑸ 自连接

    select * from emp e1 join emp e2 on e1.empno = e2.mgr

    2.4 除运算(division)

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

    ⑴ 象集

    给定一个关系R(X,Z),X和Z为属性组。它表示R中属性组X上值为x的若干元组在Z上分量的集合。

    例:关系R

     

    x1y1
    x1y2
    x1y3
    x2y3
    x2y1

    x1在R中的象集Z1={y1,y2,y3}

    x2在R中的象集Z2={y3,y1}

    ⑵ 用象集来定义除法

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

    ② 元组在X上的分量值x的象集K要包含S在Y上投影的集合,满足前面条件的元组在X属性上的投影就是R除以S的结果关系;

    ③ 除操作是同时从行和列角度进行的操作。

    例:

    关系R

     

    XY
    x1y1
    x1y2
    x1y3
    x2y3
    x2y5

    关系S

     

    YZ
    y1z1
    y3z2

    R÷S=P,P如下:

     

    X
    x1

    分析:

    ① S在(Y)上的投影的集合是:{(y1),(y3)};

    ② 元组在X上的分量值x的象集有两组;

    x1的象集K1={(y1),(y2),(y3)}

    x2的象集K2={(y3),(y5)}

    ③ 从①②得知只有象集K1包含了S在(Y)上的投影;

    ④ 满足以上条件的象集K1在X属性上的投影为{(x1)}。

    小结:

            在关系代数运算中,并、差、笛卡儿积、选择和投影这5种运算为基本的运算,其他三种运算交、连接、除,均可使用这5种基本运算来表达。它些运算经过有限次复合后形成的表达式称为关系代数表达式。

    五、关系数据库的规范化理论

    1、关系模式中可能存在的冗余和异常问题

    ① 数据冗余

            数据冗余是指同一数据反复被存取的情况。

    ② 更新异常

            数据冗余将导致存储空间的浪费和潜在数据不一致性以及修改麻烦等问题。

    ③ 插入异常

            数据的插入操作异常是指应该插入到数据库中的数据不能执行插入操作的情形。

    ④ 删除异常

            数据的删除操作异常是指不应该被删除的数据被删去的情形。

    小结:

            关系模式产生上述问题的原因,以及消除这些问题的方法,都与数据依赖的概念密切相关。数据依赖是可以作为关系模式的取值的任何一种关系所必须满足的一种约束条件,是通过一个关系中各个元组的某些属性之间的相等与否体现出来的相互关系。这是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。

            数据依赖,其中最重要的是函数依赖和多值依赖。

    2、函数依赖与关键字

    函数依赖是指关系中属性间的对应关系。

    定义一:

            设R为任一给定关系,如果对于R中属性X的每一个值,R中的属性Y只有唯一值与之对应,则称X函数决定Y或称Y函数依赖于X,记作X → Y,其中X称为决定因素。反之,对于关系R中的属性X和Y,若X不能函数决定Y,则其符号记作X →× Y。

    例:SNO → SNAME     SNAME →× SNO(人名可能有同名同姓的,不能决定学号)

    注意:函数依赖是针对关系的所有元组,即某个关系中只要有一个元组的有关属性值不满足函数依赖的定义,则相对应的函数依赖就不成立。

    函数依赖根据其不同性质可分为完全函数依赖、部分函数依赖和传递函数依赖。

    ① 完全函数依赖

    定义二:

            设R为任一给定关系,X、Y为其属性集,若X → Y,且任何X中的真子集X1都有X1 →× Y,则称Y完全函数依赖于X。

    例:(SNO,CNO)→ GRADE(学号和课程编号决定成绩)

    ② 部分函数依赖

    定义三:

            设R为任一给定关系,X、Y为其属性集,若X → Y,且X中存在一个真子集X1满足X1 → Y,则称Y部分函数依赖于X。

    例:(SNO,SNAME)→ SSEX,但其中SNO → SSEX(学号和姓名可以决定性别,但其中学号可以直接决定性别)

    ③ 传递函数依赖

    定义四:

            设R为任一给定关系,X、Y、Z为其不同的属性子集,若X → Y,Y →× X,Y → Z ,则有X → Z,称为Z传递函数依赖于X。(加入条件Y →× X,是因为若Y → X,即有X ←→ Y,这实际上是X直接函数决定Z,而不是X传递函数决定Z)

    例:BNO → PNAME (书号决定出版社)和 PNAME → PADDRESS(出版社决定出版社地址),但PNAME →× BNO(一个出版社可能出版多种书),因此有PADDRESS对BNO的传递函数依赖。

    定义五:

            设R为任一给定关系,U为其所含的全部属性集合,X为U的子集,若有完全函数依赖X → U,则X为R的一个候选关键字。作为候选关键字的属性集X唯一标识R中的元组,但该属性集的任何真子集不能唯一标识R中的元组。显然,一个关系R中可能存在多个候选关键字,通常选择其中之一作为主键,候选关键字中所含的属性称为主属性。

    例:属性集(SNO,CNO)为候选关键字,SNO和CNO为主属性

    3、范式与关系规范化的过程

            关系数据库中的关系需要满足一定的要求,不同程度的要求称为不同的范式。满足最低要求的称为第一范式,简称1NF,这是最基本的范式;在第一范式的基础上进一步满足一些新的要求称为第二范式(2NF);以此类推,再进一步的范式是第三范式(3NF)及其改进形式BCNF。

            一个低一级范式的关系模式通过模式分解,可以转换为若干个高一级范式的关系模式的集合,这种过程叫做规范化。

    ⑴ 第一范式

    定义:设R为任一给定关系,如果R中每个列与行的交点处的取值都是不可再分的基本元素,则R为第一范式。

            由此可见,第一范式是一个不含重复组的关系,其中不存在嵌套结构,不满足第一范式的关系为非规范关系。下面是一个非规范关系,因为在学号为80154的学生数据中出现了重复组。

    不满足1NF的非规范关系SC
    SNOCNOCTITLEINAMEIPLACEGRADE
    80152C01操作系统五忠东0170
    80153C02数据库高国东0285
    80154C01操作系统五忠东0186
    C03人工智能杨凡东0372
    80155C04C语言高国东0292

            非规范关系转化为1NF比较容易,可以通过重写关系中属性值相同部分的数据来实现,转化后如下:

    满足1NF的关系SC
    SNOCNOCTITLEINAMEIPLACEGRADE
    80152C01操作系统五忠东0170
    80153C02数据库高国东0285
    80154C01操作系统五忠东0186
    80154C03人工智能杨凡东0372
    80155C04C语言高国东0292

            然而,上面表中所示的关系存在着冗余高、插入和删除操作异常等问题。比如,若操作系统这门课程被1000个同学选修,那么该授课老师的办公地址就要被存储1000次,这就带来了大量的数据“冗余”;如果学校开设了一门新课程,但尚未有学生选修,则这个课程的信息就无法存储到关系中,此时就出现了“插入异常”的现象;如果删除上面关系中的最后一条记录,则同时也会删除和C语言相关的授课老师的信息,此时会面临“删除异常的问题”。所以,在满足1NF的基础,需要对其进一步进行规范化。

            经分析,SC关系出现冗余高、插入异常、删除异常的问题原因在于:非主属性GRADE完全函数依赖于(SNO,CNO),其他非主属性(CTITLE,INAME,IPLACE)都是函数依赖于CNO,即它们与(SNO,CNO)为部分函数依赖关系。那么,解决1NF关系存在问题的方法是:将满足部分函数依赖关系和满足完全函数依赖关系的属性分解并组成两个关系,从而消除非主属性对候选关键字的部分函数依赖,由此获得更高一级的范式。按照此方法关系SC可分解为关系SG和关系CI,如下所示:

    满足2NF的关系SG
    SNOCNOGRADE
    80152C0170
    80153C0285
    80154C0186
    80154C0372
    80155C0492
    满足2NF的关系CI
    CNOCTITLEINAMEIPLACE
    C01操作系统五忠东01
    C02数据库高国东02
    C03人工智能杨凡东03
    C04C语言高国东02

    ⑵ 第二范式

    定义:设R为任一给定关系,若R为1NF,且所有非主属性都完全函数依赖于候选关键字,则R为第二范式。

            然而,2NF并不能解决所有问题,在关系CI中,如果有一位新老师报到,需将其有关数据插入到CI中去,但该老师暂时还未承担任何教学工作,则因缺失关键字CNO的值而不能进行插入操作。

            经分析,产生上述现象的原因在于:关系CI中存在非主属性对主属性的传递函数依赖,即CNO → INAME、INAME →× CNO、INAME → IPLACE。因此,需要将2NF的关系CI进行一步进行规范化,消除非主属性对候选关键字的传递函数依赖。

    满足3NF的关系COURSE
    CNOCTITLEINAME
    C01操作系统五忠
    C02数据库高国
    C03人工智能杨凡
    C04C语言高国
    满足3NF的关系INSTRUCTOR
    INAMEIPLACE
    五忠东01
    高国东02
    杨凡东03

    ⑶ 第三范式

    定义:设R为任一给定关系,若R为2NF,且其每一个非主属性都不传递函数依赖于候选关键字,则R为第三范式。

            通常,第三范式的关系大多数都能解决插入和删除操作异常的问题,数据冗余也能得到有效的控制,但也存在一些例外。例如如下关系中,若每一个学生可选修多门课程,每一门课程可有多个指导老师,但每个老师只能指导一门课程,则其候选关键字为(SNO,CTITLE)和(SNO,TNAME),故不存在非主属性,也就不存在非主属性对主属性的传递函数依赖。所以,该关系是一个3NF,但其中仍存在插入和删除操作异常问题。例如,一个新课程和指导老师的数据要插入到数据库中,必须至少有一个学生选修该课程且该指导老师已被分配给他时才能进行。

    3NF关系SCT
    SNOCTITLETNAME
    S01英语王华
    S01数学沈飞
    S02物理高俊
    S03英语袁晓
    S04英语王华

            经分析,上述问题的原因在于:主属性之间存在函数依赖TNAME → CTITLE,这里需要对其进一步进行规范化,其结果如下:

    BCNF关系ST
    SNOTNAME
    S01王华
    S01沈飞
    S02高俊
    S03袁晓
    S04

    王华

    BCNF关系TC
    TNAMECTITLE
    王华英语
    沈飞数学
    高俊物理
    袁晓英语

    ⑷ BCNF

    定义:设R为任一给定关系,X、Y为其属性集,F为其函数依赖集,若R为3NF,且其F中所有函数依赖X → Y(Y不属于X)中的X必包含候选关键字,则R为BCNF

            简而言之,若R中每一个函数依赖的决定因素都包含一个候选关键字,则R为BCNF,其中,决定因素可以是单一属性或组合属性。

            根据BCNF的定义可知,在关系SCT中,有函数依赖TNAME → CTITLE,但TNAME不是候选关键字。

     

    展开全文
  • 专门关系运算有:选择,投影,连接,除运算。 1.选择从关系中找出满足给定条件的所有元组称为选择,其中条件是用逻辑表达式给出的,逻辑表达式为真时元组被选取。 选择运算记为δF(R),其中R为一个关系,F为布尔...

    专门关系运算有:选择,投影,连接,除运算。

    1.选择从关系中找出满足给定条件的所有元组称为选择,其中条件是用逻辑表达式给出的,逻辑表达式为真时元组被选取。
    选择运算记为δF(R),其中R为一个关系,F为布尔函数,该函数可以包含比较运算符和逻辑运算符。
    2.从关系中挑选若干属性组组成的新关系称为投影。是从列的角度进行的运算,相当于对关系进行垂直分解,如果新的关系中包含重复元组,则要删除重复元祖。
    3.连接。连接是将两个关系属性名拼接成一个更宽的关系,生成的新的关系中包含满足连接条件的元组。分为θ连接(当θ为‘=‘的时候为等值连接)和F连接,以及自然连接。
    4,。关系的除运算

    举个栗子:
    来说明怎么求以上四个关系
    假设有四个关系分别为R,S,U,V

    在这里插入图片描述
    对于投影:πA,C®:
    就是在关系R中找到属性A和C,然后把这两个属性组成新的关系,如果有重复的元组,就把重复的去除就ok

    对于选择:δB=‘5’(S):找到关系S,在S中找到属性为B且值等于5的元组组成新的关系就ok

    对于连接:
    等值连接
    R▷◁S
    [ 3]=[2]
    首先找到关系R,S,并对R,S中的属性从左到右依次从1开始进行编号,例如属性R中的A,B,C依次编号为1,2,3,S中的B,C,D依次编号为1,2,3,所以连接要求【3】=【2】其实就是要求找出R中属性C和S中属性C值相等的元组,在进行拼接

    自然连接:R▷◁S
    对于自然连接,先求出关系R和S的笛卡尔积(R×S),再挑选他们公共属性中值相等的元组,再去掉重复的相等的那些列。

    对于除运算:U÷V:
    首先找被除关系U,看U中除了U,V中已经存在的公共属性还有那些属性,例如上面关系中U除了C,D还剩下A,B
    然后开始找A,B的象集,也就是所有元组中相同的A,B属性的值对应的C,D的值的集合,U中(a,b)的象集为{(c,d),(e,f) },(c,a)的象集为(c,d)
    再看关系V在C,D上的投影为{(c,d),(e,f) }
    显然只有象集(a,b)包含了V在C,D上的投影,所以(a,b)为符合要求的结果

    展开全文
  • 数据库之关系数据库的关系运算

    千次阅读 多人点赞 2020-03-25 11:59:13
    关系运算的机理有什么用 我们学习关系运算的机理,对我们理解数据库查询操作非常重要 所以我们进行关系操作时很大程度上需要明白关系操作以及关系之间的逻辑 在我们进行数据库查询操作时,如何规范的使用数据库语言...

    关系运算的机理有什么用

    我们学习关系运算的机理,对我们理解数据库查询操作非常重要
    所以我们进行关系操作时很大程度上需要明白关系操作以及关系之间的逻辑
    在我们进行数据库查询操作时,如何规范的使用数据库语言,如何进行选择时能够消除我们不想要的结果,减少冗余。这些都需要充分理解关系运算

    各种关系运算

    在这里插入图片描述

    集合运算符

    1.并运算
    在这里插入图片描述

    2.差运算
    在这里插入图片描述
    3.交运算
    在这里插入图片描述
    4.笛卡儿积

    专门关系运算符

    数据库的专门关系运算有:选择、投影、连接、自然连接、除运算等
    1.选择运算
    选择就是对表在水平方向上,筛选出一定符合条件的元组,然后组成新的关系
    例:
    在这里插入图片描述
    2.投影运算
    投影就是对表在垂直方向上,对列进行筛选。
    例:

    3.连接
    连接就是根据给定的条件,从两个已知的关系R和S的笛卡尔集中,选取满足连接条件的若干元组,组成一个新的关系;
    具体又分为:
    1.条件连接:选取满足条件的元组组成新关系
    2.等值连接:选取满足等值条件的元组组成的关系
    3.自然连接:也是等值连接,只不过它是选取满足公共属性满足等值的元组,组成关系
    4.外连接

    举例:
    先给出两个关系R和S:

    在这里插入图片描述
    R和S的笛卡儿积表示为:
    在这里插入图片描述
    我们先进行条件连接
    选择R的C列小于S的E列的元组进行连接
    表示为:

    在这里插入图片描述
    反映到笛卡儿积上:
    在这里插入图片描述
    2.等值连接
    等值连接R的B列等于S的B列:
    在这里插入图片描述
    3.自然连接
    选取满足公共属性满足等值的元组,组成关系
    暗含的条件是R.B=S.B且R.C=S.C,因为R、S中公共的属性列是B、C

    在这里插入图片描述
    反映到笛卡儿积上表示如下:
    在这里插入图片描述
    4.外连接:外连接就是将不满足条件舍弃的元组也保留到新关系中其属性值置为null
    R和S的外连接:
    1.先将R和S进行自然连接
    2.把不满足R.B=S.B的元组也保存下来,其属性值置空
    结果为:
    在这里插入图片描述

    除运算:

    概念就不放了直接举例理解:
    在这里插入图片描述
    首先第一个(1),这个新生成的列表首先不能包含S的属性A3,然后这个新生成的表其所有属性值和S表组合都等在R中找到,满足这两个条件得到的结果就是上图
    第二个(2),首先生成新表不包含S属性A3的值c,f,然后新表的每个属性对应行的值和S对应的属性值组成的元组都能在R中找到,满足条件就是如图
    第三第四个同样。

    展开全文
  • 点运算2.3.2 关系运算2.3.3 逻辑运算 2.3.1 算术运算 运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。 MATLAB有两类不同的算术指令运算:基本算术运算和点运算。 1.基本算数运算符 (1)矩阵的加减...
  • 关系模型和关系运算

    千次阅读 2015-11-09 22:52:54
    一、关系模型 为什么学习关系模型? 我们可以通过关系模型这种简单的数据结构能够描述出现实世界的实体及实体间的各种联系。 什么是关系模型? 关系模型的基本假定是所有数据都表示为数学上的关系,就是以集合...
  • 集合论—关系运算和性质

    千次阅读 2019-06-18 23:19:15
    关系是一个有序对集合或空集合,关系之间做运算以后依然是关系关系的定义域(domR\text{dom} RdomR),值域(ranR\text{ran} RranR)和域(fldR\text{fld} RfldR) domR={x∣∃y(&lt;x,y&gt;∈R)}\text{dom} ...
  • 连接又分为内连接和外连接: 内连接:在连接结果中会舍弃掉不满足连接条件的元组。这种形势的连接被称为内连接。 如下图所示: 表3-13和表3-14等值连接的结果为: 两个关系必须要有相同的属性列,如果没有就...
  • 传统的集合运算包括并,差,交,笛卡儿积运算 1.并 关系R和关系S的所有元组合并,再删去重复的元组,组成一个新的关系,即不允许有重复的行 2.差 关系R和关系S的差是由属于R但不属于S的所有元组组成的集合,即关系R...
  • 关系数据库关系数据模型关系是一个数学概念。 当把关系的概念引入到数据库系统作为数据模型的数据结构时,既有所限定和也有所扩充。 关系的数学定义例: 课程={离散,C语言…..},学生={张三,李四…..} 笛卡儿积...
  • 文章目录关系数据库关系代数关系代数的分类及其运算符传统的集合运算专门的关系运算 关系数据库 关系代数 ...按表达查询的方式不同,关系运算可分为关系代数和关系演算两大类 关系代数的分类及其运算符
  • Matlab 矩阵运算

    千次阅读 2014-09-11 10:52:20
    Matlab 矩阵运算 说明:这一段时间用Matlab做了LDPC码的性能仿真,过程中涉及了大量的矩阵运算,本文记录了Matlab中矩阵的相关知识,特别的说明了稀疏矩阵和有限域中的矩阵。Matlab的运算是在...
  • 数据库-关系运算

    千次阅读 2017-10-18 11:29:16
    数据库中的关系运算包括选择、投影、连接、除等。 1、选择 选择又称限制,其实就是在关系R中选择满足给定条件的诸多元组,元组其实就是表中的一行数据称为元组。 其实选择运算就是从一个关系,比如说关系R中选取可以...
  • 【数据库】关系代数基本运算

    万次阅读 多人点赞 2019-01-08 16:27:29
    前言 &amp;amp;nbsp; &amp;amp;nbsp;...关系代数是以关系运算对象的一组高级运算的集合。...关系代数中的操作可以分为两类:传统的关系操作,并、差、交、笛卡尔积(乘)、笛卡尔积的逆运算(除);
  •   数据库系统学习第7篇:关系代数基本运算及附加运算。参考书籍:数据库系统概念。 基本运算   基本运算有6种,如下所示: 选择运算   选择运算的目的是 选出满足给定谓词的元组,表示如下:   选择运算...
  • MapReduce 基础算法【关系代数运算

    千次阅读 2018-08-16 17:39:10
    关系代数运算 MapReduce可以在关系代数的运算上发挥重要的作用,因为关系代数运算具有数据相关性低的特性,这使得其便于进行MapReduce的并行化算法设计。 常见的关系代数运算包括选择、投影、并、交、差以及自然...
  • 正文如下: 各种运算符如下: ...数据库的传统集合运算包括:并、差、交、笛卡尔积运算。这四种运算都与数学上的同名运算概念相似。 并: 差: 交: 笛卡尔积: 广义笛卡尔积(Extended Cartes...
  • 数据库原理--关系代数之基本运算

    千次阅读 2020-03-08 21:09:23
    本笔记仅仅作为课堂笔记,方便自己参考。因为是学生,对知识点的理解多有不足之处,希望多多包涵。 关系代数 关系代数语言是一种抽象的查询语言,通过对关系...2.专门的关系运算:选择、投影、连接、除 运算符 ...
  • 按照运算关系可分为比例、加法、减法、积分、微分等,利用输入方式与运算关系的组合,接成各种运算电路。 图1 μA74l引脚排列  1,反相比例运算电路  反向比例运算电路如图2所示。根据电路分析,这种电路的...
  • 关系代数运算——(软考三)

    千次阅读 热门讨论 2015-10-09 21:39:35
    关系代数运算的是关系运算结果亦是关系关系代数的基本关系包括:并、交、差、笛卡尔积、选择、投影、连接、除法运算。由于并、交、差运算很简单,这里不再赘述,只说明了几个容易遗忘和混淆的运算
  • 数据库关系运算范式分解例题

    千次阅读 2020-11-21 18:26:06
    一、 1.假设A能推B:那么每个A1所对应的B的属性值应该一样,由于B的第一行和第三行分别是B1和B3,故A不能推B。...发现只存在C推D,AB推C,AB推D三种关系, 那么主键为AB。 由于没有非主属性部分依赖于.
  • 首先说一下连接的概念,连接是指两个像素之间的关系,主要是从两方面来描述:一个是空间关系,另一个是灰度关系。 空间关系:满足连接关系的两个像素在空间上是要接触的,即两个像素是邻域关系。 ...
  • 关系代数是以关系运算对象的一组高级运算的集合。由于关系定义为属性个数相同的元组的集合,因此集合代数的操作就可以引入到关系代数中。关系代数中的操作可以分为两类:传统的关系操作,并、差、交、笛卡
  • 作者:李狗嗨 ...数学的基本运算可分为三个等级。第一级为加、减运算,虽然加减法的概念在公元前20世纪的古埃及数学家艾哈迈斯(Ahmes)的纸草书中就有体现,但今天的加号“+”和减号“-”,最早有史...
  • 什么是数据结构?

    千次阅读 2019-06-19 20:25:39
    什么是数据结构?数据结构是什么? 数据结构是计算机存储、组织数据的方式...数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。也就是说,数组结构指的是数据集合及...
  • 关系代数运算So Easy

    万次阅读 2013-10-21 15:35:30
    关系代数是以关系运算的一组高级运算的集合。由于定义为属性个数 相同的元组的集合,因此集合代数的操作就可以引入到关系代数中。关系代数也可以看做是一种抽象的查询语言,是对关系运算来表达查询的。任何一种...
  • 运算放大器 之 概述

    千次阅读 2019-06-02 15:55:00
    转载来源:[维基百科]《运算放大器》 运算放大器(英语:Operational Amplifier,简称OP、OPA、op-amp、运放)是一种直流耦合,差模(差动模式)输入、通常为单端输出(Differential-in, single-ended output)的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 165,890
精华内容 66,356
关键字:

关系运算可分为