The Database Management Systems, Chapter 3: The Relational Model
インターネットとかしてるうちに 4:50. コーヒー淹れる時間はなし。
Database Management Systems, 3rd Edition: Ramakrishnan, Raghu, Gehrke, Johannes
なんかもうちょっとモダンな教科書がないかと探したけれど、大学の授業では今でもこれが指定されていたのであきらめて再購入。(この Ullman らのやつも気になるけど、Standford でしか使われていない。 )
そして 3 章はベーシックすぎで、自分が探していたのは Chapter 4 Relational Algebra and Calculus だった。引き続き読む。
昔読んだときは SQL とか興味なくて前半ぜんぶすっ飛ばして後半の実装編だけ読んだけど、今はストレージとか興味なくて relational model とか読んでる。年取ったな。
Relational Algebra の完了。さすがに四半世紀プラスを経て Codd のオリジナルよりはだいぶ洗練されているが、これじゃ全然 SQL 実装できないじゃん?と思ったら、最後に query optimizer では a variant of relational algebra を使うよ、chapter 15 を読んでね、と書いてあるので明日は chapter 15 を読みます・・・。
余った時間で Chapter 5 SQL: Queries Constraints, Triggers をパラパラめくると nested query (subquery) は relational algebra にはないけど、頑張って変換できるよ chapter 15 を見てね、とあるのでやはり chapter 15 を読むしかない。ただその前にこの Chapter 5 を読んだ方がよさげ。
ところで自分は SQL の select <何らかの式> というやつは projection だと思ってたんだけど、projection は columns を選ぶだけである。Chapter 5 の例も column を選ぶ (あるいは aggregate する) 以上のことをしていない。<何らかの式> があるとすごい表現力変わっちゃうと思うんだけど、大丈夫なのかねえ。
ついでに目次をパラパラやると OLAP の章があるね。これもあとで読もうかな。一方 OLAP はあるのに columnar がない!まじで。この教科書が 2003 で C-Store が 2005 なので、そうか・・・。ところで C-Store も Stonebraker なのか。PG よりよっぽどインパクトあるねアカデミックには。そりゃ Turing Awards もとるわ。