关系模型 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:找出属性值的最小值