首页数据库数据库理论(数据库原理是什么)

数据库理论(数据库原理是什么)

编程之家2023-10-22254次浏览

各位老铁们好,相信很多人对数据库理论都不是特别的了解,因此呢,今天就来为大家分享下关于数据库理论以及数据库原理是什么的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

数据库理论(数据库原理是什么)

关系数据库规范化理论的基础和内容

一个关系数据库模式由一组关系模式组成,一个关系模式由一组属性名组成。关系数据库设计,就是如何把已给定的相互关联的一组属性名分组,并把每一组属性名组成关系的问题。然而,属性的分组不是唯一的,不同的分组对应着不同的数据库应用系统,它们的效率往往相差很远。

为了使数据库设计合理可靠,简单实用,长期以来,形成了关系数据库设计的理论——规范化理论。

6.1关系规范化的作用

规范化,就是用形式更为简洁,结构更加规范的关系模式取代原有关系模式的过程。

如果将两个或两个以上实体的数据存放在一个表里,就会出现下列三个问题:

Ø数据冗余度大

数据库理论(数据库原理是什么)

Ø插入异常

Ø删除异常

所谓数据冗余,就是相同数据在数据库中多次重复存放的现象。数据冗余不仅会浪费存储空间,而且可能造成数据的不一致性。

插入异常是指,当在不规范的数据表中插入数据时,由于实体完整性约束要求主码不能为空的限制,而使有用数据无法插入的情况。

删除异常是指,当不规范的数据表中某条需要删除的元组中包含有一部分有用数据时,就会出现删除困难。

(以P98工资表为例)

数据库理论(数据库原理是什么)

解决上述三个问题的方法,就是将不规范的关系分解成为多个关系,使得每个关系中只包含一个实体的数据。

(讲例子解)

当然,改进后的关系模式也存在另一问题,当查询职工工资时需要将两个关系连接后方能查询,而关系连接的代价也是很大的。

那么,什么样的关系需要分解?分解关系模式的理论依据又是什么?分解完后能否完全消除上述三个问题?回答这些问题需要理论指导。下面,将加以讨论:

6.2函数依赖

6.2.1属性间关系

实体间的联系有两类:一类是实体与实体之间联系;另一类是实体内部各属性间的联系。数据库建模一章中讨论的是前一类,在这里我们将学习第二类。

和第一类一样,实体内部各属性间的联系也分为1:1、1:n和m:n三类:

例:职工(职工号,姓名,身份证号码,职称,部门)

1、一对一关系(1:1)

设X、Y是关系R的两个属性(集)。如果对于X中的任一具体值,Y中至多有一个值与之对应,反之,对于Y中的任一具体值,X中也至多有一个值与之对应,则称X、Y两属性间是一对一关系。

如本例职工关系中职工号与身份证号码之间就是一对一关系。

2、一对多关系(1:n)

设X、Y是关系R的两个属性(集)。如果对于X中的任一具体值,Y中可以找到多个值与之对应,而对于Y中的任一具体值,X中至多只有一个值与之对应,则称属性X对Y是一对多关系。

如职工关系中职工号与职称之间就是一对多的关系。

3、多对多关系(m:n)

设X、Y是关系R的两个属性(集)。如果对于X中的任一具体值,Y中有n个值与之对应,而对于Y中的任一具体值,X中也有m个值与之对应,则称属性X对Y是一对多(m:n)关系。

例如,职工关系中,职称与部门之间就是多对多的关系。

上述属性间的三种关系,实际上是属性值之间相互依赖与相互制约的反映,因而称之为属性间的数据依赖。

数据依赖共有三种:

Ø函数依赖(Functional Dependency,FD)

Ø多值依赖(Multivalued Dependency,MVD)

Ø连接依赖(Join Dependency,JD)

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

6.2.2函数依赖

函数依赖,是属性之间的一种联系。在关系R中,X、Y为R的两个属性或属性组,如果对于R的所有关系r都存在:对于X的每一个具体值,Y都只有一个具体值与之对应,则称属性Y函数依赖于属性X。或者说,属性X函数决定属性Y,记作X→Y。其中X叫作决定因素,Y叫作被决定因素。

上述定义,可简言之:如果属性X的值决定属性Y的值,那么属性Y函数依赖于属性X。换一种说法:如果知道X的值,就可以获得Y的值,则可以说X决定Y。

若Y函数不依赖于X,记作:X→Y。

X Y

若X→Y,Y→X,记作:

前面学习的属性间的三种关系,并不是每种关系中都存在着函数依赖。

u如果X、Y间是1:1关系,则存在函数依赖 X←→Y

u如果X、Y间是1:n关系,则存在函数依赖: X→Y或Y→X(多方为决定因素)

u如果X、Y间是m:n关系,则不存在函数依赖。

注意,属性间的函数依赖不是指R的某个或某些关系子集满足上述限定条件,而是指R的一切关系子集都要满足定义中的限定。只要有一个具体的关系r(R的一个关系子集)不满足定义中的条件,就破坏了函数依赖,使函数依赖不成立。

这里的关系子集,指的是R的某一部分元组的集合,例如:地测学院的学生关系中只包含了地测学院学生的数据,所以它是长安大学学生关系的一个子集。

6.2.3码的定义

前面,我们对码进行了直观化的定义,下面用函数依赖的概念对码作出较为精确的形式化的定义:

设K是关系模式R(U,F)中的属性或属性组,K’是K的任一子集。若K→U,而不存在K’→U,则K为R的候选码(Candidate Key)

Ø若候选码多于一个,则选其中的一个为主码(Primary Key);

Ø包含在任一候选码中的属性,叫做主属性(Primary Attribute);

Ø不包含在任何码中的属性称为非主属性(Nonprime Attribute)或非码属性(Nonkey Attribute)

Ø关系模式中,最简单的情况是单个属性是码,称为单码(Single Key);最极端的情况是整个属性组是码,称为全码(All-Key)。

前面已多次遇到单码的情况,下面是一个全码的例子:

签约(演员名,制片公司,电影名)

外码:设有两个关系R和S,X是R的属性或属性组,并且X不是R的码,但X是S的码(或与S的码意义相同),则称X是R的外部码(Foreign Key),简称外码或外键。

如:职工(职工号,姓名,性别,职称,部门号)

部门(部门号,部门名,电话,负责人)

其中职工关系中的“部门号”就是职工关系的一个外码。

在此需要注意,在定义中说X不是R的码,并不是说X不是R的主属性,X不是码,但可以是码的组成属性,或者是任一候选码中的一个主属性。

如:学生(学生号,姓名,性别,年龄…)

课程(课程号,课程名,任课老师…)

选课(学生号,课程号,成绩)

在选课关系中,(学生号,课程号)是该关系的码,学生号、课程号又分别是组成主码的属性(但单独不是码),它们分别是学生关系和课程关系的主码,所以是选课关系的两个外码。

关系间的联系,可以通过同时存在于两个或多个关系中的主码和外码的取值来建立。如要查询某个职工所在部门的情况,只需查询部门表中的部门号与该职工部门号相同的记录即可。所以,主码和外码提供了一个表示关系间联系的途径。

6.2.4函数依赖和码的唯一性

由上述码的形式化定义,我们可以说:码是由一个或多个属性组成的,可唯一标识元组的最小属性组。

码在关系中总是唯一的,即一个码函数唯一地决定一行。如果码的值重复,则整个元组都会重复。否则,违反了实体完整性规则。而元组的重复则表示存在两个完全相同的实体,这显然是不可能的,所以码是不允许重复取值的。

所以,只有当某个属性或属性组能够函数决定关系中的每一个其它的属性,且该属性组的任何一个真子集都做不到这一点时,该属性或属性组才是该关系的码。

函数依赖是一个与数据有关的事物规则的概念。如果属性B函数依赖于属性A,那么若知道了A的值,则完全可以找到B的值。这并非是可以由A的值计算出B的值,而是逻辑上只能存在一个B的值。

6.3关系模式的规范化

一、非规范化的关系

当一个表中存在还可以再分的数据项时,这个表就是非规范化的表。非规范化表存在两种情况:

Ø表中具有组合数据项(P102表6-4)

Ø表中具有多值数据项(P103表6-5)

例:

职工号

姓名

工资

基本工资

职务工资

工龄工资

1002

张三

1000

800

200

职工号

姓名

职称

系名

系办地址

学历

毕业年份

001

张三

教授

计算机

1305

大学

研究生

1963

1982

那么什么是规范化关系呢?

当一个关系中的所有分量都是不可再分的数据项时,该关系是规范化的。即当表中不存在组合数据项和多值数据项,只存在不可分的数据项时,这个表是规范化的。

二维表按其规范化程度从低到高可分为5级范式(Normal Form),分别称为1NF、2NF、3NF(BCNF)、4NF、5NF。规范化程度较高者必是较低者的子集,即:

1NF 2NF 3NF BCNF 4NF 5NF

二、第一范式(1NF)

定义1:如果关系模式R中不包含多值属性,则R满足第一范式(First Normal Form),记作:

R∈1NF

1NF是对关系的最低要求,不满足1NF的关系是非规范化的关系。

非规范化关系转化为规范化关系1NF方法很简单,只要上表分别从横向、纵向展开即可。如下表:

职工号

姓名

基本工资

职务工资

工龄工资

1002

张三

1000

800

200

1005

李四

1200

900

150

职工号

姓名

职称

系名

系办地址

学历

毕业年份

1002

张三

教授

计算机

1305

大学

1963

1002

张三

教授

计算机

1305

研究生

1982

1005

李四

讲师

信电

2206

大学

1989

上表虽然符合1NF,但仍是有问题的关系,表中存在大量的数据冗余和潜在的数据更新异常。原因是(职工号,学历)是右表的码,但姓名、职称、系名、系办地址却与学历无关,只与码的一部分有关。所以上表还需进一步地规范化。

三、第二范式(2NF)

定义1:设X、Y是关系R的两个不同的属性或属性组,且X→ Y。如果存在X的某一个真子集X’,使X’→ Y成立,则称Y部分函数依赖于X,记作:X P→ Y(Partial)。反之,则称Y完全函数依赖于X,记作:X F→ Y(Full)

定义2:如果一个关系 R∈1NF,且它的所有非主属性都完全函数依赖于R的任一候选码,则R属于第二范式,记作:R∈2NF。

说明:上述定义中所谓的候选码也包括主码,因为码首先应是候选码,才可以被指定为码。

例如关系模式:

职工(职工号,姓名,职称,项目号,项目名称,项目角色)中

(职工号,项目号)是该关系的码,而职工号→姓名、职工号→职称、项目号→项目名称…

所以(职工号,项目号)P→职称、(职工号,项目号)P→项目名称

故上述职工关系不符合第二范式要求。它存在三个问题:插入异常、删除异常和修改异常。

其中修改异常是这样的,当职工关系中项目名称发生变化时,由于参与该项目的人员很多,每人一条记录,要修改项目信息,就得对每一个参加该项目的人员信息进行修改,加大了工作量,还有可能发生遗漏,存在着数据一致性被破坏的可能。

可把上述职工关系分解成如下三个关系:

职工(职工号,姓名,职称)

参与项目(职工号,项目号,项目角色)

项目(项目号,项目名称)

上述三个关系都符合定义2的要求,所以都符合2NF

推论:如果关系模式R∈1NF,且它的每一个候选码都是单码,则R∈2NF

符合第二范式的关系模式仍可能存在数据冗余、更新异常等问题。如关系

职工信息(职工号,姓名,职称,系名,系办地址)

虽然也符合2NF,但当某个系中有100名职工时,元组中的系办地址就要重复100次,存在着较高的数据冗余。原因是关系中,系办地址不是直接函数依赖于职工号,而是因为职工号函数决定系名,而系名函数决定系办地址,才使得系办地址函数依赖于职工号,这种依赖是一个传递依赖的过程。

所以,上述职工信息的关系模式还需要进一步的规范化。

四、第三范式(3NF)

定义1:在关系R中,X、Y、Z是R的三个不同的属性或属性组,如果X→Y,Y→Z,但Y→X,且Y不是X的子集,则称Z传递函数依赖于X。

定义2:如果关系模式R∈2NF,且它的每一个非主属性都不传递依赖于任何候选码,则称R是第三范式,记作:R∈3NF

推论1:如果关系模式R∈1NF,且它的每一个非主属性既不部分依赖、也不传递依赖于任何候选码,则R∈3NF

推论2:不存非主属性的关系模式一定为3NF

五、改进的3NF——BCNF(Boyee-Codd Normal Form)

定义:设关系模式R(U,F)∈1NF,若F的任一函数依赖X→Y(Y X)中X都包含了R的一个码,则称R∈BCNF。

换言之,在关系模式R中,如果每一个函数依赖的决定因素都包含码,则R∈BCNF

推论:如果R∈BCNF,则:

Ø R中所有非主属性对每一个码都是完全函数依赖;

Ø R中所有主属性对每一个不包含它的码,都是完全函数依赖;

Ø R中没有任何属性完全函数依赖于非码的任何一组属性。

定理:如果R∈BCNF,则R∈3NF一定成立。

证明:(结合传递依赖的定义,用反证法)

注意:当R∈3NF时,R未必属于BCNF。因为3NF比BCNF放宽了一个限制,它允许决定因素不包含码。例如:

通讯(城市名,街道名,邮政编码)中:

F={(城市名,街道名)→邮政编码,邮政编码→城市名}

非主属性邮政编码完全函数依赖于码,且无传递依赖,故属于3NF,但邮政编码也是一个决定因素,而且它没有包含码,所以该关系不属于BCNF。

又如:

Teaching(Student,Teacher,Course)简记为Teaching(S,T,C)

规定:一个教师只能教一门课,每门课程可由多个教师讲授;学生一旦选定某门课程,教师就相应地固定。

F={T→C,(S,C)→T,(S,T)→C}

该关系的候选码是(S,C)和(S,T),因此,三个属性都是主属性,由于不存在非主属性,该关系一定是3NF。但由于决定因素T没包含码,故它不是BCNF。

关系模式Teaching仍然存在着数据冗余问题,因为存在着主属性对码的部分函数依赖问题。

确切地表示:F={T→C,(S,C)P→T,(S,T) P→C}

所以Teaching关系可以分解为以下两个BCNF关系模式:

Teacher(Teacher,Course) Student(Student,Teacher)

3NF的“不彻底”性,表现在可能存在主属性对码的部分依赖和传递依赖。

一个关系模式如果达到了BCNF,那么,在函数依赖范围内,它就已经实现了彻底的分离,消除了数据冗余、插入和删除异常。

6.4多值依赖和第四范式

一、多值依赖(Multivalued Dependency)

课程C

教员T

参考书B

物理

李勇

普通物理学

物理

李勇

光学原理

物理

李勇

物理习题集

物理

王军

普通物理学

物理

王军

光学原理

物理

王军

物理习题集

数学

李勇

数学分析

数学

李勇

微分方程

数学

李勇

高等代数

数学

张平

数学分析

数学

张平

微分方程

数学

张平

高等代数

计算数学

张平

数学分析

计算数学

张平

计算数学

计算数学

周峰

数学分析

计算数学

周峰

计算数学

课程C

教员T

参考书B

物理

李勇

王军

普通物理学

光学原理

物理习题集

数学

李勇

张平

数学分析

微分方程

高等代数

计算数学

张平

周峰

数学分析

计算数学

例:学校中某一门课程由多个教员讲授,他们使用相同的一套参考书,每个教员可以讲授多门课程,每种参考书可以供多门课程使用。下列是用一个非规范化的表来表示教员T,课程C和参考书B之间的关系。

把上表变换成一张规范化的二维表Teaching,如右表

关系模式Teaching(C,T,B)的码是(C,T,B),即All-Key。因而Teaching∈BCNF。按照上述语义规定,当某门课程增加一名讲课教员时,就要向Teaching表中增加与相应参考书等数目的元组。同样,某门课程要去掉一本参考书时,则必须删除相应数目的元组。

对数据的增、删、改很不方便,数据的冗余也十分明显。如果仔细考察这类关系模式,会发现它具有一种称之为多值依赖的数据依赖关系。

定义:设R(U)是属性集U上的一个关系模式,X,Y,Z是U的子集,且Z=U-X-Y。如果对R(U)的任一关系r,给定一对(x,z)值,都有一组y值与之对应,这组y值仅仅决定于x值而与z值无关。则称Y多值依赖于X,或X多值决定Y,记作:X→→Y。――

例如,在关系模式Teaching中,对于一个(C,B)值(物理,普通物理学),有一组T值{李勇,王军},而这组值仅仅决定于课程C上的值(物理)。即对于另一个(物理,光学原理),它对应的T值仍然是{李勇,王军},所以T的值与B的值无关,仅决定于C的值,即C→→T。

多值依赖的另一个等价的形式化定义为:

设关系模式R(U),X、Y、Z是U的子集,Z=U-X-Y,r是R的任意一个关系,t1、t2是r的任意两个元组。如果t1[X]=t2[X],并在r中存在两个元组t3、t4,使得:

t3[X]=t4[X]=t1[X]

t3[Y]=t1[Y],t3[Z]=t2[Z],

t4[Y]=t2[Y],t4[Z]=t1[Z]

成立,则X→→Y。

换句话说:如果X→→Y在R(U)中成立,则只要在R的任一关系r中存在两个元组t1、t2在X属性上的值相等,则交换这两个元组在Y(或Z)上的值后得到的两个新元组t3、t4也必是关系r中的元组。

定义中如果Z=Ф(空集),则称X→→Y为平凡的多值依赖,否则为非平凡的多值依赖。

多值依赖具有如下性质:

1.对称性:若X→→Y,则X→→Z,其中Z=U-X-Y

2.传递性:若X→→Y,Y→→Z,则X→→Z-Y

3.若X→→Y,X→→Z,则X→→YZ

4.若X→→Y,X→→Z,则X→→Y∩Z

5.若X→→Y,X→→Z,则X→→Y-Z,X→→Z-Y

多值依赖与函数依赖相比,具有下面两个基本区别:

(1)多值依赖的有效性与属性集的范围有关

若X→→Y在U上成立,则在V(XY V U)上一定成立;反之则不然,即X→→Y在V(V U)上成立,在U上并不一定成立。这是因为多值依赖的定义中不仅涉及属性组X、Y,而且涉及U中的其余属性Z(Z=U-X-Y)。

一般地说,在R(U)上若有X→→Y在V(V U)上成立,则称X→→Y为R(U)的嵌入型多值依赖。

而在关系模式R(U)中函数依赖X→Y的有效性,仅决定于X和Y这两个属性集的值。只要在R(U)的任何一个关系r中,元组在X和Y上的值使得X→Y成立,则X→Y在任何属性集V(XY V U)上也成立。

(2)若函数依赖X→Y在R(U)上成立,则对于任何Y’ Y均有X→Y’成立。而多值依赖X→→Y若在R(U)上成立,却不能断言对于任何Y’ Y有X→→Y’成立。

多值依赖的约束规则:在具有多值依赖的关系中,如果随便删去一个元组,就会破坏其对称性,那么,为了保持多值依赖关系中的“多值依赖”性,就必须删去另外的相关元组以维持其对称性。这就是多值依赖的约束规则。目前的RDBMS尚不具有维护这种约束的能力,需要程序员在编程中实现。

函数依赖可看成是多值依赖的特例,即函数依赖一定是多值依赖。而多值依赖则不一定就有函数依赖。

二、第四范式(4NF)

定义:如果关系模式R∈1NF,对于R的每个非平凡的多值依赖X→→Y(Y X),X含有码,则称R是第四范式,即R∈4NF

课程C

教员T

参考书B

物理

李勇

普通物理学

物理

李勇

光学原理

物理

李勇

物理习题集

物理

王军

普通物理学

物理

王军

光学原理

物理

王军

物理习题集

数学

李勇

数学分析

数学

李勇

微分方程

数学

李勇

高等代数

数学

张平

数学分析

数学

张平

微分方程

数学

张平

高等代数

计算数学

张平

数学分析

计算数学

张平

计算数学

计算数学

周峰

数学分析

计算数学

周峰

计算数学

Teaching关系

关系模式R∈4NF时,R中所有的非平凡多值依赖实际上就是函数依赖。因为每一个决定因素中都含有码,所以R一定属于BCNF。

4NF实际上就是限制关系模式的属性间不允许有非平凡,而且非函数依赖的多值依赖存在。反过来说,4NF所允许的非平凡多值依赖实际上是函数依赖。

例题中的Teaching关系属于BCNF,但它不属于4NF。因为它的码是(C,T,B),关系中存在非平凡多值依赖C→→T,C→→B,但C不包含码,而只是码的一部分。

课程C

参考书B

物理

普通物理学

物理

光学原理

物理

物理习题集

数学

数学分析

数学

微分方程

数学

高等代数

计算数学

数学分析

计算数学

计算数学

CB关系

课程C

教员T

物理

李勇

物理

王军

数学

李勇

数学

张平

计算数学

张平

计算数学

周峰

CT关系

要使Teaching关系符合4NF,必须将其分解为CT(C,T)和CB(C,B)两个关系模式。如右表:

从表中显而易见,符合BCNF的关系Teaching仍然存在着数据冗余,而分解后的关系CT和CB中只有平凡多值依赖,所以符合4NF,它们已经消除了数据冗余。可以说:BCNF是在只有函数依赖的关系模式中,规范化程度最高的范式,而4NF是在有多值依赖的关系模式中,规范化程度最高的范式。

如果关系模式中存在连接依赖,即便它符合4NF,仍有可能遇到数据冗余及更新异常等问题。所以对于达到4NF的关系模式,还需要消除其中可能存在的连接依赖,才可以进一步达到5NF的关系模式。

关于连接依赖和5NF的内容,已超出了本课程教学大纲的要求,在此不再介绍。

数据库的发展简史

使用计算机后,随着数据处理量的增长,产生了数据管理技术。数据管理技术的发展与计算机硬件(主要是外部存储器)系统软件及计算机应用的范围有着密切的联系。数据管理技术的发展经历了以下四个阶段:人工管理阶段、文件系统阶段、数据库阶段和高级数据库技术阶段。

数据管理的诞生

数据库的历史可以追溯到五十年前,那时的数据管理非常简单。通过大量的分类、比较和表格绘制的机器运行数百万穿孔卡片来进行数据的处理,其运行结果在纸上打印出来或者制成新的穿孔卡片。而数据管理就是对所有这些穿孔卡片进行物理的储存和处理。然而,1950年雷明顿兰德公司(Remington Rand Inc)的一种叫做Univac I的计算机推出了一种一秒钟可以输入数百条记录的磁带驱动器,从而引发了数据管理的革命。1956年IBM生产出第一个磁盘驱动器—— the Model 305 RAMAC。此驱动器有50个盘片,每个盘片直径是2英尺,可以储存5MB的数据。使用磁盘最大的好处是可以随机存取数据,而穿孔卡片和磁带只能顺序存取数据。

1951: Univac系统使用磁带和穿孔卡片作为数据存储。

数据库系统的萌芽出现于二十世纪60年代。当时计算机开始广泛地应用于数据管理,对数据的共享提出了越来越高的要求。传统的文件系统已经不能满足人们的需要,能够统一管理和共享数据的数据库管理系统(DBMS)应运而生。数据模型是数据库系统的核心和基础,各种DBMS软件都是基于某种数据模型的。所以通常也按照数据模型的特点将传统数据库系统分成网状数据库、层次数据库和关系数据库三类。

最早出现的网状DBMS,是美国通用电气公司Bachman等人在1961年开发的IDS(Integrated Data Store)。1964年通用电气公司(General ElectricCo.)的Charles Bachman成功地开发出世界上第一个网状DBMS也即第一个数据库管理系统——集成数据存储(Integrated Data Store IDS),奠定了网状数据库的基础,并在当时得到了广泛的发行和应用。IDS具有数据模式和日志的特征,但它只能在GE主机上运行,并且数据库只有一个文件,数据库所有的表必须通过手工编码生成。之后,通用电气公司一个客户——BF Goodrich Chemical公司最终不得不重写了整个系统,并将重写后的系统命名为集成数据管理系统(IDMS)。

网状数据库模型对于层次和非层次结构的事物都能比较自然的模拟,在关系数据库出现之前网状DBMS要比层次DBMS用得普遍。在数据库发展史上,网状数据库占有重要地位。

层次型DBMS是紧随网络型数据库而出现的,最著名最典型的层次数据库系统是IBM公司在1968年开发的IMS(Information Management System),一种适合其主机的层次数据库。这是IBM公司研制的最早的大型数据库系统程序产品。从60年代末产生起,如今已经发展到IMSV6,提供群集、N路数据共享、消息队列共享等先进特性的支持。这个具有30年历史的数据库产品在如今的WWW应用连接、商务智能应用中扮演着新的角色。

1973年Cullinane公司(也就是后来的Cullinet软件公司),开始出售Goodrich公司的IDMS改进版本,并且逐渐成为当时世界上最大的软件公司。网状数据库和层次数据库已经很好地解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺。用户在对这两种数据库进行存取时,仍然需要明确数据的存储结构,指出存取路径。而后来出现的关系数据库较好地解决了这些问题。

1970年,IBM的研究员E.F.Codd博士在刊物《Communication of the ACM》上发表了一篇名为“A Relational Model of Data for Large Shared Data Banks”的论文,提出了关系模型的概念,奠定了关系模型的理论基础。尽管之前在1968年Childs已经提出了面向集合的模型,然而这篇论文被普遍认为是数据库系统历史上具有划时代意义的里程碑。Codd的心愿是为数据库建立一个优美的数据模型。后来Codd又陆续发表多篇文章,论述了范式理论和衡量关系系统的12条标准,用数学理论奠定了关系数据库的基础。关系模型有严格的数学基础,抽象级别比较高,而且简单清晰,便于理解和使用。但是当时也有人认为关系模型是理想化的数据模型,用来实现DBMS是不现实的,尤其担心关系数据库的性能难以接受,更有人视其为当时正在进行中的网状数据库规范化工作的严重威胁。为了促进对问题的理解,1974年ACM牵头组织了一次研讨会,会上开展了一场分别以Codd和Bachman为首的支持和反对关系数据库两派之间的辩论。这次著名的辩论推动了关系数据库的发展,使其最终成为现代数据库产品的主流。

1969年Edgar F.“Ted” Codd发明了关系数据库。

1970年关系模型建立之后,IBM公司在San Jose实验室增加了更多的研究人员研究这个项目,这个项目就是著名的System R。其目标是论证一个全功能关系DBMS的可行性。该项目结束于1979年,完成了第一个实现SQL的 DBMS。然而IBM对IMS的承诺阻止了System R的投产,一直到1980年System R才作为一个产品正式推向市场。IBM产品化步伐缓慢的三个原因:IBM重视信誉,重视质量,尽量减少故障;IBM是个大公司,官僚体系庞大,IBM内部已经有层次数据库产品,相关人员不积极,甚至反对。

然而同时,1973年加州大学伯克利分校的Michael Stonebraker和Eugene Wong利用System R已发布的信息开始开发自己的关系数据库系统Ingres。他们开发的Ingres项目最后由Oracle公司、Ingres公司以及硅谷的其他厂商所商品化。后来,System R和Ingres系统双双获得ACM的1988年“软件系统奖”。

1976年霍尼韦尔公司(Honeywell)开发了第一个商用关系数据库系统——Multics Relational Data Store。关系型数据库系统以关系代数为坚实的理论基础,经过几十年的发展和实际应用,技术越来越成熟和完善。其代表产品有Oracle、IBM公司的 DB2、微软公司的MS SQL Server以及Informix、ADABAS D等等。 1974年IBM的Ray Boyce和Don Chamberlin将Codd关系数据库的12条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了SQL(Structured Query Language)语言。SQL语言的功能包括查询、操纵、定义和控制,是一个综合的、通用的关系数据库语言,同时又是一种高度非过程化的语言,只要求用户指出做什么而不需要指出怎么做。SQL集成实现了数据库生命周期中的全部操作。SQL提供了与关系数据库进行交互的方法,它可以与标准的编程语言一起工作。自产生之日起,SQL语言便成了检验关系数据库的试金石,而SQL语言标准的每一次变更都指导着关系数据库产品的发展方向。然而,直到二十世纪七十年代中期,关系理论才通过SQL在商业数据库Oracle和DB2中使用。

1986年,ANSI把SQL作为关系数据库语言的美国标准,同年公布了标准SQL文本。SQL标准有3个版本。基本SQL定义是ANSⅨ3135-89,“Database Language- SQL with Integrity Enhancement”[ANS89],一般叫做SQL-89。SQL-89定义了模式定义、数据操作和事务处理。SQL- 89和随后的ANSⅨ3168-1989,“Database Language-Embedded SQL”构成了第一代SQL标准。ANSⅨ3135-1992[ANS92]描述了一种增强功能的SQL,叫做SQL-92标准。SQL-92包括模式操作,动态创建和SQL语句动态执行、网络环境支持等增强特性。在完成SQL-92标准后,ANSI和ISO即开始合作开发SQL3标准。SQL3的主要特点在于抽象数据类型的支持,为新一代对象关系数据库提供了标准。

1976年IBM E.F.Codd发表了一篇里程碑的论文“R系统:数据库关系理论”,介绍了关系数据库理论和查询语言SQL。Oracle的创始人Ellison非常仔细地阅读了这篇文章,被其内容震惊,这是第一次有人用全面一致的方案管理数据信息。作者E.F.Codd 1966年就发表了关系数据库理论,并在IBM研究机构开发原型,这个项目就是R系统,存取数据表的语言就是SQL。Ellison看完后,敏锐意识到在这个研究基础上可以开发商用软件系统。而当时大多数人认为关系数据库不会有商业价值。Ellison认为这是他们的机会:他们决定开发通用商用数据库系统Oracle,这个名字来源于他们曾给中央情报局做过的项目名。几个月后,他们就开发了Oracle 1.0。但这只不过是个玩具,除了完成简单关系查询不能做任何事情,他们花相当长的时间才使Oracle变得可用,维持公司运转主要靠承接一些数据库管理项目和做顾问咨询工作。而IBM却没有计划开发,为什么蓝色巨人放弃了这个价值上百亿的产品,原因有很多:IBM的研究人员大多是学术出身,他们最感兴趣的是理论,而非推向市场的产品,从学术上看,研究成果应公开发表论文和演讲能使他们成名,为什么不呢?还有一个很主要的原因就是IBM当时有一个销售得还不错的层次数据库产品IMS。直到1985年IBM才发布了关系数据库DB2,Ellision那时已经成了千万富翁。Ellison曾将IBM选择Microsoft的MS-DOS作为IBM-PC机的操作系统比为:“世界企业经营历史上最严重的错误,价值超过了上千亿美元。”IBM发表R系统论文,而且没有很快推出关系数据库产品的错误可能仅仅次之。Oracle的市值在1996年就达到了280亿美元。随着信息技术和市场的发展,人们发现关系型数据库系统虽然技术很成熟,但其局限性也是显而易见的:它能很好地处理所谓的“表格型数据”,却对技术界出现的越来越多的复杂类型的数据无能为力。九十年代以后,技术界一直在研究和寻求新型数据库系统。但在什么是新型数据库系统的发展方向的问题上,产业界一度是相当困惑的。受当时技术风潮的影响,在相当一段时间内,人们把大量的精力花在研究“面向对象的数据库系统(object oriented database)”或简称“OO数据库系统”。值得一提的是,美国Stonebraker教授提出的面向对象的关系型数据库理论曾一度受到产业界的青睐。而Stonebraker本人也在当时被Informix花大价钱聘为技术总负责人。

然而,数年的发展表明,面向对象的关系型数据库系统产品的市场发展的情况并不理想。理论上的完美性并没有带来市场的热烈反应。其不成功的主要原因在于,这种数据库产品的主要设计思想是企图用新型数据库系统来取代现有的数据库系统。这对许多已经运用数据库系统多年并积累了大量工作数据的客户,尤其是大客户来说,是无法承受新旧数据间的转换而带来的巨大工作量及巨额开支的。另外,面向对象的关系型数据库系统使查询语言变得极其复杂,从而使得无论是数据库的开发商家还是应用客户都视其复杂的应用技术为畏途。二十世纪六十年代后期出现了一种新型数据库软件:决策支持系统(DSS),其目的是让管理者在决策过程中更有效地利用数据信息。于是在1970年,第一个联机分析处理工具——Express诞生了。其他决策支持系统紧随其后,许多是由公司的IT部门开发出来的。

1985年,第一个商务智能系统(business intelligence)由Metaphor计算机系统有限公司为Procter& Gamble公司开发出来,主要是用来连接销售信息和零售的扫描仪数据。同年, Pilot软件公司开始出售第一个商用客户/服务器执行信息系统——Command Center。同样在这年,加州大学伯克利分校Ingres项目演变成Postgres,其目标是开发出一个面向对象的数据库。此后一年, Graphael公司开发了第一个商用的对象数据库系统—Gbase。

1988年,IBM公司的研究者Barry Devlin和Paul Murphy发明了一个新的术语—信息仓库,之后,IT的厂商开始构建实验性的数据仓库。1991年,W.H. Bill Inmon出版了一本“如何构建数据仓库”的书,使得数据仓库真正开始应用。

1991: W.H.“Bill” Inmon发表了”构建数据仓库”

二十世纪九十年代,随着基于PC的客户/服务器计算模式和企业软件包的广泛采用,数据管理的变革基本完成。数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。Internet的异军突起以及XML语言的出现,给数据库系统的发展开辟了一片新的天地。

数据库原理是什么

数据库原理是将数据按照结构化的方法存储,每个数据表都必须对各个字段定义好(也就是先定义好表的结构),再根据表的结构存入数据,这样做的好处就是由于数据的形式和内容在存入数据之前就已经定义好了,所以整个数据库的可靠性和稳定性都比较高。

扩展资料:

数据库为了避免重复、规范化数据以及充分利用好存储空间,把数据按照最小关系表的形式进行存储,这样数据管理的就可以变得很清晰、一目了然,当然这主要是一张数据表的情况。如果是多张表情况就不一样了,由于数据涉及到多张数据表,数据表之间存在着复杂的关系。

随着数据表数量的增加,数据管理会越来越复杂。而数据库的数据存储方式是用平面数据集的方式集中存放,虽然会存在数据被重复存储,从而造成存储空间被浪费的问题,但是基本上单个数据库都是采用单独存放的形式,所以数据往往能存成一个整体,这对于数据的读写提供了极大的方便。

参考资料来源:

百度百科——数据库

百度百科——数据库系统

关于本次数据库理论和数据库原理是什么的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

数据库完整性约束(数据库的完整性包含哪些完整性约束)网易mc服务器(网易我的世界启动器如何搜索服务器)