はじめに
この記事は、僕がメンターから教わったDB設計の考え方についてまとめたものになります。
設計に取り掛かる前の大前提
リリースまでに必要となるであろう、おおよその機能についての洗い出しがしっかり終わっていること。
DB設計の考え方
- column を細かく洗い出すより、table 同士の relation が明確になることのほうが大切
- 最初からできるだけアルファベットでそのまま書く(カラム名を日本語にすると二度手間であるため)
- ある程度拡張性も意識して設計することが必要
- 正規化についての理解を深めておくこと
参考
ファーストステップ
- 各テーブル同士の関連について、手書きで書いてみる
- 機能の洗い出しに不安があるなら、もう一度見直す
- テーブル同士の関係性が明確になったら、それぞれのテーブルに必要なカラムを書き出す
レベル0:テーブル同士の関係性について考える
ステップ1
まずは、各テーブルにどんなデータが保存されているかを、丸で囲って洗い出す。
(ここではカラム同士の関係性は考慮しない)
ステップ2
丸で囲んだテーブル同士に、どんな関係性があるかを考える。
ポイント
- テーブル同士の関係性が多対多である場合、中間テーブルを作る。
(railsの場合は、特徴のない中間テーブルを作成する場合、テーブル同士の名前をスネークケースで表示する。 eg:article_tags
) - テーブル名は必ず複数形になるので、手書きの際も必ず複数形で書くように意識する