12月 09, 2015

「理論から学ぶデータベース実践入門」読了(今年読んだ技術書 Advent Calendar 2015)

今年読んだ技術書 Advent Calendar 2015の9日目です。

今年は3冊技術書を読みました。
「誰のためのデザイン? 増補・改訂版」については以前書いたので、今回は表題の「データベース実践入門」についてです。
  • 第1章 SQLとリレーショナルモデル
  • 第2章 述語論理とリレーショナルモデル
  • 第3章 正規化理論(その1)―― 関数従属性 ――
  • 第4章 正規化理論(その2)―― 結合従属性 ――
  • 第5章 リレーションの直交性
  • 第6章 ドメインの設計戦略
  • 第7章 NULLとの戦い
  • 第8章 SELECTを攻略する
  • 第9章 履歴データとうまく付き合う
  • 第10章 グラフに立ち向かう
  • 第11章 インデックスの設計戦略
  • 第12章 Webアプリケーションのためのデータ構造
  • 第13章 リファクタリングの最適解
  • 第14章 トランザクションの本質
過去にOracleやSQL ServerやDB2などを触っていましたが、最近はMySQLとPostgreSQLしか触っていません。いままで独学で、データベースは表として使ってきたのでデータベース理論というのをきちんと学んだことがなく、ちゃんと学習するかと思って読んでみました。
よくシステムを構成するものの一つにデータベースというものが出てきますが、情報を蓄積しておく機能を持っています。
先に挙げた製品は、リレーショナルデータベースと呼ばれており、わざわざ「リレーショナル」という言葉が付いています。本書の副題にも「リレーショナルモデルによる効率的なSQL」とあり、まずはリレーショナルモデルとはなんぞや?というところから始まります。

データには関係性(リレーショナル)がある、なのでその関係性を使って余分な情報を持つのはやめようということで正規化の話へ進みます。
テーブル設計をしたことがあると、正規化については先に勉強していることが多いでしょう。単純に正規化だけを勉強していると、単にデータの重複を押さえて容量を減らそうとか、同じデータを何カ所にも持って更新漏れしてしまう問題を防ごうという感じで捉えてしまうのですが、先に解説されたリレーショナルモデルによって、正規化とは矛盾を無くすために行うということが見えてきます。
これにより、リレーションの直交性と合わせて、データベース全体から重複を取り除く手法が説明されます。

そしてドメインの設計からデータベースの仕組みへ近づいていきます。リレーショナルモデルでは表しにくいものや、表せないものをどのように保持するのかというところから、よりデータベース寄りのインデックスの話へ進みます。

このように、本書では理論から解説されることによって、なぜそうなっているのかというデータベースのお作法的な部分が見えてくるようになります。
独学でプログラムを学んだ人・とりあえず手を動かしてコードを書いてきた人や、Microsoft AccessってExcelのすごいやつでしょ?という感じでVBAを扱ってきた人などが読むと、この先設計でつまずくことが無くなるのではないかなと思いました。

復習的な意味でも、コードを書いた後の休憩などに読んでみるのをお薦めします。

と言う記事を準備していたら、著者の方がスライドを公開されたので、これを見るのもお薦めです。

0 件のコメント:

コメントを投稿