Structure of Relational Databases
- 关系数据库由表 (table) 的集合构成,每个表有唯一的名字
- 表中的一行戴奥了一组值之间的一种联系 (relationship)
- 表是这种联系的一个集合
- Venn图如下
可以看到,table和relation两个概念密切相关。
- r e l a t i o n ⟹ t a b l e relation\implies{table} relation⟹table
- a t t r i b u t e ⟹ c o l u m n attribute\implies{column} attribute⟹column
- 关系实例 (relation instance):一个关系的特定实例,即即一组特定的行;
- 对于关系的每个属性,都存在一个允许取值的集合,成为该属性的域 (domain)
- 关系的所有属性的域都具有原子性 (atomic 不可再分)
Database Schema
- Database Schema 数据库模式:数据库的逻辑设计 可类比变量定义
- Databse Instance 数据库实例:给定时刻数据库中状态 类比某一时刻变量的值
Keys
用于区分给定关系中不同元组的方法。
- Superkey 超码:能够在一个关系中唯一地标识一个元组的,一个或多个属性的集合。
- Candidate key 候选码:如果一个超码地任意真子集都不能成为超码,这样最小的超码称为候选码。
- Primary key 主码:被数据库设计者选中的、主要用来在一个关系中区分不同元组的候选码。
- Venn图如下
需要注意,码是整个关系的一种性质,而不是单个元组的性质。
- 一个关系模式(r1)可能在它的属性中包括另一个关系模式和(r2)的主码,这个属性在r1上称作参照r2的外码 (foreign key)
r1称为外码的参照关系(referencing relation)
r2称为外码的被参照关系(referenced relation)
Schema Diagrams
一个含有主码和外码依赖的数据库模式可以用模式图(schema diagram)表示。
Relational Query Languages
查询语言(query language) 是用户用来从数据库中请求获取信息的语言。
过程化与非过程化。
Relational Operations
Symbol (Name) | Usage | Example |
---|---|---|
σ \sigma σ (Selection) | 返回输入关系中满足谓词的元组 | σ a g e > = 18 ( s t u d e n t ) \sigma_{age>=18}(student) σage>=18(student) |
Π \Pi Π (Projection) | 对输入关系的所有行输出指定的属性。从输出中去除重复元组 | Π I D , s a l a r y ( i n s t r u c t o r ) \Pi_{ID,salary}(instructor) ΠID,salary(instructor) |
⋈ ⋈ ⋈ (Natural join) | 从两个输入关系中输出这样的元组对:他们在具有相同名字的所有属性上取值相同 | i n s t r u c t o r ⋈ d e p a r t m e n t instructor⋈department instructor⋈< |