練習問題の題材で思案中

最近ちょっと疲れが溜まっていたので、昨晩は早く寝て、その代わりに今朝早起きして仕事をした。

毎度のことではあるが、3回目の記事のエンジンがなかなかかからない。今回の記事では「全体と部分(ヘッダーと明細)」のパターンを解説する予定だが、その例に何を持ってくるかで先週からずっと悩んでいた。これは記事の冒頭だから、これが決まらないことは、実質進捗ゼロを意味している。

「全体と部分」の例としては、「受注と受注明細」のようなトランザクションを記録するエンティティがすぐに思いつく。しかしこれを使うのは避けたいと思っている。1つの理由は、「商品」や「顧客」など、周辺のエンティティを登場させる必要があるからだ。もう1つの理由は、トランザクションの記録については、第4-5回で詳しく取り上げる予定なので、今回はリソース系の例を使いたいからでもある。

「車とタイヤ」は直感的には理解しやすい例だが、自動車メーカー/ディーラーのどちらの立場から見ても、そのコンテキストを適用する状況が思いつかないのが難点である。何しろ量産品の場合は、ブツ(個々のモノ)よりも、ブツの仕様(種類)の管理が主になるのが一般的だ。「車とタイヤ」は、種類で考えると多重度が多対多になり、「全体と部分」の関係にならない。またメーカーの場合、「タイヤ」は、あまた存在する「部品」の1つと見ているはずだから、「タイヤ」だけを特別扱いするのも不自然である。つまらないことのようだが、今回の記事では、練習問題用の箱庭ではなく、大きなアプリケーションの一部としてイメージできる題材を取り上げたいので、この辺りにはこだわりたい。

色々考えた末、航空機の座席予約システムにおける「便と座席」を思いついた。これなら座席予約システムとして広く知られているから、アプリケーションシステムとしてのイメージも沸きやすいだろう。また自分は、航空機とは別のオンラインのチケット予約システムの概念モデリングをやったことがあるので、その経験も反映できる。

と、ここまでは良かったのだが、練習問題の問題記述を考え始めたところでまた行き詰まってしまった。座席予約システムを数行で説明する文章がうまく書けない。そうこうしているうちに娘達がやってきて、「近くのショッピングモールに連れて行く約束を果たせ」と騒ぎ始めた。いやはや、こんな調子なので、この週末も原稿は遅々として進まない(苦笑)。