关系模型
关系模型 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) ⇔ instructor⋈instructor.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:计算元组数量 G属性COUNT(关系)
- SUM:计算属性值的总和
- AVG:计算属性值的平均值
- MAX:找出属性值的最大值
- MIN:找出属性值的最小值
