以前、佐藤正美氏のDBの設計方法を書いたけど、その際、はじめの段階、データの認知において、どのようにデータを持ってくるのか?それは、正規化理論や要求仕様におけう帳票分析とどう違うのか、同じなのかについて、書きたいと思います。
■佐藤氏の理論における2つのデータ収集方法
佐藤氏の理論において、データの収集は、命題論理方式と、コード 体系方式によって行われる(くわしくは、こちら)
これらの方法については、命題論理方式は、論理データベース論考の177ページ、コード 体系方式は179ページに書かれている。
佐藤氏の流派の人には、「お前ぜんぜんわかってねーよ」と批判されそうだが、ちょー簡単にそのやり方をまとめてしまうと、
<<命題論理方式の手順>>
帳票が出てきたら、T字型ER図の
エンティティを書くところ(上の部分)に帳票名、
左の部分(キーを書くところ)に、NOとかコードってついていることばを
右の部分(属性を書くところ)に、そのほかの項目をかく。
なお、T字型というのは、エンティティが上、下の部分が左右(キーと属性)にわかれてT字型になるので、T字型ER図というみたい。
で、このとき、帳票は、ふつうNoとか、コードが複数入る。
そこで、そのNOとかコード1つぶんを、1つのT字型ER図として、
そのNOの前の部分(受注NOなら、受注)をエンティティとし、
(1つ分の)なんとかNO、なんとかコードを左側のキーにかき、
右の部分に、上記の(帳票の)項目からエンティティ名のついている項目を入れる
ってな感じにする方法である。
<<コード体系方法>>
命題論理方式はめんどっちいので、
・項目が出てきたら、いままでウィリアムのいたずらがやってたように
エンティティに分けてしまい、
・エンティティがすでにあれば、そのエンティティにいれる
・エンティティがなかったら、新しくエンティティを作成し、
主キー(左側のなんとかNO)をつくる
って言う方法。
つまり、この手法は、いままでの帳票分析を、ちゃんとだれでもできる手法にまで高めたものであり、ウィリアムのいたずらが説明してきたのは、コード体系方式になるけど、こっちより、命題論理方式のほうが、めんどっちいけど、厳密である。
■正規化を使う、一般的な手法のとき、データの抽出は?
で、一方、正規化手法をつかうとき、じゃあ、その正規化をやる対象となるデータは、どっから発生するの?ていう話になる。
この集め方には、2つあるといわれる。
むかしCAITで出していたデータベーススペシャリストテキスト(ISBN 4-89078-458-6)の258ページ、データの抽出に出ているけど、トップダウンアプローチと、ボトムアップアプローチである。
<<トップダウンアプローチによるデータ抽出>>
はじめに、エンティティを出してくる。
どうして、エンティティが出せるかというと、エンティティはモノや概念なので、モノとして、そこの登場人物や、やり取りするモノは、エンティティとなる。このような感じで、エンティティは出せる。
そして、エンティティが出てきたら、あとは、そこに、属性を帳票などから埋めていくという手法である。
この場合、登場人物と出てくるモノを使って、あらかじめ、シナリオをつくり、つじつまが合うようになっていると、そこからエンティティを切り出して、あとは属性追加していく形になるので、話のつながりが見えやすい。
<<ボトムアップアプローチによるデータ抽出>>
帳票か、画面からデータ項目を取り出す。
ただし、帳票を見ても出てこない、画面はこれから作るのでない(>_<!)っていうことがある。この場合、DFDのデータストアからデータを取り出すこともできる。
しかし、この手法は、すべての帳票を集めてくれば、できるんだけど、もし、あつまらなかったら、抜けてしまう。。(>_<!)
っていうか、そもそも、帳票も画面も、これから作るシステムで、要求分析でER図を作りたい場合、どーすんのよ(^^;)っていう問題がある。
■佐藤氏の方法と一般的手法との比較
佐藤氏の命題論理方式と、コード 体系方式は、どちらも、帳票からやっているという点では、ボトムアップアプローチに相当する。一般的な、帳票分析も、ボトムアップアプローチが中心である。
しかし、トップダウンアプローチを使って、帳票分析を行いたい場合、コード体系方式で、エンティティに属性を追加していくことになる。
で、いままで、トップダウンアプローチについて、あんまり書いてこなかったけど、こっちのほうが実は重要で、それが、業務知識の重要性に関係し、さらに、現在のシステム開発の大きな問題に関連し、問題解決への重要な第一歩になるはずなんです。。
けど、あらしろべにの番組がはじまる数分間で、その問題を書くには、余りにも時間が無いので、別のときに書きます。