Lec1 关系模型
Introduction to Database Systems¶
-
对数据语义 (Data Semantics)的抽象,产生了关系数据模型
-
对业务逻辑(Business Logic)的抽象,产生了事务处理模型
数据库是存在 内部关联的数据的集合(e.g. Excel Table),而数据库系统是 管理数据库的工具(e.g. MySQL,MiniSQL...)这两者有着本质的区别。
数据库系统的特点
- Efficiency and scalability in data access. 效率与可扩展性
- Reduced application development time. 减少应用开发时间
- Data independence. 数据独立性
- Data integrity and security. 数据完整性和安全性
- Concurrent access and robustness. 并发访问和稳健性
数据的独立性包含两个方面:Physical Independence & Logical Independence
Data Models¶
数据模型是一组用于描述数据结构、数据关系、数据语义、数据约束的概念
常见的数据模型包含:
- 实体-关系模型
- 关系模型
- 面向对象的模型
- Array / Matrix / Vectors 模型 (现在多用于机器学习)
Relational Model¶
关系模型的结构¶
关系的定义: 给定集合 \(D_1,D_2,D_3...D_n\) 关系 \(\textbf{R}\) 即为笛卡尔积 \(D_1 \times D_2 \times ... \times D_n\) 的一个子集, \(\textbf{R}\)中的一个元素称为一个元组(Tuple),而一个元组中的一个元素成为属性(Attribute)
Attribute Types
- 每一个 Attribute 有一个名字
- Attribute 的取值范围成为值域;特别的,特殊值 null 属于每一个值域
- Attribute 必须是原子的(不可分割的)
关系涉及两个概念: 关系模式 和 关系实例。关系模式(Schema)规定了关系的结构(例如 Student-schema = (sid, name, sex, age, dept) );关系实例(Instance)是一组实际的值。
元组间的顺序是不重要的(它们可以任意排列),同一个关系中不存在完全相同的元组。(这些都是集合基本的性质)
一个数据库一般会包含多个关系,我们希望能够从数据中提取关系,使得我们的查询、储存能够被最优化。
例如如上的例子中,我们可以发现这样的关系存在诸多的问题:
- 信息的重复:例如两个学生可能会有同一导师
- 需要 null 值:有可能有没有导师的学生
我们期望我们的关系之间是正交的,即通过最少的重复与代价来表示信息
Key 键
- 一个键 K 是 super key ,当且仅当 K 能够确定 R 中每一个 Tuple
-
一个键 K 是 candidate key ,当且仅当 K 能够确定 R 中每一个 Tuple,且 K 是最小的
-
一个键 K 是 primary key , 当且仅当 K 是 candidate key 而且被用户显式的指定
- 一个键 K 是 foreign key , 当且仅当 K 能够确定的参照两个关系