目录:点我
一、关系的定义和性质
关系模型由关系数据结构、关系操作和关系完整性三部分组成。
以关系数据模型为基础的数据库系统,称为关系数据库系统。
关系的定义和性质在关系模型中,只包含单一的数据结构——关系,即现实世界的实体以及实体间的联系均用关系表示。
在用户看来,关系就是一张二维表格:
- 属性和属性值:列和列的值。
- 域:一组具有相同数据类型的值的集合。
- 关系模式:表头。
- 元组:行。
- 关系或实例:行的集合。
- 元数(列数):属性的个数。
- 基数(行数):元组的个数。
笛卡尔积可表示为一张二维表,表中每行对应一个元组,表中每列对应一个域。
关系是笛卡尔积的有限子集,关系也是一张二维表,表中每行对应一个元组,表中每列对应一个域。必须对每一列取一个名字,称为属性。
当关系作为关系数据模型的数据结构时,需要对关系给予限定或扩充 。
关系模型要求关系必须是规范化的二维表,即满足一定的规范条件。
规范条件中最基本的一条是:关系的每一个分量必须是一个不可分的数据项。
关系的性质:
- 每个分量必须是不可分的量。
- 列的分量是同一类型的数据,来自同一域。
- 每一列为一个属性,属性有属性名。
- 一个关系中不存在两个元组在各个分量(或属性)上完全相同。
二、关系的键
关系模型中以主键作为唯一性标识,以外键来表达实体集之间的联系。
关系的一个或几个属性被称为键(码),其中:
- 超键:能唯一标识元组的属性集。
- 候选键(码):不含有多余属性的超键。
- 主键(主码):多个候选键中的一个。
- 外键:如果关系 R 的某一属性不是本身的主键,而是另一关系 S 的主键, 则称该属性是 R 的外键。
- 全码:关系模式的所有属性是该关系模式的候选码,称为全码。
- 主属性:候选码的主属性。
- 非主属性:不包含在任何候选码中的属性 。
三、关系模式与关系数据库
1. 关系模式与关系
关系是元组的集合,关系模式是对关系的描述,即二维表的表头那一行。
关系模式的定义包括:模式名、属性名、值域、模式的主键和其它完整性约束条件。
一般地,关系模式可简单表示为:关系模式名(属性名1,属性名2,…,属性名n) 。
关系模式是静态的(型,即表头之间的关系),关系是关系模式某一时刻的状态,是动态的(值,即元组之间的关系)。
实际工作中,有时会把关系模式和关系都统称为关系。
2. 关系数据库模式与关系数据库
关系模型中,实体以及实体间的联系都用关系来表示。所有实体以及实体之间的联系,即全部关系的集合构成一个关系数据库。
关系数据库模式是对整个关系数据库的描述(型),关系数据库是所有关系模式某一时刻对应的关系的集合(值)。
3. 实例
学生关系模式 S(sno,sname,age,sex)的一个实例:
sno | sname | age | sex |
---|---|---|---|
s1 | LI | 17 | M |
s2 | WANG | 19 | F |
s3 | LIU | 21 | F |
s4 | CHEN | 20 | M |
课程关系模式 C(cno,cname,tname)的一个实例:
cno | cname | tname |
---|---|---|
c1 | MATHS | LIU |
c2 | PHYSICS | HUANG |
c3 | DB | SHI |
c4 | OS | ZHANG |
选课关系模式 SC(sno,cno,grade)的一个实例:
sno | cno | grade |
---|---|---|
s1 | c1 | 90 |
s1 | c2 | 78 |
s2 | c2 | 89 |
s3 | c3 | 75 |
s4 | c4 | 80 |
(sno, cno)是主键,单个的 sno 或 cno 都不是,它们分别是 S 和 C 的主键,故 sno 和 cno 称为 SC 的外键。
四、关系的完整性规则
关系模型要求关系在任何时候要满足某些语义约束,关系模型中有三类完整性约束:实体完整性、参照完整性和用户自定义的完整性。实体完整性和参照完整性是关系模型必须满足的完整性约束条件,由关系系统自动支持。
1. 实体完整性
- 指关系中的每个元组是可区分的,是唯一的。
- 组成候选键(码)的属性(即主属性)上不能有空值,空值指“不知道”或“不存在”或“无意义”的值。
2. 参照完整性
- 指在关系模型中,实体及实体间的联系都是用关系来描述的,关系与关系之间存在着相互引用、相互约束的情况,不能引用不存在的实体。
- 参照完整性用于定义主键和外键之间的引用规则。若属性集 K 是关系模式 R2 的外键,K 也是关系模式 R1 的主键,在 R2 中 K 的取值或为空,或等于 R1 关系中的某个主键值。R1 为被参照关系,R2 为参照关系。
- 外键和相应的主键可以不同名,只要定义在相同的值域上即可(即在两张表中相同的键可以有不同的名字)。
- R1 和 R2 可以是两个不同的关系,表示实体之间的引用(关系间的引用),也可以是同一个关系,表示属性之间的联系(关系内部的引用)。
- 外键值是否允许空,应视具体问题而定。
3. 用户定义的完整性
- 用户定义的完整性是应用领域需要遵循的约束条件,是针对不同的应用环境而定义的约束条件,反映某一具体应用所涉及的数据应该满足的语义要求。
- 关系模型提供定义和检验这类完整性的机制,不必用程序完成。
五、关系操作
关系操作:
- 查询:选择、投影、连接、除、并、交、差操作。
- 更新:增加、删除、修改操作。
关系操作的特点是操作对象和结果是集合,而一般的非关系模型的数据操作通常以记录为单位。
关系操作根据其理论基础不同,可以用关系代数和关系演算来表示。关系代数是用关系运算来表达查询要求的方式,关系演算用谓词来表达查询要求的方式。关系演算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。
关系代数是一种抽象的关系操作语言,它用关系运算表达查询。任何一种运算都是将一定的运算符作用于一定的运算对象,得到预期的运算结果。
关系代数的运算符包括四类:
- 集合运算符:集合运算符将关系看成元组的集合,运算从水平(行)的角度迚行。集合运算是二目运算,包括并、交、差、笛卡尔积四种运算。
- 关系运算符:关系运算符包括投影、选择、连接、除运算等,运算不仅涉及行也涉及列。
- 算术比较符。
- 逻辑运算符。
集合运算符 | 含义 | 比较运算符 | 含义 | 专门的关系运算符 | 含义 | 逻辑运算符 | 含义 |
---|---|---|---|---|---|---|---|
∪ | 并 | > | 大于 | σ \sigma σ | 选择 | ⇁ \rightharpoondown ⇁ | 非 |
- | 差 | ≥ | 大于等于 | Π | 投影 | ∨ \vee ∨ | 与 |
∩ | 交 | < | 小于 | ⋈ \Join ⋈ | 连接 | ∧ \wedge ∧ | 或 |
× | 广义笛卡尔积 | ≤ | 小于等于 | ÷ | 除 | ||
= | 等于 | ||||||
≠ | 不等于 |
六、运算
关系代数是实现关系操作的基本表示方法,关系代数运算按运算符的不同分为传统的集合运算和专门的关系运算。专门的关系运算包括投影、选择、连接和除法运算。
R:
A | B | C |
---|---|---|
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
S:
A | B | C |
---|---|---|
7 | 8 | 9 |
4 | 5 | 6 |
5 | 1 | 12 |
1. 并
R∪S:
A | B | C |
---|---|---|
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
5 | 1 | 12 |
2. 差
R - S:
A | B | C |
---|---|---|
1 | 2 | 3 |
3. 交
R ∩ S:
A | B | C |
---|---|---|
4 | 5 | 6 |
7 | 8 | 9 |
4. 笛卡儿积
R:
A | B | C |
---|---|---|
a | b | c |
b | c | e |
e | d | c |
S:
C | D |
---|---|
c | d |
e | f |
R × S:
A | B | R.C | S.C | D |
---|---|---|---|---|
a | b | c | c | d |
a | b | c | e | f |
a | c | e | c | d |
a | c | e | e | f |
e | d | c | c | d |
e | d | c | e | f |
元组的个数 = R 和 S 中行数之积。
属性的个数 = R 和 S 中列数之和。
5. 投影
R:
A1 | A2 | A3 |
---|---|---|
a1 | b1 | c1 |
a1 | b2 | c1 |
a2 | b2 | c2 |
π 3 , 1 ( R ) = { t ∣ t = < t 3 , t 1 > ∧ < t 3 , t 1 > ∈ R } \pi_{3,1}(R)=\left\{t|t=<t_3,t_1>\wedge <t_3,t_1>\in R \right\} π3,1(R)={t∣t=<t3,t1>∧<t3,t1>∈R}:
A3 | A1 |
---|---|
c1 | a1 |
c2 | a2 |
6. 选择
S:
sno | sname | age | sex |
---|---|---|---|
s1 | LI | 17 | 女 |
s2 | WANG | 19 | 女 |
s3 | LIU | 21 | 男 |
π s n o , s n a m e ( δ a g e > 18 ∧ s e x = ′ 女 ′ ( S ) ) \pi_{sno,sname}(\delta_{age>18\wedge sex='女'}(S)) πsno,sname(δage>18∧sex=′女′(S)):
sno | sname |
---|---|
s2 | WANG |