[ テーブル名 ]

最終更新: [ 更新日を記載 ]

概要

テーブル目的: [ テーブルの目的(例:会員基本情報の管理、注文履歴の記録) ]

設計方針: [ 設計の方針(例:正規化レベル、パフォーマンス重視) ]

想定レコード数: [ 想定レコード数(例:初期10万件、年間成長率20%) ]

データベース: [ 使用DB(例:PostgreSQL 13以降、MySQL 8.0以降) ]

関連集約: [ 対応するDDD集約(例:Member集約、Order集約) ]

テーブル定義

カラム名

論理名

データ型

NULL/NOT NULL

デフォルト値

説明

[ カラム名1 ]

[ 論理名1 ]

[ データ型(例:UUID, VARCHAR(255), INTEGER) ]

[ NULL/NOT NULL ]

[ デフォルト値 ]

[ カラムの説明・用途 ]

[ カラム名2 ]

[ 論理名2 ]

[ データ型 ]

[ NULL/NOT NULL ]

[ デフォルト値 ]

[ カラムの説明・用途 ]

created_at

作成日時

TIMESTAMP

NOT NULL

CURRENT_TIMESTAMP

レコード作成日時

updated_at

更新日時

TIMESTAMP

NOT NULL

CURRENT_TIMESTAMP

レコード最終更新日時

制約定義

主キー制約:

  • 制約名: pk_[ テーブル名 ]

  • 対象カラム: [ 主キーカラム名 ](例:id)

  • 説明: [ 主キーの説明 ]

外部キー制約:

制約名

カラム名

参照テーブル

参照カラム

ON DELETE

ON UPDATE

fk_[ 制約名1 ]

[ カラム名1 ]

[ 参照テーブル名 ]

[ 参照カラム名 ]

[ DELETE動作 ]

[ UPDATE動作 ]

fk_[ 制約名2 ]

[ カラム名2 ]

[ 参照テーブル名 ]

[ 参照カラム名 ]

[ DELETE動作 ]

[ UPDATE動作 ]

一意制約:

制約名

対象カラム

説明

uk_[ 制約名1 ]

[ カラム名 ](例:email)

[ 一意性の説明(例:メールアドレスの重複禁止) ]

uk_[ 制約名2 ]

[ カラム名1, カラム名2 ]

[ 複合一意制約の説明 ]

チェック制約:

制約名

条件式

説明

chk_[ 制約名1 ]

[ 条件(例:status IN ('active', 'inactive', 'suspended')) ]

[ チェック制約の説明 ]

chk_[ 制約名2 ]

[ 条件(例:created_at <= updated_at) ]

[ チェック制約の説明 ]

インデックス定義

パフォーマンス用インデックス:

インデックス名

種類

対象カラム

用途

idx_[ インデックス名1 ]

[ 種類(例:B-tree, Hash, GIN) ]

[ カラム名 ](例:email)

[ 用途(例:ログイン時の検索高速化) ]

idx_[ インデックス名2 ]

[ 種類 ]

[ カラム名1, カラム名2 ]

[ 用途(例:複合条件での検索高速化) ]

部分インデックス (該当する場合):

インデックス名

対象カラム

WHERE条件

用途

idx_[ 部分インデックス名 ]

[ カラム名 ]

[ 条件(例:status = 'active') ]

[ 用途(例:アクティブユーザーのみの検索) ]

フルテキストインデックス (該当する場合):

インデックス名

対象カラム

言語設定

用途

idx_[ フルテキストインデックス名 ]

[ カラム名 ]

[ 言語(例:japanese) ]

[ 用途(例:本文検索機能) ]

ER図

        erDiagram
    %% テンプレート例
    example_table {
        UUID id PK "主キー"
        VARCHAR name "名前"
        TEXT description "説明"
        INTEGER status "ステータス"
        TIMESTAMP created_at "作成日時"
        TIMESTAMP updated_at "更新日時"
    }

    related_table {
        UUID id PK "主キー"
        UUID example_table_id FK "関連テーブルID"
        VARCHAR value "値"
        TIMESTAMP created_at "作成日時"
        TIMESTAMP updated_at "更新日時"
    }

    example_table ||--o{ related_table : "1対多の関係"
    

初期データ・マスタデータ

必須初期データ:

[ カラム名1 ]

[ カラム名2 ]

[ カラム名3 ]

説明

[ 値1 ]

[ 値2 ]

[ 値3 ]

[ データの説明 ]

[ 値1 ]

[ 値2 ]

[ 値3 ]

[ データの説明 ]

INSERT文例:

-- [ 初期データの説明 ]
INSERT INTO [ テーブル名 ] ([ カラム1 ], [ カラム2 ], [ カラム3 ]) VALUES
('[ 値1 ]', '[ 値2 ]', '[ 値3 ]'),
('[ 値1 ]', '[ 値2 ]', '[ 値3 ]');

関連情報

関連DDD設計:

  • ../ddd/[ 関連DDD設計名 ]

関連ユースケース:

  • ../usecase/[ 関連ユースケース名 ]

データベース全体設計:

その他の関連テーブル:

  • [ 関連テーブル名1 ]

  • [ 関連テーブル名2 ]