1.1969年1.1.关系模型的创始人E.F. Codd(1923—2003)1.1.1.牛津大学数学专业1.1.2.一己之力奠定了关系模型的基础1.2.论文《大型数据库中关系存储的可推导性、冗余与一致性》2.1970年2.1.权威学术杂志Communications of ACM2.2.Codd《大型共享数据库的关系模型》2.2.1.数据库中不再包含索引,字段间也没有顺序了2.2.2.第一次明确主张关系模型应该在表现层放弃指针2.2.3.出现了范式的概念3.主要贡献3.1.定义了关系运算(relational calculus)3.1.1.关系逻辑(relational logic)3.2.定义了关系代数(relational algebra)3.2.1.包含选择、投影、并、交等8种运算3.2.2.输入和输出都是关系3.3.采用谓词逻辑作为数据库操作的基础3.3.1.谓词逻辑已经成为了逻辑学的标准4.阻抗不匹配4.1.面向对象语言和关系数据库不一致的问题5.为什么叫它关系模型,而不叫它表(tabular)模型5.1.关系中不允许存在重复的元组(tuple),而表中可以存在5.2.关系是通常说的不允许存在重复元素的集合,而表是多重集合(multiset)5.3.关系中的元组没有从上往下的顺序,而表中的行有从上往下的顺序5.4.关系中的属性没有从左往右的顺序,而表中的列有从左往右的顺序5.5.关系中所有的属性的值都是不可分割的,而表中列的值是可以分割的5.6.关系中的属性满足第一范式,而表中的列不满足第一范式6.术语对应关系
正式的关系模型术语 | 非正式的日常用语 |
关系(relation ) | 表(table ) |
元组(tuple ) | 行(row )或记录(record ) |
势(cardinality ) | 行数(number of rows ) |
属性(attribute ) | 列(column )或字段(field ) |
度(degree ) | 列数(number of columns ) |
定义域(domain ) | 列的取值集合(pool of legal values ) |
6.2.关系模型是以数学中的集合论为基础的,因此沿用了集合论的一些术语6.3.定义域是关系模型在诞生之际就存在的一个重要的关键词6.4.如果无法确定定义域的话,关系就无法确定了6.5.SQL-92标准终于增加了定义域这一功能7.关系的定义7.1.R ⊆(D1×D2×D3 · · · ×Dn)7.1.1.关系R是定义域D1, D2, …, Dn的笛卡儿积的子集7.1.2.笛卡儿积是指“使用各个属性的定义域生成的组合数最多的集合”7.2.关系用符号R表示,属性用符号Ai表示,属性的定义域用符号Di表示7.3.元组个数为0的关系也是满足定义的8.关系值和关系变量8.1.值(value)和变量(variable)是很容易混淆的概念8.2.一般提到“关系”这个词时,如果不加特殊说明,指的都是“关系变量”8.3.关系值指的是关系变量在某一时刻取的值8.3.1.值就是变量的时间切片(time-slice)9.关系的关系9.1.在逻辑上是可能存在的9.2.为此必须定义能够使定义域包含关系的谓词,而且如果再考虑对关系的量化,就需要实现二阶谓词逻辑,因此实现“关系的关系”非常困难9.3.包含关系的列(属性)叫作关系值属性(relation-valued attribute)9.4.标准SQL语言已经支持了数组类型和集合类型的变量9.5.关系模型正朝着能够处理复合型数据的方向发展9.6.C.J. Date等人断言:真正的关系系统就是支持关系值等全部复合型数据的系统10.封闭性10.1.closure property10.2.运算的输入和输出都是关系10.3.保证关系世界永远封闭10.4.关系的封闭性与UNIX中管道的概念很像10.5.在UNIX系统中10.5.1.从设备到控制台,一切都可以当作“文件”来处理10.5.2.设备只不过是/dev目录下的一个普通文件而已10.5.3.这也是UNIX系统追求文件的封闭性的结果10.5.3.1.“泛文件主义”10.5.3.2.“一切皆文件主义”11.集合类型11.1.群(group):对加法和减法(或者乘法和除法)封闭11.2.环(ring):对加法、减法、乘法封闭11.3.域(filed):对加法、减法、乘法、除法封闭,即可以自由进行四则运算11.4.这些对某种运算封闭的集合在数学上称为“代数结构”11.5.布尔值的集合{true, false} 也是域11.5.1.如果想要强调布尔型的域的特征,可以称为布尔域11.6.关系可以理解为“能自由进行四则运算的集合”11.6.1.关系支持加法(UNION)运算和减法(EXCEPT)运算,因此满足群的条件11.6.2.关系还支持相当于乘法运算的CROSS JOIN,所以也满足环的条件11.6.3.关系中没有除法运算符,所以不满足域的条件11.6.4.除法运算的定义是有的。因此,关系也满足域的条件