关系模型 (计算机)
出自 MBA智库百科(https://wiki.mbalib.com/)
关系模型(Relational Model)
目录 |
用于数据库管理的关系模型是基于谓词逻辑和集合论的一种数据模型,广泛被使用于数据库之中。最早于1969年由埃德加•科德提出。
关系模型的基本假定是所有数据都表示为数学上的关系,就是说n个集合的笛卡儿积的一个子集,有关这种数据的推理通过二值(就是说没有NULL)的谓词逻辑来进行,这意味着对每个命题都没有两种可能的赋值:要么是真要么是假。数据通过关系演算和关系代数的一种方式来操作。关系模型是采用二维表格结构表达实体类型及实体间联系的数据模型.
关系模型允许设计者通过数据库规范化的提炼,去建立一个信息的一致性的模型。访问计划和其他实现与操作细节由DBMS引擎来处理,而不应该反映在逻辑模型中。这与SQL DBMS普遍的实践是对立的,在它们那里性能调整经常需要改变逻辑模型。
基本的关系建造块是域或者叫数据类型。元组是属性的有序多重集(multiset),属性是域和值的有序对。关系变量(relvar)是域和名字的有序对(序偶)的集合,它充当关系的表头(header)。关系是元组的集合。尽管这些关系概念是数学上的定义的,它们可以宽松的映射到传统数据库概念上。表是关系的公认的可视表示;元组类似于行的概念。
网状数据库和层次数据库已经很好地解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺。用户在对这两种数据库进行存取时,仍然需要明确数据的存储结构,指出存取路径。而后来出现的关系数据库较好地解决了这些问题。关系数据库理论出现于60年代末到70年代初。1970年,IBM的研究员E.F.Codd博士发表《大型共享数据银行的关系模型》一文提出了关系模型的概念。后来Codd又陆续发表多篇文章,奠定了关系数据库的基础。关系模型有严格的数学基础,抽象级别比较高,而且简单清晰,便于理解和使用。但是当时也有人认为关系模型是理想化的数据模型,用来实现DBMS是不现实的,尤其担心关系数据库的性能难以接受,更有人视其为当时正在进行中的网状数据库规范化工作的严重威胁。为了促进对问题的理解,1974年ACM牵头组织了一次研讨会,会上开展了一场分别以Codd和Bachman为首的支持和反对关系数据库两派之间的辩论。这次著名的辩论推动了关系数据库的发展,使其最终成为现代数据库产品的主流。
关系数据模型提供了关系操作的特点和功能要求,但不对DBMS的语言给出具体的语法要求。对关系数据库的操作是高度非过程化的,用户不需要指出特殊的存取路径,路径的选择由DBMS的优化机制来完成。Codd在70年代初期的论文论述了范式理论和衡量关系系统的12条标准,用数学理论奠定了关系数据库的基础。Codd博士也以其对关系数据库的卓越贡献获得了1981年ACM图灵奖。
关系数据模型是以集合论中的关系概念为基础发展起来的。关系模型中无论是实体还是实体间的联系均由单一的结构类型——关系来表示。在实际的关系数据库中的关系也称表。一个关系数据库就是由若干个表组成。
关系模型的基本原理是信息原理:所有信息都表示为关系中的数据值。所以,关系变量在设计时刻是相互无关联的;反而,设计者在多个关系变量中使用相同的域,如果一个属性依赖于另一个属性,则通过参照完整性来强制这种依赖性。
关系模型和层次、网状模型相比,有以下特点:
1、数据结构简单(二维表格);
2、以关系运算理论、关系模式设计理论作为理论基础。
单一的数据结构——关系
现实世界的实体以及实体间的各种联系均用关系来表示,从用户角度看,关系模型中数据的逻辑结构是一张二维表。
关系操作集合
常用的关系操作包括查询操作和插入、删除、修改操作两大部分。其中查询操作的表达能力最重要,包括:选择、投影、连接、除、并、交、差等。
关系模型中的关系操作能力早期通常是用代数方法或逻辑方法来表示,分别称为关系代数和关系演算。关系代数是用对关系的代数运算来表达查询要求的方式;关系演算是用谓词来表达查询要求的方式。另外还有一种介于关系代数和关系演算的语言称为结构化查询语言,简称SQL。
关系的数据完整性
包括:域完整性、实体完整性、参照完整性和用户自定义的完整性。
域完整性:指属性的取值范围,如性别取值应为男或女。
实体完整性(Entity Integrity)规则:若属性A是基本关系R的主属性,则属性A不能取空值。例如:在课程表(课程号,课程名,教师,周课时数,备注)中,“课程号”属性为主键,则“课程号”不能取相同的值,也不能取空值。
参照完整性规则:若属性(或属性组)F是基本关系R的外键,它与基本关系S的主键Ks相对应(关系R和S不一定是不同的关系),则对于关系R中每个元组在属性F上的值必须为:
1、或者取空值(F中的每个属性值均为空);
2、或者等于S中某个元组的主键值。
部门(部门号,名称,地点)
其中职工号是“职工”关系的主键,部门号是外键,而“部门”关系中部门号是主键,则职工关系中的每个元组的部门号属性只能取下面两类值:
第1类:空值,表示尚未给该职工分配部门;
第2类:非空值,但该值必须是部门关系中某个元组的部门号值,表示该职工不可能分配到一个不存在的部门中,即被参照关系“部门”中一定存在一个元组,它的主键值等于该参照关系“职工”中的外键值。
域完整性、实体完整性和参照完整性是关系模型中必须满足的完整性约束条件,只要是关系数据库系统就应该支持域完整性、实体完整性和参照完整性。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是对某些具体关系数据库的约束条件。例如:选课表(课程号,学号,成绩),在定义关系选课表时,我们可以对成绩这个属性定义必须大于等于0的约束。
1、数据结构单一
关系模型中,不管是实体还是实体之间的联系,都用关系来表示,而关系都对应一张二维数据表,数据结构简单、清晰。
2、关系规范化,并建立在严格的理论基础上
构成关系的基本规范要求关系中每个属性不可再分割,同时关系建立在具有坚实的理论基础的严格数学概念基础上。
3、概念简单,操作方便
关系模型最大的优点就是简单,用户容易理解和掌握,一个关系就是一张二维表格,用户只需用简单的查询语言就能对数据库进行操作。