关系模型
关系模型 Relational Model
关系模型的结构 Relational Model Structure
关系:笛卡尔乘积的有意义的有限子集
属性:关系的列,属性的顺序不重要,属性必须是原子的
元组:关系的行,或者一条记录,元组的顺序不重要
域(domain):属性的取值范围
关系模式:关系的结构描述,一个属性列表及属性所对应的域
关系实例:关系在某一时刻的具体数据,快照
关系模型的约束 Constraints of Relational Model
超键(superkey):能唯一标识元组的属性集合。如学号加姓名
候选键(candidate key):最小超键,不能再去掉任何属性的超键。如学号。候选键不唯一,比如学号可以是候选键,身份证号也可以是候选键
- 唯一性
- 最小性
主键(primary key):从候选键中选出的用于唯一标识元组的属性集合。如学号
外键(foreign key):一个关系中的属性,其值引用另一个关系的主键或候选键
完整性约束:
实体完整性:主键属性不能为空
参照完整性:外键值要么为空,要么必须在引用的关系中存在对应的主键值(外键作为主键的那个表要有它的记录)
域完整性:属性值必须在其定义的域内
关系模型的操作 Relational Model Operations 关系代数 Relational Algebra
基本操作:
- 选择(Selection):从关系中选取满足条件的元组 $\sigma_{条件}(关系)$,eg $\sigma_{dept_name=‘CS’}(instructor)$ 可以选择$\wedge$ 等逻辑谓词来添加多个判断条件。
- 投影(Projection):从关系中选取指定的属性 $\pi_{属性}(关系)$,eg $\pi_{name,age}(student)$ ,投影结果是要去重的
- 并(Union):将两个关系的元组合并,去除重复元组 $R \cup S$
- 差(Difference):取一个关系中存在但另一个关系中不存在的元组 $R - S$
- 笛卡尔积(Cartesian Product):将两个关系的所有元组进行组合。 $R \times S$
- 重命名(Rename):对关系或属性进行重命名 $\rho_{新关系名(新属性名列表)}(关系)$
- 连接(Join):将两个关系按某种条件组合成一个新的关系
只出现$\bowtie$是自然连接:对两个关系进行默认将相同名字的属性等值连接
但join需要显式指定连接条件
$$\sigma_{instructor.ID = teaches.ID}\bigl(instructor \times teaches\bigr)\quad\Longleftrightarrow\quad instructor \bowtie_{instructor.ID = teaches.ID} teaches$$
- 交(Intersection):取两个关系中都存在的元组 $R \cap S$
- 赋值(Assignment):将一个关系的结果赋值给另一个关系 $R \leftarrow S$
$$
coursefall_2017 \leftarrow \pi_{course_id}(\sigma_{year=‘2017’\wedge semester=‘Fall’}(section))
$$
$$
coursespring_2018 \leftarrow \pi_{course_id}(\sigma_{year=‘2018’\wedge semester=‘Spring’}(section))
$$
$$
coursefall_2017 \cap coursespring_2018
$$
扩展操作:
-
去重(Duplicate Elimination):去除关系中的重复元组 $\delta(关系)$
-
除!
÷
聚集运算 (Aggregate Functions):
对属性进行统计计算,如计数、求和、平均值、最大值、最小值等
- COUNT:计算元组数量 $G_{属性}COUNT(关系)$
- SUM:计算属性值的总和
- AVG:计算属性值的平均值
- MAX:找出属性值的最大值
- MIN:找出属性值的最小值
