欢迎光临散文网 会员登陆 & 注册

CMU 15-445/645-笔记-01-课程简介与关系模型

2021-12-22 20:49 作者:dengluzhanghao  | 我要投稿

- 课程目标


- 参考书推荐用 《Database System Concepts》

- 该课程主要是手写 Database Storage Manager 而不是 Database System(因为项目不支持 SQL 解析)

- 数据库拓展研究


- 用 CSV(Comma-Seperated Value)文件存 database

- 怎么用呢,举个例子


- 但这种方式是有问题的

    - 每个专辑的 entry 中的 artist 都是一样的么?

    - Ice Cube 没有拼写错误?

    - 如果别人在文件里重写了一个无效的 string 怎么办呢?

    - 如果一张专辑里面有多个 artist,那么怎么存储这些数据呢?

    - 如何查询数据?

    - 多线程同一时间写同一个文件怎么办?

    - 如何保证数据安全(在写数据的时候机器故障咋办?)

    - Database Management System 的作用

    

- 1970 年 Ted Codd 提出的关系型模型(Relational Model)是为了解决之前数据库不断重构数据结构,以及数据结构转存之后不断销毁数据的问题

- 关系模型三板斧如下

    - 用简单数据结构存数据

    - 用高级语言访问数据

    - 大型数据库的物理存储策略基于 Database Management System 的实现

- 这种思想把 逻辑层 和 物理层 完全解耦

- 关系型数据模型并不是唯一的数据模型


    比如如下

    

    - Relational(MySQL, PostgreSQL,Oracle,DB2,SQL server,SQLite)

    - Key/Value,Graph,Document, Column-family(NoSQL)

    - Array/Matrix(Mathine Learning)

    - Hierarchical,Network (Obsolete / Rare)旧时代的余晖。。。

    

- 关系型模型可以对任何东西进行建模


- 关系型模型主要关注三个方面



- 一个 关系(relation) 是一个无序的集合,这个集合包含代表 entities 的属性的关系(relationship),比如


- tuple 在 关系 中就是一个 属性值 的集合


- 原始关系模型中,所有的值必须保证原子性或者它必须是一个单个属性值(比如只能是一个 String,一个 int,或者一个 float等,不能是数组或者嵌套的对象等)

- NULL 这个属性值代表未知,SQL 查询会遇到麻烦

- 主键 Primary Key,唯一标识记录的 id

- 外键 Foreign Key,用于指定一张表中的属性必须存在于另一张表中

- 注意 relation 和 table 语义一样

- 一个外键的例子


- 如何从 Database 中取数据?

    通过 DML (Data Manipulation Languages)




- Relational Algebra 关系代数

- Ted Codd 提出了在 Relational Algebra 中的其中基本运算符


    - SELECT


    - PROJECTION

        即 SELECT b_id-100, a_id FROM R WHERE a_id='2'

        


    - UNION

    

    - INTERSECTION

    

    - DIFFERENCE

    

    - PRODUCT

    

    - JOIN

        即 SELECT * FROM R NATURAL JOIN S;

        


- 一些后续研究的额外的操作符

    

- 一些优化策略


- 关系型模型与任何查询语言的实现无关,实际上当 Ted Codd 在他写关系型模型论文时并没有提出 SQL,他提出了 关系代数,并推出了自己的语言叫 Alpha,与(1970)同年推出的 SQL、Ingres (伯克利)、Quel 都是竞争对手。

- SQL 只是一个标准


- 结论 

    


CMU 15-445/645-笔记-01-课程简介与关系模型的评论 (共 条)

分享到微博请遵守国家法律