『プログラマのためのSQL 第4版』
J.セルコ, 2010。何はなくともまずはこれ。DB エンジニアの必読書です。私もこの本によってリレーショナル・データベースの面白さに気付かされました。もちろん実務上のテクニックも満載で、SQL の技術を学びたいなら、この本一冊を読み込めば他の本を読む必要はありません。余計な本を買わなくて済むので財布にも優しい。真に実用的な本とはこういう本を言うのです。ただし、正規化やトランザクションなどの分野についてはほとんど触れられていません。あくまでテーマは「SQL」。
前書きに「DBエンジニアとして1年の経験がある人を読者に想定している」とあるように、レベルとしては中級です。全くの初級者には厳しい(経験者は語る)。初級者の人は、手前味噌ですが、私のサイトでウォーミングアップをしてから読みましょう。内容的に「セルコ・セレクション」と重複する部分も多いので、まずはこちらを読んで購入するか判断するのもよいでしょう。
Kindle版あり。
『SQLパズル 第2版』
J.セルコ, 2006。『プログラマのためのSQL』が教科書だとすれば、こちらはさしづめ練習問題です。ページ数倍増で新しい問題が多く採録され、既存の問題にも新しい解法が追加されました。やはりというか、SQLの新機能である OLAP 関数を使った解が目立ちます。実務的な問題だけでなく、数独や図形パズルを SQL で解くなんていう遊び心あるパズルも含まれていて楽しい。DB エンジニアの SQL 演習問題としては、文句なし最高峰のレベルです。
『達人に学ぶ SQL徹底指南書』
ミック, 2008。自分の本を紹介するのはちょっとマナー違反かもしれませんが、でもまあ、いい本、だと思います。贔屓目ありで見て。主にCodeZineの連載記事と、このサイトに掲載しているテキストに加筆・修正を加えたものが中心です。サブタイトル「初級者で終わりたくないあなたへ」が示すとおり、入門を終えてさらにその先へ進もうとする方々(でもちょっとまだセルコとデイトには歯が立たないという方々)の道標となるべく、気合入れて書きました。
Kindle版あり。
『SQLアンチパターン』
Bill Karwin, 2013。データベース設計の「べからず集」。ある程度経験を積んでから読むと「あー、あるある」と共感できるものから、昔の自分の作ったへぼい設計を思い出して冷や汗を書いたりと、色々な意味でハラハラドキドキしながら読める面白い本です。
『Joe Celko's SQL Programming Style』
J.セルコ, 2005。直接 SQL のテクニックを扱うのではなく、設計とプログラミングのためにわきまえておくべき周辺知識とスタイルについての本。テーブルや列の命名規則から始まって、コーディング・スタイル、やってはいけないテーブル設計の例、ビューやストアド・プロシージャの使い方、集合論的発想のススメまで、実に目配りの行き届いた良書。特に第6章「コーディングの指針」と第10章「SQLで考える」は全ての DB エンジニアに読んでいただきたい。邦訳がないのが惜しまれます。
私の「SQLプログラミング作法」のネタ本ではないのか、と思う人もいるでしょうが、実はほとんど書き終わってから見つけて「しまった」と思った本。でもほとんど意見が一致していて一安心。
まあそれはともかく、そろそろ SQL もまともなコーディング・スタイルが確立されてよい時期に差し掛かっているでしょう。
『Joe Celko's Analytics And Olap in SQL』
J.セルコ, 2006。OLAP のツールとしての SQL というちょっと目新しい視点から書かれています。SQL:99 と SQL:2003 では、CUBE や ROLLUP、分析関数など OLAP 機能の拡充が行なわれており、そうした新機能の応用方法が丁寧に解説されています。関係代数の中で唯一標準化されていない関係除算を実現する方法がバスケット解析との関連で詳説されている点もポイントが高い。
『Joe Celko's Trees and Hierarchies in SQL for Smarties』
J.セルコ, 2004。近年の リレーショナル・データベースと SQL に対する批判の中で最もホットなものといえば、「リレーショナル・データベースでは木構造や階層構造のデータをうまく扱えない」という批判です。多分、あまり弱点弱点いわれたからでしょう、最近ではここは各ベンダの強化重点項目になっているようで、木構造を扱うための独自の拡張を、どのベンダも懸命に試みています。
そういう環境方面の努力はベンダに任せておくとして、私たち現場のエンジニアが実際に SQL で木構造を扱う方法には、どんなものがあるでしょうか ―― この本は、その疑問に答えるため、丸々一冊を SQL での木構造の扱い方に割いてしまった凄い本です。よくこんなマニアックな本が商業的に出せるな、というのが正直な感想。書くセルコも凄いけど、受け入れる素地のあるアメリカの DB 界も凄い。この本のハイライトは、木のノードを集合に見立ててデータを扱う「入れ子集合モデル(Nested Sets Model)」の解説です。実用性はまだまだ疑問が残るけど、SQL のポテンシャルを最大限引き出していることは間違いありません。読んで役に立つ技術書は世に多けれど、興奮する技術書というのは、そうそう無い。感動を追いかけて生きたいそこのあなたは必読。
私がこの本の内容をまとめた以下のサイトも予習にどうぞ。
『データベースシステム概論 第6版』
C.J.デイト, 1997。1ページ目から順に読む本ではありません。1000ページ近くあります。しかし関係モデルに関する厳密な議論を行なうときは、必ず参照すべき本。日本語で読むことのできる、最も包括的で正確な概論です。原著は第8版が刊行されましたが、邦訳は第6版が最新。
『ACMチューリング賞講演集』
1989。コッドの講演「関係データベース:生産性向上のための実用的基盤」が収録されています。9000円出してまで買う価値があるかと訊かれると即答しかねるのですが、機会があったら読んでみてください。コッドの他にも Fortran の開発者 J.バッカス、『The Art of Computer Programming』の D.クヌース、UNIX の開発者 D.リッチー、『心の社会』の M.ミンスキーら大物たちの講演も読めます。
『The Relational Model for Database Management: Version 2』
E.F.コッド, 1990。コッド本人の文章が読める数少ない著作の一つ。関係モデルの創始者が関係モデルを解説するのだから、分かりやすいし正確です。しかし入手は困難です。たまに Amazon で古本を見かけます。
『Relational Database Writings 1991-1994』
C.J.デイト, 1995。デイトの雑誌連載の記事を集めたアンソロジー・シリーズの第4弾。「理論は実践的だ!(Theory is practical!)」をモットーに、現場のエンジニアに向かってデータベースの理論的基礎を平明に説明する記事が満載。正規形、閉包特性、制約、関係代数、3値論理、関係モデル対オブジェクト指向など、重要なテーマはほぼ網羅されています。教科書として書かれた『データベースシステム概論』に比べて、具体的なサンプルが多くて読みやすいのが嬉しい。デイト自身も結構リラックスして楽しんで書いてるのが伝わってくる。
本書の圧巻は何と言っても、3値論理の是非をめぐるコッドとの論争「Much Ado About Nothing」です。NULL と3値論理に否定的なデイトと擁護派のコッドが正面から激突するさまは、まさに竜虎の戦い。おかげで後半の「関係モデル VS 非関係モデル」の戦いが相対的にしょぼく見えてしまうのはご愛嬌。
『Relational Database Writings, 1994-1997』
C.J.デイト, H.ダーウェン, D.マクゴブラン, 1998。デイトら3人の論文集の第4巻。未読です。邦訳はなし。
『論理学をつくる』
戸田山和久, 2000。関係モデルの基礎の一部をなす述語論理を学ぶには最適な入門書。述語論理だけでなく、論理学全体の入門書なので、論理学の知識がゼロの人でも大丈夫です。入門書としては珍しく3値論理に少し触れているのもポイント高い。
『論理学』
野矢茂樹, 1994。著者と二人の禅僧の対話形式で進む論理学の教科書。なるべく形式的すぎて無味乾燥にならないようにという努力が好ましい。命題論理、述語論理の基礎はカバーされていますが、直観主義論理に一章が割かれているのが普通の教科書と違うところ。これは、著者が直観主義にシンパシーを持つ立場であることによります。
「A Relational Model of Data for Large Shared Data Banks
」
E.F.コッド, 1970。言わずと知れた古典。この論文によって関係モデルが世に出ました。現在オンラインで読めるのは第1章のみ。いずれは残りの章もアップされるようです。
コッドの本や論文は、一般に手に入る書籍としてはなぜかあまり出版されていません。まして邦訳されたものはひょっとしてゼロではないでしょうか。その代わりに(?)、僚友のデイトが書きまくっているのが不思議なコントラストをなしています。
「All articles by C.J. Date」
Intelligent Enterprise のサイトで公開されているデイトの記事一覧。タダで読めます。太っ腹。
「Joe Celko」
J.セルコのオフィシャル・サイト。太っ腹 × 2。なかなか渋い顔してる。
「Ronald Fagin's Home Page 」
第4正規形とフェイギンの定理で知られる R.フェイギンのオフィシャル・サイト。太っ腹 × 3。
「Database Debunkings」
ときにデイトよりも過激な「原理主義者」 F.パスカルのオフィシャル・サイト。太っ腹 × 4。
「How To Handle Missing Information Without Using Nulls」
H.ダーウェン 2003。タイトルの通り「NULL を使わずに失われた情報を扱う方法」についてのプレゼンテーション資料。まだ現実的な選択肢とは言えませんが、第6正規形を使って NULL を消去する方法が紹介されています。
「SQL Reunion」
1995。D.チェンバーリン、J.グレイら、かつて IBM でリレーショナル・データベース黎明期のプロジェクトに関わっていた技術者たちが、久々に再会して思い出話に花を咲かせよう、という趣旨で1995年に開かれた会合の議事録。かなりぶっちゃけ気味の内容。
「UNIX データベース入門」
丸山不二夫 1994。稚内北星学園短期大学の講義のレジュメ。SQL の文法や正規形についての講義録。
「新しい業界標準「SQL99」詳細解説」
室住正晴、松居由美子 2000。SQL 標準規格 SQL-99 についての解説。真理値型や配列型、WITH句による共通表式、OLAP機能の導入など。
「SQL:2003 Has Been Published」
A.アイゼンバーグ他, 2003。SQL の最新標準規格 SQL:2003 についての解説。MERGE文やシーケンス・オブジェクト、ウィンドウ関数など多くの重要な機能が追加されました。PDFファイルの英文です。
「3値論理の有効活用」
2005。2ch の DB 板に私の「3値論理」がリンクされているということを聞いて相互リンクさせてもらいました。ちょっと面白い内容ですが、もちろん私は薦めません。NULL 撲滅運動を推進したく思います。
メールでいただいた情報により、リンク先を arton 氏の保存しておられるサイトへ変更しました(2005/12/09)。
「OracleSQLパズル」
明智重蔵, 2005-。セルキアンの同志である明智さんが運営されているサイト。SQL の高度な応用方法のサンプルが数多く掲載されています。Oracle の独自機能を使った解だけでなく、標準 SQL を意識してくれているのが嬉しい。