精华内容
下载资源
问答
  • 二维表

    2011-01-18 11:02:38
    关系模型中,数据结构表示为一个二维表,一个关系就是一个二维表(但不是任意一个二维表都能表示一个关系),二维表名就是关系名。表中的第一行通常称为属性名,表中的每一个元组和属性都是不可再分的,且元组的...

    关系模型中,数据结构表示为一个二维表,一个关系就是一个二维表(但不是任意一个二维表都能表示一个关系),二维表名就是关系名。表中的第一行通常称为属性名,表中的每一个元组和属性都是不可再分的,且元组的次序是无关紧要的。  常用的关系术语如下:  记录 二维表中每一行称为一个记录,或称为一个元组。  字段 二维表中每一列称为一个字段,或称为一个属性。  域 即属性的取值范围。  关键字 在一个关系中有这样一个或几个字段,它(们)的值可以唯一地标识一条记录,称之为关键字(Key)。例如,在学生关系中,学号就是关键字。  关系模式 对关系的描述称为关系模式,其格式为:  关系名(属性名1,属性名2,…,属性名n)  一个关系模式对应一个关系的结构,它是命名的属性集合。  \  二维表在生活的应用很多,像工资表、课程表这些都是二维表,  excel就是一个二维表,但是功能强大!!!  二维表就是有行列组成的,知道行号列号就可以确定一个表中的数据,这是二维表的特点。在关系数据库中,存放在数据库中的数据的逻辑结构以二维表为主.  在二维表中惟一标识元组的最小属性值称为该表的键或码。二维表中可能有若干个健,它们称为表的侯选码或侯选健。从二维表的所有侯选键选取一个作为用户使用的键称为主键或主码。表A中的某属性集是某表B的键,则称该属性值为A的外键或外码。  关系模型采用二维表来表示,二维表一般满足下面7个性质:  (1)二维表中元组个数是有限的——元组个数有限性;  (2)二维表中元组均不相同——元组的唯一性;  (3)二维表中元组的次序可以任意交换——元组的次序无关性;  (4)二维表中元组的分量是不可分割的基本数据项——元组分量的原子性;  (5)二维表中属性名各不相同——属性名唯一性;  (6)二维表中属性与次序无关,可任意交换——属性的次序无关性;  (7)二维表属性的分量具有与该属性相同的值域——分量值域的统一性。

    展开全文
  • 在用户看来,关系模型中数据的逻辑结构是一张扁平的二维表。 1.1域 域是一组具有相同数据类型值的集合。 1.2笛卡儿积 笛卡儿积是域上的一种集合运算。 定义:给定一组域D1,D2,...,Dn,允许其中某些域是...

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

    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

     

    x1 y1
    x1 y2
    x1 y3
    x2 y3
    x2 y1

    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

     

    X Y
    x1 y1
    x1 y2
    x1 y3
    x2 y3
    x2 y5

    关系S

     

    Y Z
    y1 z1
    y3 z2

    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
    SNO CNO CTITLE INAME IPLACE GRADE
    80152 C01 操作系统 五忠 东01 70
    80153 C02 数据库 高国 东02 85
    80154 C01 操作系统 五忠 东01 86
    C03 人工智能 杨凡 东03 72
    80155 C04 C语言 高国 东02 92

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

    满足1NF的关系SC
    SNO CNO CTITLE INAME IPLACE GRADE
    80152 C01 操作系统 五忠 东01 70
    80153 C02 数据库 高国 东02 85
    80154 C01 操作系统 五忠 东01 86
    80154 C03 人工智能 杨凡 东03 72
    80155 C04 C语言 高国 东02 92

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

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

    满足2NF的关系SG
    SNO CNO GRADE
    80152 C01 70
    80153 C02 85
    80154 C01 86
    80154 C03 72
    80155 C04 92
    满足2NF的关系CI
    CNO CTITLE INAME IPLACE
    C01 操作系统 五忠 东01
    C02 数据库 高国 东02
    C03 人工智能 杨凡 东03
    C04 C语言 高国 东02

    ⑵ 第二范式

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

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

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

    满足3NF的关系COURSE
    CNO CTITLE INAME
    C01 操作系统 五忠
    C02 数据库 高国
    C03 人工智能 杨凡
    C04 C语言 高国
    满足3NF的关系INSTRUCTOR
    INAME IPLACE
    五忠 东01
    高国 东02
    杨凡 东03

    ⑶ 第三范式

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

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

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

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

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

    王华

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

    ⑷ BCNF

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

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

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

     

    展开全文
  • 关系模型指的就是二维表格模型,而一个关系数据库就是由二维表及其之间的联系所组成的一个数据组织。 关系模型中常用的概念: 关系:一张二维表,每个关系都具有一个关系名,也就是表名 元组:二维表中的一行,...

    当前数据库分为关系型数据库和非关系型数据库

    • 关系型数据库

      关系型数据库:指采用了关系模型来组织数据的数据库。
      关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

    • 关系模型中常用的概念:

      关系:一张二维表,每个关系都具有一个关系名,也就是表名
      元组:二维表中的一行,在数据库中被称为记录
      属性:二维表中的一列,在数据库中被称为字段
      :属性的取值范围,也就是数据库中某一列的取值限制
      关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成
      关系模式:指对关系的描述。其格式为:关系名(属性1,属性2, … … ,属性N),在数据库中成为表结构

    • 关系型数据库的优点:

      1.容易理解:二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解
      2.使用方便:通用的SQL语言使得操作关系型数据库非常方便
      3.易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率

    • 关系型数据库存在的问题

      1.网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈
      2.网站每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率是非常低的
      3.在基于web的结构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库却没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。当需要对数据库系统进行升级和扩展时,往往需要停机维护和数据迁移。
      4.性能欠佳:在关系型数据库中,导致性能欠佳的最主要原因是多表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询。为了保证数据库的ACID特性,必须尽量按照其要求的范式进行设计,关系型数据库中的表都是存储一个格式化的数据结构。

    数据库事务必须具备ACID特性
    ACID分别是
    Atomic原子性,
    Consistency一致性,
    Isolation隔离性,
    Durability持久性。

    当今十大主流的关系型数据库

    Oracle,Microsoft SQL Server,MySQL,PostgreSQL,DB2,
    Microsoft Access, SQLite,Teradata,MariaDB(MySQL的一个分支),SAP

    非关系型数据库

    非关系型数据库:指非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。

    非关系型数据库结构

    非关系型数据库以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,不局限于固定的结构,可以减少一些时间和空间的开销。

    优点:
    1.用户可以根据需要去添加自己需要的字段,为了获取用户的不同信息,不像关系型数据库中,要对多表进行关联查询。仅需要根据id取出相应的value就可以完成查询。
    2.适用于SNS(Social Networking Services)中,例如facebook,微博。系统的升级,功能的增加,往往意味着数据结构巨大变动,这一点关系型数据库难以应付,需要新的结构化数据存储。由于不可能用一种数据结构化存储应付所有的新的需求,因此,非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。

    不足
    只适合存储一些较为简单的数据,对于需要进行较复杂查询的数据,关系型数据库显的更为合适。不适合持久存储海量数据

    非关系型数据库的分类

    非关系型数据库都是针对某些特定的应用需求出现的,因此,对于该类应用,具有极高的性能。依据结构化方法以及应用场合的不同,主要分为以下几类:

    面向高性能并发读写的key-value数据库
    key-value数据库的主要特点是具有极高的并发读写性能
    Key-value数据库是一种以键值对存储数据的一种数据库,类似Java中的map。可以将整个数据库理解为一个大的map,每个键都会对应一个唯一的值。
    主流代表为Redis, Amazon DynamoDB, Memcached,
    Microsoft Azure Cosmos DB和Hazelcast

    面向海量数据访问的面向文档数据库
    这类数据库的主要特点是在海量的数据中可以快速的查询数据
    文档存储通常使用内部表示法,可以直接在应用程序中处理,主要是JSON。JSON文档也可以作为纯文本存储在键值存储或关系数据库系统中。
    主流代表为MongoDB,Amazon DynamoDB,Couchbase,
    Microsoft Azure Cosmos DB和CouchDB

    面向搜索数据内容的搜索引擎
    搜索引擎是专门用于搜索数据内容的NoSQL数据库管理系统。
    主要是用于对海量数据进行近实时的处理和分析处理,可用于机器学习和数据挖掘
    主流代表为Elasticsearch,Splunk,Solr,MarkLogic和Sphinx

    面向可扩展性的分布式数据库
    这类数据库的主要特点是具有很强的可拓展性
    普通的关系型数据库都是以行为单位来存储数据的,擅长以行为单位的读入处理,比如特定条件数据的获取。因此,关系型数据库也被成为面向行的数据库。相反,面向列的数据库是以列为单位来存储数据的,擅长以列为单位读入数据。
    这类数据库想解决的问题就是传统数据库存在可扩展性上的缺陷,这类数据库可以适应数据量的增加以及数据结构的变化,将数据存储在记录中,能够容纳大量动态列。由于列名和记录键不是固定的,并且由于记录可能有数十亿列,因此可扩展性存储可以看作是二维键值存储。
    主流代表为Cassandra,HBase,Microsoft Azure Cosmos DB,
    Datastax Enterprise和Accumulo

    CAP理论

    NoSQL的基本需求就是支持分布式存储,严格一致性与可用性需要互相取舍
    CAP理论:一个分布式系统不可能同时满足C(一致性)、A(可用性)、P(分区容错性)三个基本需求,并且最多只能满足其中的两项。对于一个分布式系统来说,分区容错是基本需求,否则不能称之为分布式系统,因此需要在C和A之间寻求平衡
    C(Consistency)一致性
    一致性是指更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致。与ACID的C完全不同
    A(Availability)可用性
    可用性是指服务一直可用,而且是正常响应时间。
    P(Partition tolerance)分区容错性
    分区容错性是指分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

    关系型与非关系型数据库的比较

    1.成本:Nosql数据库简单易部署,基本都是开源软件,不需要像使用Oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。
    2.查询速度:Nosql数据库将数据存储于缓存之中,而且不需要经过SQL层的解析,关系型数据库将数据存储在硬盘中,自然查询速度远不及Nosql数据库。
    3.存储数据的格式:Nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。
    4.扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。Nosql基于键值对,数据之间没有耦合性,所以非常容易水平扩展。
    5.持久存储:Nosql不使用于持久存储,海量数据的持久存储,还是需要关系型数据库
    6.数据一致性:非关系型数据库一般强调的是数据最终一致性,不像关系型数据库一样强调数据的强一致性,从非关系型数据库中读到的有可能还是处于一个中间态的数据,
    Nosql不提供对事务的处理。

    最近的数据库排名
    网站地址:https://db-engines.com/en/ranking
    在这里插入图片描述
    可以发现现在主流的还是关系型数据库,非关系型数据库中Redis和MongoDB最受欢迎

    展开全文
  • 关系数据库里,关系模式(模型)是型,关系是值,关系模式...关系实质上是一个二维表,表中每一条记录(行)在关系模式中被称为元组,每个字段(列)被称为属性。 前者是描述结构,后者是具体数据。严格上不能划等号。
    关系数据库里,关系模式(模型)是型,关系是值,关系模式是对关系的描述。关系实质上是一个二维表,表中每一条记录(行)在关系模式中被称为元组,每个字段(列)被称为属性。
    前者是描述结构,后者是具体数据。严格上不能划等号。
    展开全文
  • 关系模型用二维表表示实体集,利用公共属性实现实体之间的联系。一个关系数据库由若干个表组成,表与表之间通过在一个表中包含另一个表的主键(公共属性)的方法实现数据之间的联系。 1.关系 关系(Relation)是行与...
  • 关系数据库与NoSQL数据库简述

    千次阅读 2017-09-21 16:10:44
    关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名元组:可以理解为二维表中的一行,在数据库中经常被称为记录属性:可以理解为二维表中的一列,在数据库中经常被称为字段域:属性的取值范围...
  • 数据库 - 关系数据库

    千次阅读 2015-05-03 13:13:04
    关系数据库提出关系模型的是美国IBM公司的E.F.Codd (Edgar Frank Codd,1923-2003) , “关系数据库之父” 1970年提出关系数据模型 E.F.Codd, “A Relational Model of Data for Large Shared Data Banks”, ...
  • 关系数据库模型对应就是二维表: 关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名 元组:可以理解为二维表中的一行,在数据库中经常被称为记录 属性:可以理解为二维表中的一列,在数据库...
  • 简单来说,关系模型指的就是二维表格模型,而一个关系数据库就是由二维表及其之间的联系所组成的一个数据组织。 关系模型中常用的概念: 关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名...
  • 知识点:数据库表的相关概念、创建数据库表的方法、设计数据库表、向数据库表中插入数据、建立不同数据库表之间的关系、删除数据库表。 1、数据相关的一些概念 1.1 数据库里的数据是如何保存的? 数据库...
  • 关系数据库基础

    2016-04-07 15:38:24
     一个二维表被认为是一个关系,多个二维表按照一定的规律组合起来,就是关系数据库模型。每个二维表称为一个实体,表中的列被称为属性(Attribute),表中的行是实体的一个实例。  在一个关系数据库中,表和表...
  • 关系模型指的就是二维表格模型,而一个关系数据库就是由二维表及其之间的联系所组成的一个数据组织。 关系模型中常用的概念: 关系:一张二维表,每个关系都具有一个关系名,也就是表名 元组:二维表中的一行,在...
  • 常见的数据库模型分为两种,分别是关系数据库和...关系模型就是指二维表格模型,因而一个关系数据库就是由二维表及其之间的联系组成的一个数据组织。 关系数据库优点: 容易理解:二维表结构是非常贴近逻辑...
  • 数据建模中的二维表和一维表!

    千次阅读 2012-05-04 22:19:36
    什么是表/一维表/二维表,哪位给个准确的定义 [复制链接] <!-- .pcb {margin-right:0} --> 透视表要求是一维表, 那什么是表、一维表、二维表呢?查了一下午也没有找到准确的定义, 把找到...
  • Oracle 关系数据库

    2016-06-05 22:38:45
    以用户的观点来看,一个关系就是一张二维表关系数据模型是由关系数据结构、关系操作和关系的完整性约束三部分组成。 1、数据结构关系数据模型是由若干个关系模式组成的集合,关系模式的实例为关系,每个关系可以...
  • 数据库通常分为层次式数据库、网络式数据库关系数据库三种。而不同的数据库是按不同的数据结构来联系和组织的。  1.数据结构模型  (1)数据结构  所谓数据结构是指数据的组织形式或数据之间的联系。...
  • 什么是关系型数据库? 关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等...关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间联系组成的一个数据组织。 实体关系模型(Entity-Relat
  • 关系关系是行与列交叉的二维表 元组的集合称为关系实例,通常称为关系 元组:表中的一行称为关系的一个元组 属性:表中的一列称为关系的一个属性 属性域:每一个属性都有一个取值范围,称为属性域 超键:凡是能够...
  • 【数据库系统】数据库系统概论====第关系数据库 关系数据库简介 1970年IBM公司的E.F.Codd提出关系数据模型 1972年提出了关系的第一、第、第三范式 1974年提出了关系的BC范式 80年代后,关系数据库系统成为最...
  • 1. 关系数据库 关系数据库,是指采用了关系模型来组织数据的数据库。...简单来说,关系模型指的就是二维表格模型,而一个关系数据库就是由二维表及其之间的联系所组成的一个数据组织。 关系模型中常用的概念:
  • 关系数据库系统

    2018-11-17 16:30:30
    关系数据库系统概述 关系数据库系统的发展历史 关系数据模型 数据模型 = 数据结构 + 数据操作 + 完整性约束 数据结构(层次,网状,关系,对象) 数据操作(DDL,DML) 完整性约束(实体完整性/主键存在,参照...
  • 关系数据库到非关系数据库

    万次阅读 2017-10-22 22:33:59
    关系数据库 ...简单来说,关系模型指的就是二维表格模型,而一个关系数据库就是由二维表及其之间的联系所组成的一个数据组织。 关系模型中常用的概念: 关系:可以理解为一张二维表,每个关系
  • 数据库原理与应用(5)——关系、关系模式、关系数据库关系数据库模式 一、关系的形式化定义和概念 1、关系上域的定义 域(Domain):一组具有相同数据类型的值的集合,又称为值域(用D表示) 整数、实数、和字符...
  • 关系数据库 所谓关系数据库,,就是指采用了...可以理解为一张二维表,每个关系都有一个关系名,在数据库中被称为表名 2、元组 可以理解为二维表中的一行,在数据库中被称为记录 3、属性 可以理解为二维表

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,209
精华内容 11,283
关键字:

关系数据库二维表称为