コンテンツにスキップ

DB設計用のドキュメント@AI用ドキュメント

DB設計のドキュメント

DB全体

記入中...


DBテーブル

このドキュメントはDBテーブルの設計を考えるためのドキュメントであり、生成AIに読み込ませることを想定している。

  1. 検証対象の実装を読み込む。
  2. 次のDBテーブルのプラクティスを読み込む。
  3. 次の観点でDBテーブルを追加/改善する。
  • 次のようにテーブル構造を整理して
物理名 論理名 プライマリー/ユニークキー NOT NULL制約 デフォルト値 説明 値の例
foo_id 〇〇ID VARCHAR(15) プライマリキー 禁止 N/A 〇〇に関するID 123456789
foo_name 〇〇名 VARCHAR(15) N/A 禁止 N/A 〇〇に関する名前 hiroki.hasegawa
... ... ... ... ... ... ... ...
created_at 作成日時 DATETIME(3) N/A 禁止 CURRENT_TIMESTAMP(3) UTCのタイムスタンプ 2025-01-01 12:34:00.000
updated_at 更新日時 DATETIME(3) N/A 禁止 CURRENT_TIMESTAMP(3) UTCのタイムスタンプ 2025-01-01 12:34:05.250
  • カラム
    • ドメイン上意味付けする必要があるものをカラムにできているか
    • ドメイン上意味付けする必要がないもの(単なる集計結果や複合データ)をカラムにしていないか
  • リレーション
    • リレーションが重複しており、過剰でないか
  • 複合プライマリーキー
    • バッチ処理では重複防止のために複合プライマリーを使用する
  • 複合インデックス
    • SQLで=の等価指定のあるカラムを前におき、次にIN句で複数の等価指定、最後にBETWEENで範囲指定のあるカラムを後に置く。
    • カーディナリティが低いほど、B-Treeインデックスの検索グループが増えるためDBが処理しないといけないレコード数が増えてしまう。そこで、等価条件が複数ある場合、カーディナリティの高いカラムをより前におく。