eBook(PDF)のダウンロード
eBook(改訂2.1版)を章単位でダウンロードできます.
第1部 概念モデリング
0.前提知識−データベースの役割と位置付け−あるいは,OOADの再定義 (2011/08/24)
本章は,もともと第1章の補足説明として急遽追加したものであるが,オブジェクト指向分析設計(OOAD)方法論への全く新しいアプローチ: Yet Another OO −YAOO としても読めるように改訂した.この僅か十数ページの内容を理解すれば,数百ページのOOAD指南書は無用(というより有害無益)の長物となる.
1.述語抽出法とは (2009/09/11)
述語抽出法における概念モデリングの拠り所となる考え方は, 思考(概念)→言語表現→数式表現(高階の述語)→図式表現(実体関連図) である.
2.述語抽出法の数学的基礎(1) 述語の演算 (2010/08/03)
述語の数学的取り扱い方を,関係代数に基づいて解説する.従来の関係代数に加えて,結合(JOIN)と併合(MERGE)という根源的な演算が導入される. <注意>関係理論と述語抽出法の最大の相違は,結合と併合をデータ操作(Data Manupilation)ではなくデータ定義(Data Definition)に使用することである.
3.述語抽出法の数学的基礎(2) 高階の述語 (2012/05/04) Updated!
高階の多項述語の数学的取り扱い方を解説する.言語学の統語論(いわゆる構文解析)に相当する. ついで,高階の単項述語の数学的取り扱い方を解説する.言語学の意味論に相当する.また,述語抽出法の論理的正当性−分離記法は拡張含意式である−を述べる.
付録0 数学用語の基礎知識(1) 必要条件は必然条件である (2012/04/16) Updated!
従来必要条件と訳されてきたnecessary conditionという用語は,必然条件と訳すのが適切である.また,必要と必然の混同が,含意式と因果律の混同にまでつながる.以上の主張を具体的に例証する. ついでに,Wikipedia英語版における解説の誤りも指摘する.
4.述語抽出法の数学的基礎(3) ハイパー述語 (2012/04/05) Updated!
高階の単項述語とそれらを2項述語に変換したハイパー述語の数学的取り扱い方を解説する. (1) ハイパー述語∈Hを使った属性の取り扱い,(2)ハイパー述語⊆Hを使ったオブジェクト指向の基本概念(汎化/特化,継承)の数学的定式化.
5.実体関連モデル−高階の実体関連図 (2010/08/24)
高階の述語の図式表記である高階の実体関連図の描き方を解説する.
6.述語抽出法の実際 (2010/08/24)
現実の自然言語表現を高階の述語に,さらには,高階の実体関連図に変換する方法と,高階の述語への変換を前提とした自然言語の記述法について,具体例を用いて解説する.
7.制約の表現 (2012/05/17)Updated
高階の関連においても,関係理論の3 つの制約:1) 一意性制約,2) 参照整合性制約,3) 多重度制約 を利用して,ビジネスルールを忠実に反映し,漏れや曖昧さがない概念モデルが作成できることを示す.
8.ビジネス・プロセスと述語抽出法 (2010/08/25)
具体的なビジネス・プロセスを例にとり,述語抽出法の適用法を示す. 第0章と併読すれば,上流工程向けの方法論となる.
付録1 高階の述語と文脈自由文法 (2011/04/04)
高階の述語が文脈自由文法で定義できることを示す.これは,高階の述語を入力として個別のDBMSのスキーマを出力するコンパイラを容易に作成できることを意味する.
第2部 論理モデリング
<ご注意> 9.と12.は,後続の論理モデリングの前提として必要な部分だけを抜粋したものなので,関係理論やUMLクラス図の本格的な勉強には役に立ちません.いわゆる「入門書」と勘違いして,9.や12.だけをアクセスする方々のご期待には副えないので,あらかじめご了解願います.もっとも,データモデリングの方法論として関係理論やUMLクラス図を本格的に勉強するのは時間の無駄ですが.
9.関係理論入門 (2010/08/25)
関係理論の基本的な考え方(関係スキーマを記述するのに必要な部分だけ)を概説する.「正規化」は後続の章で徹底的に批判されるので,ここでは触れない.
10.関係データベース向け論理モデルへの変換(多項関連) (2010/08/25)
RDBMSの基本機能(主キー制約,参照整合性制約,多重度制約)だけを用いて,高階の多項述語を実装する方法を提示する.RDBは関係理論ではなく述語抽出法のために存在することが理解できよう.
11.関係データベース向け論理モデルへの変換(単項関連) (2010/09/01)
古典的 RDBMSの機能範囲内で,すなわち, 特別な宣言文や定義文を必要とせずに,汎化・特化・継承等を実装する方法を提示する.
12.UMLクラス図の概要 (2010/09/01)
後続の章に必要な最低限の知識を与える. 簡単すぎて,クラス図入門としては役に立たない.
13.UMLクラス図への変換 (2010/10/14)
高階の述語を表現する汎用クラスを使用して,データモデルを実装する方法を紹介する.結果的には,RDBMSの基本機能(のプロトタイプ)を実装するに等しい. (あまりに汎用的過ぎて,フツーのクラス図を期待された方の期待にはそえないかも.)
例題Javaプログラム1 (2010/10/14)
13章の例題をJavaで記述したもの.デバッガで動かして,局所変数の変化を追跡確認すると理解が進む.
<お断り> 当初 「CODASYL網モデルへの変換」を予定しておりましたが,論理モデルを手元のPC環境(Windows Server 2003 or 2008 or Vista or Win7)で確認するためのDBMSが見当たらないため,割愛します.悪しからず.どうしても必要な方は,ご連絡願います.ご相談には応じますので.
付録0 XMLへの変換 (2010/10/14)
入れ子記法をそのままXML化するだけ. といっても,たった2つのタグを使うだけで,概念モデルをXMLに変換できるのは,後続工程には福音であろう(スキーマ自動生成への道が開かれる).
付録1 KVS入門 (2011/04/24)
KVSの基本文献(文献名は本文中に明記)の抄訳.ネットに転がっている他者の翻訳あるいは解説が不得要領だったので,結局原典に当たらざるを得ず,已む無く自分で訳出した.この手の文献は,原著者の文章力が必ずしも優れているわけではないし,翻訳者の英語力と技術力(本当に自分で動かしてみたの?)がそれに輪をかけるので,それぞれの実力を,かなり好意的に70点としても,最終的な翻訳の出来は,0.7×0.7=0.49 と,本来の真意の半分しか伝わらない.実物を動かしながらでないと翻訳などできない相談である. この抄訳にたどり着いた人は,ご自分の運の強さを誇ってよい.
付録2 KVS向け論理モデルへの変換 (2011/04/24)
述語抽出法による概念モデルを前提にしているので,第1部をマスターしていないと,この論理モデルは理解できない.Copy&Pasteでは,技術は修得できない.
第3部 従来理論批判
これまで,「述語抽出法は従来理論より優れている」という相対的優位性を主張するために,従来理論を論破してきた.しかし,今回の改訂で,「述語抽出法は,(少なくとも古典的論理学の範囲内では)絶対的に正しい」という絶対的優位性を示し得た(詳細は,3.3.5を参照)ので,他理論を論破するのは打ち止めにする.比較以前に劣っているとわかっている他理論を学習するほど馬鹿げたことはないし,それに費やす時間も体(脳)力も残されていないからである.連立一次方程式を習得した中学生が小学校で習った鶴亀算を見向きもしないのと同じことである.無論,改訂を止めたからと言って,従来理論の欠陥を見過ごすわけではない.以下の論難は依然として有効である.(2012/02/09)
14.関係理論では解けない問題 (2012/05/10) Updated!
従来,関係理論では解けないとされてきた古典的な問題を述語抽出法で解く.こんな簡単な問題も解けない方法論が40
年間も業界・学界に君臨してきたとは,驚くべきことである.
・ 接続の罠(Connection Trap)――扇の罠(Fan
Trap)と断絶の罠(Chasm Trap)
・ 従属性非保存のBCNF 分解
15.関係理論批判 (2010/10/15)
関係理論の根本的な欠陥を批判する.
関数依存症,多重度過敏症,無損失結合分解偏執狂,分解(正規化)アプローチの無謀,etc.――よくもこんなにあるものだ.
しかし,何と言っても最大の欠陥は,関係(relation)と参照(reference)を混同している−すなわち,関係理論は関係を正しく扱えないことである.
例題データベース ここまで出てきた主な例題を関係データベースで実装したもの.
16.階層構造の呪縛 (2010/12/02)
従来,階層構造と呼ばれてきたものに,述語抽出法の立場からメスを入れ,階層構造でないものまで階層構造と錯覚されてきたことを明らかにする.従来理論の弱実体(weak entity)や識別者従属エンティティ(identifier-dependent entity)は大いなる錯覚である.
17.オブジェクト指向方法論批判(1) 連関論 (2010/12/02)
UML に代表されるオブジェクト指向方法論の欠陥について,連関(association)の扱いを中心に詳述する.UMLの連関は,関係理論と同じ欠陥(関係と参照の混同)に加えて,演者(当事者)視点と観客(第三者)視点の混同という欠陥をも併せ持っているので,救いようがない.
例題Javaプログラム2 17章で使われているLampクラスをJavaで記述したもの.
18.オブジェクト指向方法論批判(2) 汎化論 (2010/12/02)
オブジェクト指向方法論の最大の特徴である汎化(とその裏返しである特化)が,UML とOOP 言語では,意味が異なるということを,分類学的分類と系統学的分類の混同という観点から批判する.
補足:DNS(ドメインネームシステム)に見る分類学的分類と系統学的分類 (2011/08/26)
10年以上前に出版した拙著の一部を手直ししたもの. DNSの翻訳(もしくは邦文オリジナル)文献も上記のKVSと同じような状況にあったので,結局原典に当たらざるを得なかったのである.最初から原典に当たっていれば苦労はなかったものを.ちなみに筆者は,先日ホスティングサービスに切り替えるまで,約10年に渡って,WEB,Mail,DNS サーバを自前で運営していた.
例題Javaプログラム3 18章で紹介されている「分類学的分類」をJavaで記述したもの
参考文献 (2009/04/06)
あとがき (間断なく改訂しているので,書く暇がない).
補遺と正誤表 (改訂都度,本文に反映している)