读SQL进阶教程笔记11_关系数据库基础
1. 1969年
1.1. 关系模型的创始人E.F. Codd(1923—2003)
1.1.1. 牛津大学数学专业
1.1.2. 一己之力奠定了关系模型的基础
1.2. 论文《大型数据库中关系存储的可推导性、冗余与一致性》
2. 1970年
2.1. 权威学术杂志Communications of ACM
2.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 ) |