データベースの命名規則

公表されている医療情報をPostgreSQLに取り込んで活用しようとしているときの覚書。
今後のためにデータベースの命名規則を考えてみた。

環境: PostgreSQL 15.6

WordPressのデータベースを参考にする。
参考: Database Description « WordPress Codex

チーム内で共有して開発しやすくすることが目的。


データベース名

  • 小文字の英単語。
    例)medical
  • 単語はアンダースコアで分ける(スネークケース)



テーブル名

イミュータブルデータモデルで設計する。
リソースとイベントに分けてテーブル設計する。
参考: イミュータブルデータモデル(入門編) | PPT

  • 接頭辞を付ける。リソースは「r_」。イベントは「e_」。
    → 直感的でないのでやめた。
    設計の考え方としてリソースとイベントに分けるがテーブル名は関係ない。
  • 小文字の英単語。
  • 単語はアンダースコアで分ける(スネークケース)。
    metaも分ける(WordPressはmetaを分けてない)
    例) hospital_meta
  • 基本は複数形。
    例)hospitals
  • カラムを追加したくなったときはmetaテーブルで十分か検討する。



カラム名

公開情報をインポートするので、可読性を優先し日本語も許容する。

PostgreSQLの識別子はデフォルトで64バイトまで。
UTF8の日本語だと16文字まで。
参考: PostgreSQL: Documentation: 16: 4.1. Lexical Structure

  • idはテーブル名を付けて分かりやすくする。
    例) hospital_id
  • 公開情報をインポートするカラムは日本語(10文字以内)。
    CREATE TBLE文にソース情報を残す。
  • システム用のカラム名は小文字の英単語。
  • 単語はアンダースコアで分ける(スネークケース)。
  • 作成日: inserted_date, 更新日: modified_dateは基本必須。
    Laravelはcareted_at, updated_atらしいが_dateの方が分かりやすい。
  • is_deletedよりdeleted_dateを使う。



共通

  • 日本人が直感的に分かるレベルの英単語を使う。
  • 命名規則を変更する際は経緯を残す。



【関連記事】