关系模型
模型
关系模型的基本假定是所有数据都表示为数学上的关系,就是说 n 个集合的笛卡儿积的一个子集,有关这种数据的推理通过二值(就是说没有NULL)的谓词逻辑来进行,这意味着对每个命题都没有两种可能的赋值:要么是真要么是假。数据通过关系演算和关系代数的一种方式来操作。关系模型是采用二维表格结构表达实体类型及实体间联系的数据模型.
关系模型允许设计者通过数据库规范化的提炼,去建立一个信息的一致性的模型。访问计划和其他实现与操作细节由DBMS引擎来处理,而不应该反映在逻辑模型中。这与SQL DBMS普遍的实践是对立的,在它们那里性能调整经常需要改变逻辑模型。
基本的关系建造块是域或者叫数据类型。元组是属性的有序多重集(multiset),属性是域和值的有序对。关系变量(relvar)是域和名字的有序对(序偶)的集合,它充当关系的表头(header)。关系是元组的集合。尽管这些关系概念是数学上的定义的,它们可以宽松的映射到传统数据库概念上。表是关系的公认的可视表示;元组类似于 行 的概念。
关系模型的基本原理是信息原理:所有信息都表示为关系中的数据值。所以,关系变量在设计时刻是相互无关联的;反而,设计者在多个关系变量中使用相同的域,如果一个属性依赖于另一个属性,则通过参照完整性来强制这种依赖性。
竞争者
其他模型还有层次模型和网状模型。使用这些旧体系的一些系统现在仍在一些数据中心中使用,那里有高数据容量需求或者现存系统复杂得使迁移到采用关系模型的系统花费巨大;还要注意新的面向对象数据库,尽管它们中很多都是DBMS构造工具,而不是严格的DBMS。
关系模型是第一个形式化的数据库模型。在它被定义之后,非形式化模型被用做描述描述层次数据库(层次模型)和网状数据库(网状模型)。层次和网状数据在关系数据库之前就存在了,但是只在关系模型被定义之后才作为模型来描述,用来建立比较的基础。
历史
关系模型是由埃德加·科德博士作为数据的一般模型而发明的,随后由克里斯多佛·戴特(Christopher J. Date)和休·达温(Hugh Darwen)等人维护和开发。在第三次宣言(1995年)中他们展示了如何向关系模型扩展上面向对象特征而不用妥协它的基本原理。
SQL标准与关系模型
SQL最初作为关系数据库的标准语言而提出,而在实际上总是违背它。所以SQL DBMS实际上不是真正的RDBMS,并且当前ISOSQL标准不提及关系模型或者使用关系术语或概念。
实现
已经有很多尝试去生成埃德加·科德、克里斯多佛·戴特、休·达温等人开发的关系数据库模型的真正实现。但都没有获得流行性成功。Rel是其中最新的尝试之一。SQL使用概念"表"、"列"和"行"来替代"关系变量"、"属性"和"元组"。
争论
科德自己提议了关系模型的一个三值逻辑版本,而且四值逻辑版本也被提议了,用来处理缺失信息。但是这些都未被实现,大概是由于顾及到了复杂性。SQL NULL意图成为三值逻辑系统的一部分,但是由于在标准和它的实现中的逻辑上的错误而没有达到目标。
设计
数据库规范化通常在设计关系数据库时进行,用来增进数据库设计的逻辑上的一致性和事务处理性能。
有两种常用的模式图系统来辅助 关系模型 的可视表示:实体-联系模式图(实体关系图),和美国空军在ERD基础上建立的IDEF1X方法中所使用的关联IDEF模式图。
样例数据库
一些关系变量和它们的属性的一个理想化和非常简单的例子:
Customer( Customer ID , Tax ID, Name, Address, City, State, Zip, Phone)
Order( Order No , Customer ID , Invoice No , Date Placed, Date Promised, Terms, Status)
Order Line( Order No , Order Line No , Product Code , Qty)
Invoice( Invoice No , Customer ID , Order No , Date, Status)
Invoice Line( Invoice No , Line No , Product Code , Qty Shipped)
Product( Product Code , Product Description)
在这个设计中我们有六个关系变量:Customer, Product, Order, Order Line, Invoice,和Invoice Line.粗体字有下划线的属性是 候选键 (码) 。非粗体字有下划线的属性是 外键 (码) 。
通常任意选择一个候选键 (码)叫做主键 (码)并且优先于其他候选键(码),它们也就被叫做可选键 (码)。
候选键(码) 是强制元组不重复的唯一性标识符;否则关系就违背了集合的基本定义而成为是叫做包的东西了。键 (码)可以是复合的,就是说可以由多个属性组合而成。下面是我们的例子顾客关系变量的一个表格化描述;关系可以被认为是归结到一个关系变量的值。
集合理论公式
关系模型中的基本概念是 关系名字 和 属性名字 。我们通常把他们表示为如“Person”和“name”这样的字符串,并且我们通常使用变量 r 、 s 、 t 、……和 a 、 b 、 c 来涉及它们。另一个基本概念 原子值 的集合包含着如数值和字符串这样的值。
我们的第一个定义关注 元组 的概念,它是表格中行或记录的概念的形式化。
下一个定义定义了 关系 ,它是关系模型中对表格内容的形式化。
这种关系紧密的对应于在一阶逻辑中通常叫做谓词外延的东西,除了我们这里用属性名字标识在谓词中的位置之外。在关系模型中数据库模式是由一组关系名字,与这些名字相关联的表头,和在数据库模式的每个实例上保持的约束构成的。
键(码)约束和函数依赖
最简单和最重要的一类关系约束是 键(码)约束 。它告诉我们在特定关系模式的所有实例中元组可以通过它特定属性的值来标识。
属性集合的补集可以用来计算特定的依赖是否在FD集合的闭包中。
引用
Codd, E. F. (1970). "A relational model of data for large shared data banks". Communications of the ACM , , Vol. 13, No. 6, pp. 377-387. Retrieved fromSept. 4, 2004.
Date, C. J., Darwen, H. (2000). "Foundation for Future Database Systems: The Third Manifesto", 2nd Edn. Addison-Wesley.
Date, Christopher J. (2003). "Introduction to Database Systems". 8th ed.
参见
Tuple-versioning
免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。
- 有价值
- 一般般
- 没价值