zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

CMU15-445:Lecture #01 笔记

2023-04-18 15:23:23 时间

Lecture #01: Relational Model & Relational Algebra


本文是对CMU15-445课程第一节笔记的一个粗略总结和翻译。仅供个人(M1kanN)复习使用。


1. Database

​ 数据库(Database) 是一个有组织的、互相关联的、对现实世界的某些方面进行建模的集合。注意:数据库(DB) != 数据管理系统(DBMS)。Database management system是一种管理数据库的软件。 本笔记中,用一个存储着艺术家和对应的专辑信息的数据库作为例子,亦即数字音乐商店(A database that models adigital music store)。

2. Flat File Strawman

数据库常常以CSV(comma-separated value)文件的形式存储,由DBMS进行管理。每次应用程序要读取或者更新记录时,都必须解析文件(parse files)。

以数字音乐商店的例子,会有两个文件,一是艺术家,二是专辑。

每个实体都有自己的属性集,所以在每个文件中,不同的记录都用新的行来划分,而一条记录中的每个相应属性都用逗号隔开。

例子:

Name Year Coutry
Wu-Tang Clan 1992 USA
Notorious BIG 1992 USA
GZE 1990 USA

关于平面文件(Flat File)

  • Data Integrity

    数据完整性

  • Implementation
    执行

  • Durability
    耐受性

3. Database Management System

一个DBMS是一个能让应用在数据库中保存与分析数据的软件

通常,DBMS设计的目的是允许定义、创建、查询、更新和管理符合某种数据模型的数据库。

  • Data model:
    数据模型是描述数据库中数据的概念的集合。
  • Schema:
    模式是对基于数据模型的特定数据集合的描述。

Early DBMSs

早期,数据库应用很难建立和维护,因为逻辑层和物理层之间存在着紧密的耦合。

  • 逻辑层:
    描述了数据库有哪些实体和属性。
  • 物理层:
    是这些实体和属性的存储方式。

所以早期的数据库,一旦改变了物理层,逻辑层也得跟着变。

4. Relational Model

人们每次改变物理层都要重新写数据管理系统,故Ted Codd注意到后提出了关系模型。

  • Relational Model:

    关系模型定义了一个基于关系的数据库抽象概念,有3个关键点:

    • Store database in simple data structures (relations).
    • Access data through high-level language, DBMS figures out best execution strategy.
    • Physical storage left up to the DBMS implementation.

    简单来说就是:用简单的数据结构保存,用高级语言来访问,并让DBMS来执行最优策略以及处理物理层存储。

  • 关系模型定义的三个概念:

    • Structure:
      关系定义和内容。也就是关系具有的属性以及可以有的值。
    • Integrity:
      确保数据库的内容满足约束条件。比如:年份必须是数字。
    • Manipulation:
      如何访问和修改数据库的内容。
  • 关系:
    关系是一个无序的集合(unordered_set),包含代表的实体的属性关系。因为是无序的,所以DBMS可以用它想要的任何方式存储它们,并允许优化。

  • 元组(tuple):
    元组指的是关系中的一组属性值(也叫域 domain)。起初,值必须是原子的或者标量,但现在值也可以是一个特殊的值--NULL,表示为定义。

  • 有n个属性的关系,叫做:n-ary relation

  • Keys:
    一个关系的primary key唯一的定义了单个元组。很多DBMSs都支持autogenerated keys,所以程序就不需要手动增加了,但primary key还是在某些DBMSs是需要的。

    • Primary key:唯一的定义了单个元组。
    • Foreign key:指定一个关系中的属性必须映射到另一个关系中的元组。

5. Data Manipulation Languages (DMLs)

有两类语言去保存和检索在数据库中的信息。

  • Procedural:
    The query specifies the (high-level) strategy the DBMS should use to find the desired result based on sets / bags. (relational algebra)
  • Non-Procedural(Declarative):
    The query specifies only what data is wanted and not how to find it. (relational calculus)

一般现在都是用第二种的,我不管DBMS用什么策略,我只需要你给我我想要的数据。

6. Relational Algebra

关系代数就是一组基本操作,用于检索和操作关系中的图元。(感觉这部分不需要很了解,毕竟我学数据库只是为了混个项目)每个操作符都需要一个或多个关系作为输入,并输出一个新的关系。为了编写查询,我们可以把这些运算符 "链 "在一起,以创建更复杂的操作。

  • Select
    常用操作
  • Projection
    映射。配合R使用。
  • Union
  • Intersection
  • Difference
  • Product
    笛卡尔积
  • Join
    常用操作。有left join, right join, full join, natural join(SQL标准)
  • Observation
    不同的表达式可能是一样的内容。