ユーザーにとって、表というと表計算ソフト、Excelの表を思い出すと思う。
なんで、RDBのテーブルと、Excelのシートって、だいたい同じイメージになってしまう。つーか、ユーザーでなくても、そうだ(開発の人でもそういう人がいる)
でも、この2つには、決定的なちがいがある。
Excelは、セルの結合ができる。
RDBは、セルの結合が出来ない。
セルの結合のように、2レコード以上で、同じ値をとる場合は、2つのテーブルにわける。正規化の処理の一部で行う。
この問題は、聞いていると思う。でも、もう一歩突っ込んだ話。
つまり、ユーザーにとって、レコードの最小単位っていうのは、自分が、最小単位だと思ったのが、最小単位なのよ。それより細かく分割できても、セルを結合して、まわりに線をひいてしまえば、いいし。。。
っていうことで、問題がある。
ヒアリングをするとき、ユーザーは、レコードの説明を、「自分が、最小単位だと思っている」ものを、最小単位として説明する。
したがって、ユーザーのヒアリングをもとに、名詞項目を抽出し、(ER図を作るのをサボって、かつ正規化の作業をはしょって、すぐに)テーブルにしてしまうと。。。
コーディングのときに。。。
おやおや、このレコードのあるところのステータス、2つの値をとることがないか(@_@!)
ってなことになり、テーブル設計しなおしになる。
でも、ユーザーは、気づかない
例を挙げよう
受注のとき、
りんご100個
みかん90個
という受注をうけたとする。
自社倉庫は、東京と大阪にある。
このとき、東京倉庫に、りんご150個、みかん50個、大阪倉庫に、みかん50個あったとする。そうすると、大阪倉庫から東京倉庫にみかん40個を送ってもらい(これを、倉庫間移動という)、それがついたとき、この受注の出荷をする。
そうすると、みかん90個のステータスは、2つに分かれて、
みかん 東京倉庫分 50個 引当済み
みかん 大阪倉庫分 40個 倉庫間移動中
と、2レコードにわかれないと、ステータス管理できない。
ところが、Excelの人にそんな概念はない。受注明細の2行分の商品名を連結して、1行にして、そこに「みかん」と書き、上の行に50個、下の行に40個と書いてしまう。
受注明細をさらに分けるという概念はない。
そのため、その後のヒアリングに矛盾がでてくることがある。
ってことを、ユーザーからの話のなかで出てきたのならいいんだけど、
あるプロジェクトマネージャーさんが、どうも気づいてないようだったので、気になって書いてみた。


