database方向PhD,做过database concept这门课的助教,谈一点自己的看法;0 {+ n" j! ^$ z7 d$ L
4 ~( d, \7 R' M+ L) Y% ]- Q. E
(1) 首先, 数据库需要掌握较多的抽象概念,比如relational model, 2NF, 3NF+ g; d" A, P& ~6 [3 C/ e- |
$ K7 _1 j$ [* L, `! _+ `, p(2) 相对于其他语言来说,SQL本身初级入门很简单,但是对于复杂的query,需要一定的经验才能写出既快又好的SQL
9 ?6 }/ R2 `4 k* G# j7 N" y4 D; ?5 i% o1 A; q l! S
(3) 数据库系统本身经过几十年的发展已经非常复杂,大型数据库如oracle,DB2的很多模块都已经达到了百万行的代码量,即使开源数据库MySQL或postgresql的代码也不易阅读和修改。所以对于初学者来说,理解和记忆数据库系统的设计实现是一件比较痛苦的事情。2 K! R* L' P: K' x; {
7 e7 G" d: Y4 n) {# Z: {* m
个人建议:
2 M. Z" S5 U: ?3 c
8 G/ N: `6 J5 n0 ki. 从基础入手,搞清楚基本概念:数据库的model,各种操作(join, outer join, inner join, projection, selection, aggregate ...), regular algebra
$ d' p6 c" M! ~1 O/ _8 K# a) I- Z% v3 q; u2 a# L
ii. 熟练掌握SQL,这个没别的办法,书里面的SQL例子自己多写一些,尤其是带sub-query的SQL, d1 ~! L. G4 L. ~
' j* H. _; V( u
iii. 对于系统本身,掌握重点,比如B+ Tree和简单的query optimization |