はじめに
fjordbootcampの「データベースの基本を理解する」のプラクティスで課題となっていた、羽生 章洋 著『楽々ERDレッスン』を読了しました。 本書を通じて学んだことを書いていきたいと思います。
要約
データベース設計は
- 設計が終わらないとプログラムの設計が確定できない
- 一度リリースしてしまうと、気軽に変更できない
- 自分の実力がボトルネックになりやすい
などの理由から、とても気を使う作業です。
また、データベース設計をおざなりにしてしまうとパフォーマンスの低下を招いたり、運用コストがかかってしまったりという問題が発生してしまいます。
データベース設計で重要なことは正規化です。正規化とは、「一つの事実は一つの場所に存在している」というデータベースの基本的な原則を実現するための作業ですが、大きく分けて以下の3つに重要なことが集約されます。
- エンティティを見出すこと
- 主キーの設定
- 重複部分の排除(これがいわゆる正規化)
エンティティは、まずイベント系を見出すことから始めます。
その次にリソース系を見出します。イベント系の見出し方として、「〇〇日」というように「時」を指定することができるものを探すということが挙げられます。また、リソース系は「誰に」「誰が」「何を」「どこで」などに当たる部分と考えられます。
このようにして、エンティティを見出し、正規化を進めていきますが、重要なことは業務上のルールに沿った使い勝手の良いデータベースを設計することです。そのためにも設計者は業務についてある程度把握しておくことが必要です。
感想
実務を想定した課題が設定されており、分かりやすかった
本書は伝票やレシートなどからER図を作っていくという課題が設定されています。それを通じて、データベース設計のいろはを学んでいくのですが、分かりやすかったです(自分1人では難しいものもありましたが)。 データベースの設計の基本は、エンティティを見出す、項目を埋めていく、リレーションを考える、であるという一連の流れが少し身についたと感じます。この基本を忘れずに応用していきたいです。
ビジネスルールに沿ったデータベースを設計することが大事だと学んだ
データベース設計はサービス作りの根幹を担うものだと感じました。一度設計したら中々変えられない、大半のプログラムに影響を与えるなど、その責任は重大なものだと想像します。そのため、データベース設計には様々な人の意見を聞き、ビジネスルールを把握した上でそれに沿った形で行われなければならないと強く考えました。
そのためにも、自分の設計経験を積み上げる以外にも、日頃から、同じプロジェクトに携わる人たとと積極的にコミュニケーションをはかっていくことが必要なのだろうと考えました🤔
最後に
このプラクティスの仕上げとして、TwitterのER図を作成するというものがあります。伝票系のER図を書くのは慣れたものの、SNSのデータベースをどう設計するかについては、まだピンときていない部分も多いのですが、試行錯誤しながら取り組んでいきたいと思います🔥