1. 笛卡尔积
给定一组任意集合
D
1
,
D
2
,
…
D
n
D_1,D_2,…D_n
D1,D2,…Dn则n个集合的笛卡儿积为:
D
1
×
D
2
×
…
×
D
n
=
(
d
1
,
d
2
,
…
d
n
)
∣
d
i
∈
D
i
,
i
=
1
,
2
…
,
n
D_1×D_2×…×D_n={(d_1,d_2,…d_n)| d_i ∈ D_i , i=1,2…,n}
D1×D2×…×Dn=(d1,d2,…dn)∣di∈Di,i=1,2…,n
例如:A ={0,1}、B ={ a, b ,c }
则A×B= { (0,a),(0,b),(0,c),(1,a),(1,b),(1,c) }
2. 关系
- 关系与笛卡尔积
关系是从笛卡儿积中选取的有意义的子集。
例如:A=导师集合={ 导师1,导师2 }、B=专业集合={ 专业1,专业2 }、C=学生集合={ 学生1,学生2 }
那么笛卡尔积:
A×B×C= { { 导师1,专业1,学生1 }、{ 导师1,专业1,学生2 }、
{ 导师1,专业2,学生1 }、{ 导师1,专业2,学生2 }、
{ 导师2,专业1,学生1 }、{ 导师2,专业1,学生2 }、
{ 导师2,专业2,学生1 }、{ 导师2,专业2,学生2 } }
(假设一个学生只有一个导师且只有一个专业),那么有意义的笛卡尔积只有2个集合(从两列中各任选一行)
这两个有意义的集合构成了关系。
-
关系模型的专业术语
● 关系:一个关系对应通常说的一张表,如上图就是一张学生表
● 元组:表中的一行即为一个元组。
● 属性:表中的一列即为一个属性,列名即属性名。
● 码(键):唯一标识实体的属性或属性组合 (如上表中Sno可以唯一标识一个学生,Sno+Ssex 也可以唯一标识一个学生,那么Sno、Sno+Ssex 都是码)
● 候选码(候选键):唯一标识实体的属性(组) 但是其真子集不能 (去掉任意一个属性都不能唯一标识实体的属性 / 组 )
● 主属性:候选码包含的属性
● 主码(主键):若关系有多个候选码,选择其中一个作为主码
● 外码(外键):某属性不是表A的主码却是表B的主码
● 域:属性的取值范围
● 分量:元组中的一个属性值。 -
关系的性质
(1) 同一属性下属性值是同类型数据
(2) 属性必须具有不同的属性名
(3) 属性的顺序可以任意交换
(5) 元组的顺序可以任意交换
(4) 关系中没有重复元组,任意元组在关系中都是唯一的
(6) 属性不可再分 -
关系模型的完整性
① 实体完整性:要求主码的值不能为NULL
② 参照完整性:引用的外码必须在其对应的主码中找到相应的值 或 将外码取值为NULL
③ 用户自定义完整性:某个数据的约束条件由实际决定