目录
形象地说,一个关系(relation)就是一个表Table,关系模型就是处理Table的,它由三个部分组成:
- 基本结构:描述DB各种数据的基本结构形式(Table/Relation)
- 基本操作:描述Table与Table之间所可能发生的各种操作(关系运算)
- 完整性约束:描述这些操作所应遵循的约束条件
关系和关系模式
先给出定义如下:
关系(直观理解就是一个Table):是一组域D1,D2,...,Dn的笛卡尔积的子集,即笛卡尔积中具有某一方面意义的那些元组被称为一个关系
关系模式(其实就是Table的表标题):关系可用R(A1:D1,A2:D2,...,An:Dn)表示,这种描述称为关系模式
具体解释如下:
一个Table都有列和元组,我们称列的取值范围的集合为域(Domain),称域中元素的个数为基数(Cardinality),元组就是所有列各取一值的组合,所有列的取值可能组成的元组的集合称为笛卡尔积,笛卡尔积里筛选有意义的元组,就称为关系。
关系模式就相当于Table的表标题,这也正是我们后续使用SQL语言定义的Table的列(属性)。
关系和表的区别在于:
理论上,关系的任意两个元组不能完全相同(集合的要求:集合内不能有相同的两个元素);现实应用中,表(Table)可能不完全遵守这个特性。
关系的特性
- 列是同质:每一列的数据都是同一数据类型
- 列位置互换性、行位置互换性:区分某一列或某一行不依靠位置
- 属性不可再分(关系的第一范式):例子如下
关系的重要概念
- 候选码(Candidate Key)/候选键:能唯一标识一个元组的属性组
- 主码(Primary Key)/主键:多个候选码时,选定一个作为主码
- 主属性和非主属性:包含在任何一个候选码中的属性被称为主属性,其他属性称为非主属性
- 外码(Foreign Key)/外键:关系R中存在属性组不是R的候选码,但是与关系S的候选码相对应,则这个属性组为关系R的外码
关系模型的完整性
- 实体完整性:主码的属性值不能为空值(不知道或无意义的值)
- 参照完整性:如果关系R1的外码Fk与关系R2的主 码Pk相对应,则R1中的每一个元组的 Fk值或者等于R2 中某个元组的Pk值, 或者为空值
- 用户自定义完整性:用户针对具体的应用环境定义的完整性约束条件
注意:实体完整性和参照完整性由DBMS系统自动支持
以上内容均整理自中国慕课战德臣教授主讲的《数据库系统》课程