第三讲关系模型之基本概念
关系模型简述
- 关系模型是从表(table)以及表的处理方式中抽象出来的
- 形象的说,一个关系(relatioin)就是一个Table
- 关系模型组成:
- 描述数据库的数据的基本结构
- 描述表之间的各种操作(关系运算)
- 操作应该遵循的约束条件(完整性约束)
什么是关系
相关概念
-
域:一组值的集合,值有相同数据类型
-
域的基数:集合中元素个数
-
元组:每一个域中任取一个值所形成的组合
-
元组分量:元组中的每个值都叫做一个分量
-
笛卡尔积:所有可能组合而成的元组的集合
因为笛卡尔积中的所有元组并不都有意义,所以
关系:
-
是笛卡尔积的子集
-
笛卡尔积具有某方面意义的那些元组被称为一个关系
-
关系不同列可能来自同一个域,为区分,需为每列起名,该名即为属性名
-
例:设有一个”人类“域:里面有男人,也有女人。男女可以分别组成男女列,此为不同列可以来自同一个域
-
关系的度/目(degree):列的数量
-
关系的基数:元组数量
关系模式与关系:
-
关系模式就是关系的结构(也可以称为表的结构)
-
关系是关系模式在某一刻的数据
-
一个关系模式下可以有很多的关系(表)
例:
-
关系是以内容来区分的,而不是属性或者元组在关系中的顺序。
-
例:
上图是完全相同的关系
-
关系第一范式:属性不可再分割
-
候选码:
- 关系中的一个属性/属性组,能唯一标识一个元组,这样的属性/属性组称为候选码
-
主码/主键(primary key):
- 当有多个候选码时,可以选择一个作为主码
- DBMS以主码为主要线索管理关系中的各个元组
-
主属性:包含在任意一个候选码中的属性被称为主属性
-
非主属性:主属性之外的其他属性被称为非主属性
-
外码/外键(foreign key):
- 关系R中的一个属性组,它不是关系R的候选码,但它与另外一个关系S的候选码对应此属性组被称为关系R的外码或者外键
- 两个关系通常靠外码连接起来
关系模型中的完整性
实体完整性
实体完整性对应的是主码
- 关系中主码的属性值不能为空值
- 空值:不知道或者无意义的值,有空值的时候需要特殊处理
- 意义:关系中的元组是以主码来唯一标识的,若主码为空,就会出现不可标识的元组
参照完整性
参照完整性对应的是外码
- 关系R1中的外码与关系R2的主码相对应或者R1中的外码为空值(空值可以看作尚未选择外码)
- 意义:若关系R1的某元组t1参照关系R2的某个元组t2,则t2必须存在
用户自定义完整性
用户自己定义的约束条件
例如:
- 性别属性值的取值范围只能为 “男” 或 “女”
- 姓名必须在8个汉字字符之内
- 年龄必须在0-150之间
DBMS对关系完整性的支持
- 实体完整性和参照完整性由DBMS自动支持
- DBMS通常提供如下机制:
- 可以使用户自己定义有关的完整性约束条件
- 有操作发生时,DBMS自动判定操作是否符合用户自己定义的完整性规则