关系模型 Relational Model

关系模型的结构 Relational Model Structure

关系:笛卡尔乘积的有意义有限子集 属性:关系的列,属性的顺序不重要,属性必须是原子的 元组:关系的行,或者一条记录,元组的顺序不重要 域(domain):属性的取值范围 关系模式:关系的结构描述,一个属性列表及属性所对应的域 关系实例:关系在某一时刻的具体数据,快照

关系模型的约束 Constraints of Relational Model

超键(superkey):能唯一标识元组的属性集合。如学号加姓名

候选键(candidate key):最小超键,不能再去掉任何属性的超键。如学号。候选键不唯一,比如学号可以是候选键,身份证号也可以是候选键

  • 唯一性
  • 最小性

主键(primary key):从候选键中选出的用于唯一标识元组的属性集合。如学号

外键(foreign key):一个关系中的属性,其值引用另一个关系的主键或候选键

完整性约束: 实体完整性:主键属性不能为空 参照完整性:外键值要么为空,要么必须在引用的关系中存在对应的主键值(外键作为主键的那个表要有它的记录) 域完整性:属性值必须在其定义的域内

关系模型的操作 Relational Model Operations 关系代数 Relational Algebra

基本操作:

  • 选择(Selection):从关系中选取满足条件的元组 σ(),eg σdept_name=CS(instructor) 可以选择 等逻辑谓词来添加多个判断条件。
  • 投影(Projection):从关系中选取指定的属性 π(),eg πname, age(student) ,投影结果是要去重的
  • 并(Union):将两个关系的元组合并,去除重复元组 R ∪ S
  • 差(Difference):取一个关系中存在但另一个关系中不存在的元组 R − S
  • 笛卡尔积(Cartesian Product):将两个关系的所有元组进行组合。 R × S
  • 重命名(Rename):对关系或属性进行重命名 ρ()()
  • 连接(Join):将两个关系按某种条件组合成一个新的关系

只出现是自然连接:对两个关系进行默认将相同名字的属性等值连接 但join需要显式指定连接条件

σinstructor.ID = teaches.ID(instructor × teaches)  ⇔  instructorinstructor.ID = teaches.IDteaches

  • 交(Intersection):取两个关系中都存在的元组 R ∩ S
  • 赋值(Assignment):将一个关系的结果赋值给另一个关系 R ← S

coursefall_2017 ← πcourse_id(σyear=2017 ∧ semester=Fall(section))

coursespring_2018 ← πcourse_id(σyear=2018 ∧ semester=Spring(section))

coursefall_2017 ∩ coursespring_2018

扩展操作:

  • 去重(Duplicate Elimination):去除关系中的重复元组 δ()

  • 除! ÷

聚集运算 (Aggregate Functions): 对属性进行统计计算,如计数、求和、平均值、最大值、最小值等

  • COUNT:计算元组数量 GCOUNT()
  • SUM:计算属性值的总和
  • AVG:计算属性值的平均值
  • MAX:找出属性值的最大值
  • MIN:找出属性值的最小值