Lecture 1¶
数据库是存在内部相关性的数据的有组织的集合,可以用来模拟现实世界的某个方面。
CSV文件是一种简单的数据格式,它以逗号分隔的值的形式存储表格数据。例如:
数据库管理系统(DBMS)是一种用于管理数据库的软件系统。它们允许用户创建、更新和管理数据库。常见的DBMS包括MySQL、PostgreSQL、SQLite、Microsoft SQL Server、Oracle等。
Relational Model¶
Relational Model(关系模型)是一种用于表示数据的结构化方法,于1970年由Ted Codd提出。在关系模型中,数据被组织为表格(表),表格中的每一行代表一个记录,每一列代表一个属性。
Data Models(数据模型)是一种用于描述数据、数据结构、数据操作和一致性约束的概念工具;Schema(模式)是关于数据库中数据的结构和约束的元数据。如今大多数DBMS使用的是关系模型,即Relational Model。
Relational Model分为三个部分:Structure(结构)、Manipulation(操作)和 Integrity(完整性)。
Primary Key(主键)是表格中的一列(或一组列),其值能够唯一标识表格中的每一行。如:artist_id列。Foreign Key(外键)是表格中的一列,其值必须在另一个表格的主键中存在。如:album_id列,它是albums表格的主键。
DML(Data Manipulation Language)是一种用于查询和修改数据库中数据的语言。常见的DML语言包括SQL(Structured Query Language)。分为procedural DML和non-procedural DML,前者需要指定如何实现目标,后者只需要指定目标。
Relational Algebra¶
Relational Algebra(关系代数)是一种用于查询关系数据库的形式化查询语言。它包括一组操作,如select(σ)、project(π)、union(∪)、intersection(∩)、difference(-)、product(×)、join(⋈)等。
Select Operation¶
选择操作(σ)用于从关系中选择满足指定条件的元组。例如,选择年龄大于20的学生:
Project Operation¶
投影操作(π)用于从关系中选择指定列。例如,选择学生的姓名和年龄:
Union Operation¶
并集操作(∪)用于将两个关系的元组合并为一个关系。两个关系必须具有相同的属性。例如,合并两个关系:
Intersection Operation¶
交集操作(∩)用于从两个关系中选择共有的元组。两个关系必须具有相同的属性。例如,选择两个关系的交集:
Difference Operation¶
差集操作(-)用于从一个关系中选择不在另一个关系中的元组。两个关系必须具有相同的属性。例如,选择两个关系的差集:
Product Operation¶
笛卡尔积操作(×)用于将两个关系的元组组合为一个关系。例如,两个关系的笛卡尔积:
得到的结果是两个关系的所有可能组合。
Join Operation¶
连接操作(⋈)用于将两个关系的元组组合为一个关系。例如,两个关系的连接:
这是一个Natural Join,它会自动选择两个关系中具有相同属性的元组进行连接。
其他操作¶
除了上述操作,还有其他一些操作,如rename(ρ)、assignment(R ← S)、division(÷)等。
为了达到更高的查询效率,我们只需要给出查询的目标,让DBMS自行选择最佳的查询计划。