【CMU 15-445/645 Database Systems】01 Relational Model

728 阅读4分钟

0. 内容说明

CMU 15-445/645 Intro to Database Systems(Fall 2019版)系列课程的学习笔记。

另:文中图片,如无特殊说明,均截图自课程slides。侵删。

1. Database

  • Databases are the core component of most computer applications.

如果没有数据库,我们把数据存放在文件中(例如csv),带来的问题有:

  • 每次取数据,需要根据要求,对文件进行解析

  • 数据完整性上:

    • 一个文件引用另一个文件中的值时(外键),确保引用的值是正确的;
    • 对某些值域有要求的属性(如年份),输入的值要求是有效的;
  • 实现上:

    • 如何找到特定的记录
    • 并发写问题如何解决
    • 如何让一个新的应用使用相同的数据库
  • 耐用性(durability):

    • 数据更新时,机器故障怎么办
    • 数据库在多台机器上存放副本时,如何实现高可用

2. Data model

2.1 Model & Schema

  • 数据模型:用于描述数据库的一组概念,包括数据结构(对数据的静态特征描述)、数据操作(对数据的动态特征描述)以及完整性约束;

  • 数据模式:使用一个给定的数据模型,对一组特定的数据集合的描述

    • 外模式:用户的数据视图,概念模式给出了全局视图,外模式给出每个用户的某个局部视图;用户只关心和他有关的局部视图;
    • 概念模式(逻辑模式、模式),对数据库中全局数据逻辑结构的描述,是整个应用(全体用户)的公共视图;
    • 内模式(存储模式、物理模式),顾名思义,给出了数据库物理存储结构和物理存取的方法的描述(包括文件结构、索引、存取方式和路径等);

2.2 Data models

  • relational:Ted Codd于1970年提出;

NOSQL

  • key/value
  • graph
  • document
  • column-family

MACHINE LEARNING

  • array/matrix

3. Relational Model

  • 结构:关系和内容的定义
  • 完整性约束:确保数据库中存储的内容符合约束
  • 操作:访问和修改数据库内容的方法

3.1 Basic concepts

Relation, tuple, primary key, foreign key, DML

relation

有n列的表 = n-ary关系

DML (data manipulation languages)

关系代数:给定了DBMS可用于查询特定结果的具体策略(操作次序)

关系表达式:只描述了需要的数据(what),不给出如何操作(how)

关系代数和描述性语言的区别。

3.2 关系代数

  • product:笛卡尔积,相当于cross join,是两个表的完全相乘。会产生所有可能的连接。
  • join:自然连接,相当于natural join,只在有列的值相同的时候才产生连接,并且在产生的结果中会去掉等值的列(普通的等值连接不会删除列);

4. 总结

数据库的出现,是为了解决从文件中存储和读取数据的种种不方便问题(文件解析、数据的相关约束等);

为了对数据库进行方便的操作和管理,就有了数据库管理系统(DBMS);

数据库作为一个对数据进行管理的概念,可以有很多具体的设计思路,这就是不同的数据模型。我们常用的是关系型数据库(Mysql是基于关系型数据库这一模型而实现的一个数据库管理系统,其他如sql server,ibm db2等也都是同类概念),也就是所谓的“二维表格”;

其他的数据模型可以统称为非关系型数据库(nosql),这就包含很多种类型,包括按键值对形式存储的(redis)、列族存储的(hbase),按文档存储的(MongoDB),图数据库(Neo4j)等等。它们都是数据库,但是都基于不同的设计思想和应用场景,在数据结构、存储方式等等诸多方面,有各自的特征和差异。

现在,我们还需要一种手段来访问数据库中的数据。关系代数中的符号定义了一些可能的操作(如按条件过滤、组合不同的数据、数据表的连接等),我们可以用这些符号来定义了具体执行一个query的步骤,也就是把我们所需要的数据查询要求,转化成关系代数的表达式。

但是关系代数相对来说,还是比较难以书写和记忆,所以我们在其上再进行一层封装。

而SQL,是实现关系代数的一个既定标准。