blog.waterlow.work

Ruby, Rails, js, etc...

【DB設計】「楽々erdレッスン」のまとめ

目的

「楽々ERDレッスン」を読んだので、そのまとめ

楽々ERDレッスン (CodeZine BOOKS)

楽々ERDレッスン (CodeZine BOOKS)

自分はRailsエンジニアをやっているのですが、アプリケーションを作るときに、設計面について苦手意識を感じています。
今回は、DBの設計について、いろんな人が薦めている上記の書籍を読んで、中身や感じたことについて、簡単ですがまとめてみます。

DB設計の手順

本書にはDB設計の手順は以下のように記述されていました。

  1. 大まかにブロック分けを行う(業務単位か部門単位)
  2. それぞれのブロックごとにイベント系を洗い出す(正規化しない)
  3. イベント系に対する正規化を行なって、リソース系を洗い出す
  4. リソース系に対する分類の洗い出しを行なって、リソース系の正規化を行う
  5. ブロック間でリソース系の統合を行い、さらに正規化を行う
  6. 導出系の整理をして、最終的な正規化を行う。

第3部のレッスンではもう少しカジュアルに、あとブロック外のことは省略されて以下の様な手順になっています。

  1. イベントを見出す
  2. リソースを抜き出す
  3. 項目を入れていく
  4. リレーションシップを設定する

ただし、はっきりイベントとわかるものがない場合もあるようで、そのへんは臨機応変にといったところでしょうか。

結局実務からの学びは大切

導出系を消す/残す、正規化する/しない、フラグにする/別テーブルにする等、やはり実際の業務フローやビジネスを反映することが大切そうです。
本の中でも売上伝票を例に、単価が時期によって変化する、顧客によって割引率がある、たくさん買うと値引きされる等、単純なヘッダディテール形式からどんどん複雑になっていく様を解説していました。

仕事意外でも、ふとレシートやwebサイト等を見た時に「どんなDB設計にしようか」と考えていると、いざというときに役立つかもなと思いました。

参考書、ブログ等

DB設計の書籍はあんまり多くはないのですが、下記のブログによさそうなものがまとまっていました。 normalse.hatenablog.jp

理論から学ぶデータベース実践入門もいいと思います。

その他以下も参考に。 blog.mah-lab.com blog.jnito.com

まとめ

設計がんばるぞ!