MIT 6.830 Lecture Notes
MIT 6.830 Lecture Notes
MIT 6.830是一门数据库系统的课程,实现语言为Java,课程主页可点击此处。
这个系列的文章主要记录学习6.830课程的笔记心得。
Lecture 1
Basic Concepts
- Data modeling & layout 数据模型
- 结构化表示数据的系统方法
- 对于数据的持久性、一致性、共享和访问效率很重要
- Declarative Querying and Query Processing 查询
- 访问数据的一种高级语言
Consistency/Transaction + Concurrency Control
- Atomicity 原子性:某操作要么完成要么不做,不存在做了部分的情况
- Consistency 一致性:事务的操作前后不影响数据的完整性
- Isolation 隔离性:并发访问时,事务之间不会互相影响
- Durability 持久性:事务完成后,其所做的修改将持久地保留在数据库中
Lecture 2
Those who cannot remember the past are condemned to repeat it
Relational Data Model
- Key properties
- 表示形式简单
- 不需要物理数据模型描述
- The Data Model
- 所有数据表示为元组的表
- 表是无序集,无重复元组
- 数据库由一个或多个表构成
- 每个关系都有一个schema来描述列/字段类型
- 每个字段都是基础数据类型
- Keys
- 主键是唯一标识一条记录的字段属性,每个表有且仅有一个主键,必须非空
- 外键用来建立表与表之间的联系,表A的外键是表B的主键,外键可重复可空,一个表可有多个外键
Lecture 3
SQL
- Left Join:返回左表所有记录和右表中连接字段相等的记录
- Right Join:返回右表所有记录和左表中连接字段相等的记录
- Inner Join:只返回两个表中连接字段相等的记录
- Outer Join:返回两个表中所有记录
SimpleDB
SimpleDB主要组成部分
Heap Files (Lab1)
Buffer Pool (Lab 1-6)
- Basic Operators (Lab 1 & 2)
- Scan, Filter, JOIN, Aggregate
- Basic Operators (Lab 1 & 2)
Query Optimizer (Lab 3)
Transactions (Lab 4)
B-Tree Indexs (Lab 5)
Recovery (Lab 6)
模型图
- DB -> Catalog:DB调用
getCatalog()
方法,后者返回一个列表,包含了DB所有的表 - DB -> BufferPool:DB调用
getBufferPool()
方法,后者返回所缓存的最近访问的页 - Catalog:
<DbFileID, Table>
,其中Table:{DbFile file, String name, String primary_key}
- BufferPool:
<PageID, Page>
,其中Page:{PageID id, Tuple tuples[], Byte header[]}
- HeapFile:
{File file, TupleDesc td, DbFileIterator it}
,生成DbFile - HeapPage:
{HeapPageId pid, TupleDesc td, Byte header[], Tuple tuples[]}
,生成Page - Operators:生成DbIterator
- DB -> Catalog:DB调用
Lecture 4
Functional Dependency
- 一个数据库R的一组FD可以表示成:X -> Y,其中X和Y是数据库R中的两组属性集合,其含义是:对于R中的任意两个元组,只要他们在集合X中的属性相等,那么他们在集合Y中的属性也相等。这里X称为决定因素,Y称为被决定因素
- 完全函数依赖:在一张表中,若X -> Y,且对于X的任何一个真子集(假如属性组X包含超过一个属性的话),X’ -> Y不成立,那么Y对X是完全函数依赖
- 部分函数依赖:假如Y函数依赖于 X,但同时Y并不完全函数依赖于X,那么Y部分函数依赖于X
- 传递函数依赖:假设Z函数依赖于Y,Y函数依赖于X,同时Y不包含于X,且X不函数依赖于Y,则Z传递函数依赖于X
Key
设K为某表中的一个属性或属性组,若除K之外的所有属性都完全函数依赖于K,则K为一个码。(码可以不唯一,但主码唯一)码中包含的所有属性即都为主属性
Normal Form
- 1NF:最基本的要求,每个属性都不可再分
- 2NF:2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖
- 3NF:3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖
- BCNF:BCNF在3NF的基础之上,消除了主属性对于码的部分与传递函数依赖
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mind Palace!