設計

DB設計の考え方やポイントについて~超初級編~

はじめに

この記事は、僕がメンターから教わったDB設計の考え方についてまとめたものになります。

設計に取り掛かる前の大前提

リリースまでに必要となるであろう、おおよその機能についての洗い出しがしっかり終わっていること。

DB設計の考え方

  1. column を細かく洗い出すより、table 同士の relation が明確になることのほうが大切
  2. 最初からできるだけアルファベットでそのまま書く(カラム名を日本語にすると二度手間であるため)
  3. ある程度拡張性も意識して設計することが必要
  4. 正規化についての理解を深めておくこと

参考

https://qiita.com/naoqoo2/items/cdda5fe6f9935a03189d

ファーストステップ

  • 各テーブル同士の関連について、手書きで書いてみる
  • 機能の洗い出しに不安があるなら、もう一度見直す
  • テーブル同士の関係性が明確になったら、それぞれのテーブルに必要なカラムを書き出す

レベル0:テーブル同士の関係性について考える

新規ドキュメント 2018-08-03 00.52.20_1.jpg

ステップ1

まずは、各テーブルにどんなデータが保存されているかを、丸で囲って洗い出す。
(ここではカラム同士の関係性は考慮しない)

ステップ2

丸で囲んだテーブル同士に、どんな関係性があるかを考える。

ポイント

  • テーブル同士の関係性が多対多である場合、中間テーブルを作る。 (railsの場合は、特徴のない中間テーブルを作成する場合、テーブル同士の名前をスネークケースで表示する。 eg:article_tags
  • テーブル名は必ず複数形になるので、手書きの際も必ず複数形で書くように意識する