REVIEW 2 关系数据模型
Basic Structure
Relation Schema and Instance
- Relation Schema R 是class,由attributes组成
- Relation Instance r(R) 是object,用 table 表示
- Element t 即 r 的一个 tuple,table 中占一行
Attributes
attribute 在一个 r 中的定义域即 domain,必含 NULL
attribute 的值应该是 atomic 的
Database Schema
和Relation的差不多,区别是Relation的是逻辑上的概念,而Database的是数据库里面的概念
Keys
Primary Key
- 主键(primary key):从候选键中选出来的,其value能唯一锁定每一个tuple
主键是能确定一条记录的唯一标识
- 候选键(candidate key):所有能胜任主键的attribute都是候选键
- 不一定是单个attribute,可能是属性集(复合主键)
- 是超键的minimal
- 超键(super key):一个attribute的集合,且其value能唯一锁定每一个tuple
- 说白了就是包含候选键的属性集合
Foreign Key
主键确定一个tuple,但是一个tuple的value可能在多个表里。
主键所在表之外的表的value就通过外键与主键配对键,以保持数据的一致性。
主键用于检索,外键用于配对
Relational Algebra
不是所有的想法都能用关系代数实现,关系代数是不完备的
我们学的是Pure Relational Algebra,会移除重复项
还有Multiset Relational Algebra,会保留重复项
Basic Operators
Select
选出满足条件的tuple
Project
选取需要的attribute
Union
要求两个关系需要有相同元数(arity),即属性数量相同,且属性的domain得相容
Set difference
r-s
表示,删除r中的和s中一模一样tuple
要求元数相同,属性相容,domain一致
交集不是basic是因为可以用差表示,r^s = r-(r-s)
Cartesian-Product
笛卡尔乘积
Rename
Additional Operations
下面这些操作可以大大化简关系代数语句
JOIN
Natural-Join
一般Join都是指Inner-Join,即根据相同属性进行筛选
相同的属性为Inner,不相同的为Outer
自然连接根据两个关系相同的属性,选取相同的value的tuple组成新的表
- Natural-Join 是可交换的、可结合的
Theta Join
即SELECT * FROM r,s WHERE theta
显然和自然连接完全不是一个东西,这是先笛卡尔乘再条件选择
Outer Join
自然连接会扔掉两个表的相同属性不同value的tuple,被扔掉的都成为outer
- Outer Join分为三种
- 左外:保留左边表的outer
- 右外:同上
- 全外:都保留
outer 属性的value显然有缺失,用NULL
填补
外部连接可通过自然连接实现:
{}
用于构造临时关系,语句结束这个关系就没了
NULL与unknow
与NULL进行比较运算(OR,AND,NOT)会得到特殊真值 unknown
从逻辑运算来说,unknown即亦真亦假
Semi join
半连接
r与s进行theta连接后,只保留r中的属性
Assignment
符号为 ← ,右边为project语句,左边为变量
类似 WITH
,用于复杂语句中,储存得到的表
Division
被除表与除表进行自然连接,然后将 除表 有的attribute都删掉,重复的元素要合并
看着复杂,看个例子就懂了
Extended Relational-Algebra-Operations
上面的addition都没有增强查询功能,只能让语句变得更短,接下来的就是能增强的
Generalized Projection
就是映射条件可以加入算数表达式,结果会相应的变化
Aggregate Functions and Operations
聚合函数需要和聚合操作符G
一起使用
左下标表示GROUP BY
哪些属性,右下标选取聚合函数
结果没有名称,我们可以直接加个 as
Modification of the Database
DELETE
INSERT
UPDATE