跳转至

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)是一组实际的值。

元组间的顺序是不重要的(它们可以任意排列),同一个关系中不存在完全相同的元组。(这些都是集合基本的性质)

一个数据库一般会包含多个关系,我们希望能够从数据中提取关系,使得我们的查询、储存能够被最优化。

univ (instructor -ID, name, dept_name, salary,student_Id, ..) 

例如如上的例子中,我们可以发现这样的关系存在诸多的问题:

  • 信息的重复:例如两个学生可能会有同一导师
  • 需要 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 能够确定的参照两个关系