🌊

【DB設計】テーブル定義書作成

2023/07/12に公開

ER図からテーブル定義書の作成をしていきます!
ER図同様、回答にならないよう、自身が悩んだところを備忘録として残します。

ER図の解説は以下から。
https://zenn.dev/ganmo3/articles/f048886ba2009e

テーブル定義書とは

データベース内の各テーブルに関する情報をまとめたもの。テーブルの構造やカラムの定義、制約、関連性などを記載。

各要素の説明

項目 説明
主キー(PK) テーブル内の各レコードを識別するための特別なカラム。テーブル作成時に自動的に生成されるid。
外部キー(FK) 別のテーブルとの関連性を表すためのカラム。他のテーブルの値を参照する。
データ型 データの種類を指定し、そのカラムに格納できるデータの形式を制限する。
NOT NULL カラムに空の値(NULL)を許可しない制約。必ず値が入る必要がある。
AUTO INCREMENT 指定したカラムに自動的に連番を割り当てる機能。新しいレコードが追加されるたびに値が自動的に増加する。
INDEX 特定のカラムに索引を作成し、データの検索処理を高速化する。
DEFAULT カラムの初期値を設定する機能。レコードが追加される際に値が指定されていない場合、デフォルト値が設定される。

データ型の種類

以下に、一般的なデータ型の種類と具体例を表にまとめました。

データ型 種類 備考
integer 数値(整数)
decimal 数値(精度の高い小数)
float 数値(浮動小数)
string 文字(短い文字列) 255文字まで
text 文字(長い文字列)
date 日付
datetime 日時
time 時刻
timestamp タイムスタンプ
binary バイナリ
boolean 真偽 true, false

ECサイトのテーブル定義書作成

会員(customers)

  • 郵便番号や電話番号は「integer」でなく「string」を使用。
    理由:郵便番号や電話番号は先頭に「0(ゼロ)」を使う場合がある。数値として格納すると、先頭のゼロが消えてしまう。(Excel等に打ち込んでみると0が消える)

  • boolean(真偽値)の使い方
    boolean型は、ある条件が成立するかどうか、特定のステータスを表すのに便利。
    「is_」をカラム名の頭につけることで、条件が成立しているかどうかを表す真偽値であることがわかる。例えば、「is_active」(意味:有効である?)など。
    今回はdefaultをfalseにすることで、初期値を「会員」とする。

商品(items)

販売ステータスはboolean型にする。defaultをtrueにし、初期値を「販売中」とする。

注文(orders)

enumとは
enumは、データベースのカラムに対して、あらかじめ定義した値を持たせるための機能。
選択肢を作り、その選択肢から選ぶことができる。
enumだけではviewページにテキスト表示できないので注意
例:

enum status: { active: 0, inactive: 1, pending: 2 }

例えば上記の定義をした場合、データベースに保存されるのは0、1、2の数値で、viewページにも数値が表示される。テキストで表示するためには「enum_help」というGemを使えば、簡単にViewで扱える。


ひとりで作ってみたものなので、実際にチームで作成したものと違いますが参考までに。
チームで作成したもののほうがみんなの意見が集まりよりよいものになりました☆

Discussion