Data Model:1)structure 2) constraints 3) operation
hierarchy/Treelike(give me my children), table, graph, stream(give me next n bytes)
数据库 key idea
physical data independence : interface with tables instead of file and pointers
optional : logical data independence: views
关系代数(Relational Algebra)
closure: 输入是表,输出也是表,
操作:select, project, join, cross product 加上集合的几种操作,union, difference, intersect
Relational Algebra Expression
optimizer:
logical optimization: SQL -> a best RA expression (Tree). SQL just specifies the result, RA expression include evaluation order, choose the best one.
physical optimization: e.g., how to do a join ? (nested loop join, hash join, merge join) , depending on the data size, index available or not.
view只是一个命名的 query, 会和user query 一起组成一个大Query交给Optimizer。也就是把query中的view替换成定义它的查询,变成一个子查询,效果是一样的。
view 一般是不materialize的。