koheitakahashiのブログ

2020.07.01にプログラマーとして生を受けた私が学んだことや、日常について徒然に書いていきます。

レシートからER図を作成するまで

はじめに

今、羽生 章洋著 『楽々ERDレッスン』を手を動かしながら進めています。おかげで、昨日よりもER図を作成することに慣れてきました。

今回は、同著の第3部第3回の例題である、ハンバーガーショップのレシートからER図を作成するまでの過程を例にとって、自分が学んだER図作成までの過程をまとめたいと思います💪

1. イベントを探す

まず、最初に行うことは、レシートからイベントを見つけることです。イベントの見つけ方は、属性に「When」を持つものを探すことです。もっと具体的に言えば、「〇〇日」と言えるものです。

今回のレシートを例にとれば、「注文する」という行動がイベントです。「注文日」と言うことができます。

2. リソース系を探す

ここで、リソース系とは、「イベント」を行う時に使われるもののことです。リソース系の見つけ方として、「誰に」、「誰が」、「何を」、「どこ」を考えると良いみたいです。

今回の例で言えば、「注文する」と言うイベントには、「誰に」は店員さんですが、レシートには店員さんの名前はなく、代わりにレジ番号があります。そのため、「どのレジに注文したのか」と考えるようにします。

次に、「誰が」は「お客さん」ですが、今回はデータベースに入れる必要はありません。

そして、「何を」にあたるのは「商品」です。

最後に、「どこ」ですが、これは支店別などで分析する際には必要かもしれませんが、今回の例題ではそこまでは求められていないため、データベースに入れません。

3. 項目を入れてみる

ここで、レシートをみて、素直に項目を入れてみます。私の考えでは以下のようになりました。

f:id:NMP300:20190918192324p:plain
項目を入れてみる

ここで、もう少し踏み込んで考えてみます。

  • レシートには金額合計と単価、個数があり、これを「注文」に一括して入れてもいいのだろうか

  • セット商品を管理するエンティティが必要ではないだろうか。

  • お持ち帰りの有無も聞いているぞ。

  • お金を預かっているな。

というようなことが気になってきました。そのため、これらが解決されるようにER図を書き直してみましょう。

  • レシートには金額合計と単価、個数があり、これを「注文」に一括して入れてもいいのだろうか

    →「注文詳細」と「注文」に分けて考えよう。

  • セット商品を管理するエンティティが必要ではないだろうか。

    →「セット商品構成」というエンティティで管理しよう

  • お持ち帰りの有無も聞いているぞ。

    →「パッケージするかどうか」というエンティティで管理しよう

  • お金を預かっているな。

    →「デポジット」というエンティティを作ろう

f:id:NMP300:20190918192412p:plain
改善したエンティティ

4. リレーションを考える

以上をもとに、エンティティ同士の関係を考えると、最終的なER図は以下のようになりました。

f:id:NMP300:20190918192506p:plain
最終的なER図

まとめ

ERDレッスンのおかげで大分ER図を書くことに慣れてきましたが、やはり新しい形式の注文書などを見るとまだ、完全に自分一人ではER図を作成することは少し難しそうです。 明日も引き続き取り組んで、ER図作成慣れていきたいです💪

参考文献

羽生 章洋 2006『楽々ERDレッスン』 翔泳社