概要
下記リンクの楽々ERDレッスンを一通り読んだので、第3章のレッスンの演習問題に改めて取り組んでみる。
自分の復習用で誤りもあると思うので、この本を一読した初心者がどのように取り組むかを見物する程度の心構えで読んで欲しい。
なお、Web記事にもなっていて、こちらから読める
第1回
はじめに
題材はこちらの注文用紙。これの裏側のデータベースを想像して設計していく。
https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/345800/ce89ff6f-59fb-aeb2-f483-aba5a540936d.png
引用:楽々ERDレッスン 第1回:「お持ち帰りご注文用紙」編
まずはイベントを見出す
データベース設計はイベントエンティティとリソースエンティティの2つを考えることになるが、イベントエンティティからスタートするのが定石らしい。リソースエンティティの方がややこしかったり、数も多いので最初に取り組むには適していない。
ということで、まず最初にイベントエンティティを洗い出す。
こ注文用紙とあるので、『注文』のイベントエンティティは必須。あとは、支払いや商品引き渡しなどのイベントも考えることがあるかもしれないが、『注文』だけにフォーカスする。
イベントからリソースを見出す
『注文』からリソースを想像していく。リソースエンティティはWho, Whom, What, Whereを考えると良い。
who:顧客
what:商品
where:店舗
(注文は自動詞なのでwhomは不要 だと考えた)
属性を埋めていく
埋めようとすると、注文用紙と商品の対応に難儀する。そこで注文商品というエンティティを新たに用意した。
「お持ち帰り弁当」などの商品のカテゴリと、「Newマーク」の商品ステータスを考えて属性を埋めてリレーションシップまで考えてみた。
第2回
続いて第二回に挑戦していく。
引用: 楽々ERDレッスン 第2回:「図書館の予約申込書」編
イベントエンティティを見出す
先ほどと同様にイベントエンティティを見出していく。「予約(リクエスト)申込書」とあるので、『予約』イベントが中心となる。他にも『連絡』や『受取』や『認知』(この本を何で知りましたか の部分から)のテーブルが考えられそう。
『連絡』と『受取』については、フォーカスから大きく外れるのでやめておく。
『認知』についても日時まで収集するなら情報として使えるが、そこまでの記述はないならイベントエンティティとして考えるより『認知手段』とリソースエンティティで考える方が良さそう。
というわけで、ここでは『予約』エンティティのみをイベントエンティティとして残す。
リソースエンティティを見出す
リソースエンティティは、who, whom, what, whereを考えれば良かった。
『予約』のイベントエンティティについてそれらを考えると、
who:利用者
what:本
where:受取場所
(予約は自動詞なのでwhomは不要 だと考えた)
属性を埋めていく
今回はややこしそうなのでステップを踏んでいくと思うが、とりあえず埋められるところを埋めていく。
属性を埋めていったのがこちら。利用者の連絡先はリソースエンティティとして抜き出した。
また本の情報である『著者』と『出版社』も別で抜き出した。(※認知手段を忘れています)
リレーションシップを設定する
下図のようにリレーションシップを設定した。(※認知手段を忘れています)
『認知手段』をすっかり忘れていたの加えて修正
答え合わせをしていたら、上で言及していた『認知手段』を忘れてるのに気付いたので、加えて修正する。
新着図書や新聞にナンバーがあったので、別のリソースエンティティに切り出した。
本を読みながら振り返り
イベントの抜き出しは難なくできていた。属性の書面伝達可否や連絡先方法名エンティティなど、細かいところを見落としていた(仕事終わりで疲れてるので許して欲しい)
あと見返して思ったのが、〇〇フラグという表現より家族確認可否とかの方が良かった。