yojikのlog

yojikのブログです

OO厨的にはどうするべきか

id:aufheben:20060907:1157603294 のコメント欄で書いたモデルを清書してみた。このエントリの設問のOO版です。

まず、倉庫が複数あるとして、倉庫にはさまざまな商品が保管されるとする。それぞれの商品は倉庫毎の特定の棚に保管される(つまり、商品と倉庫の組み合わせで棚が決まる)ことになっているとする

問題文の情報量が少なすぎ。あとは想像力で補えという話かも知れないけど、棚番号の体系とか勝手にイメージできないっす。そんな状況でも、OO分析だとインスタンスの数とか整合性については考えられそうな気がする。というわけでUMLで書いてみた。もちろんツールはJudeで。

図から読み取れるのは、倉庫と商品の間で一意に決まるのは、倉庫別在庫*1である点。これは関連クラスのセマンティックスで保障されている。
倉庫別在庫が棚への対一関連をもっているから、結果、倉庫と商品の間に一意の棚が決まることになる。ただ、「棚の属する倉庫」と「倉庫別在庫が属する倉庫」が同じである点については、保障されていないから制約を追加している。ここでDOA派で重要そうな棚番号とか商品番号は、単なる属性にすぎないと思う。多分必要に応じて被らないように制約をつける必要はありそうだけど。こういうのは人間が一意に識別するための方便という用途がデカイ気がします。(はぶさんのいうとおりUIに過ぎないのではないかと)
でも書いてから不安になってきた。本当にあってるのかな。UML怖え。とりあえず、ここからDB設計するなら、多分IDを使うほうがイイ感じになりそう。

*1:クラス名は「保管」でもよかったんだけど、わかりづらいのでこの名前です。こいつはいわゆるモーメント・インターバル系ですね