[ テーブル名 ] ============================================ **最終更新**: [ 更新日を記載 ] .. contents:: 目次 :depth: 2 :local: 概要 -------------------------------------------- **テーブル目的**: [ テーブルの目的(例:会員基本情報の管理、注文履歴の記録) ] **設計方針**: [ 設計の方針(例:正規化レベル、パフォーマンス重視) ] **想定レコード数**: [ 想定レコード数(例:初期10万件、年間成長率20%) ] **データベース**: [ 使用DB(例:PostgreSQL 13以降、MySQL 8.0以降) ] **関連集約**: [ 対応するDDD集約(例:Member集約、Order集約) ] テーブル定義 -------------------------------------------- .. list-table:: :header-rows: 1 * - カラム名 - 論理名 - データ型 - 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) - **説明**: [ 主キーの説明 ] **外部キー制約**: .. list-table:: :header-rows: 1 * - 制約名 - カラム名 - 参照テーブル - 参照カラム - ON DELETE - ON UPDATE * - fk_[ 制約名1 ] - [ カラム名1 ] - [ 参照テーブル名 ] - [ 参照カラム名 ] - [ DELETE動作 ] - [ UPDATE動作 ] * - fk_[ 制約名2 ] - [ カラム名2 ] - [ 参照テーブル名 ] - [ 参照カラム名 ] - [ DELETE動作 ] - [ UPDATE動作 ] **一意制約**: .. list-table:: :header-rows: 1 * - 制約名 - 対象カラム - 説明 * - uk_[ 制約名1 ] - [ カラム名 ](例:email) - [ 一意性の説明(例:メールアドレスの重複禁止) ] * - uk_[ 制約名2 ] - [ カラム名1, カラム名2 ] - [ 複合一意制約の説明 ] **チェック制約**: .. list-table:: :header-rows: 1 * - 制約名 - 条件式 - 説明 * - chk_[ 制約名1 ] - [ 条件(例:status IN ('active', 'inactive', 'suspended')) ] - [ チェック制約の説明 ] * - chk_[ 制約名2 ] - [ 条件(例:created_at <= updated_at) ] - [ チェック制約の説明 ] インデックス定義 -------------------------------------------- **パフォーマンス用インデックス**: .. list-table:: :header-rows: 1 * - インデックス名 - 種類 - 対象カラム - 用途 * - idx_[ インデックス名1 ] - [ 種類(例:B-tree, Hash, GIN) ] - [ カラム名 ](例:email) - [ 用途(例:ログイン時の検索高速化) ] * - idx_[ インデックス名2 ] - [ 種類 ] - [ カラム名1, カラム名2 ] - [ 用途(例:複合条件での検索高速化) ] **部分インデックス** (該当する場合): .. list-table:: :header-rows: 1 * - インデックス名 - 対象カラム - WHERE条件 - 用途 * - idx_[ 部分インデックス名 ] - [ カラム名 ] - [ 条件(例:status = 'active') ] - [ 用途(例:アクティブユーザーのみの検索) ] **フルテキストインデックス** (該当する場合): .. list-table:: :header-rows: 1 * - インデックス名 - 対象カラム - 言語設定 - 用途 * - idx_[ フルテキストインデックス名 ] - [ カラム名 ] - [ 言語(例:japanese) ] - [ 用途(例:本文検索機能) ] ER図 -------------------------------------------- .. mermaid:: 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対多の関係" 初期データ・マスタデータ -------------------------------------------- **必須初期データ**: .. list-table:: :header-rows: 1 * - [ カラム名1 ] - [ カラム名2 ] - [ カラム名3 ] - 説明 * - [ 値1 ] - [ 値2 ] - [ 値3 ] - [ データの説明 ] * - [ 値1 ] - [ 値2 ] - [ 値3 ] - [ データの説明 ] **INSERT文例**: .. code-block:: sql -- [ 初期データの説明 ] INSERT INTO [ テーブル名 ] ([ カラム1 ], [ カラム2 ], [ カラム3 ]) VALUES ('[ 値1 ]', '[ 値2 ]', '[ 値3 ]'), ('[ 値1 ]', '[ 値2 ]', '[ 値3 ]'); 関連情報 -------------------------------------------- **関連DDD設計**: - :doc:`../ddd/[ 関連DDD設計名 ]` **関連ユースケース**: - :doc:`../usecase/[ 関連ユースケース名 ]` **データベース全体設計**: - :doc:`er`: データベース全体ER図 **その他の関連テーブル**: - :doc:`[ 関連テーブル名1 ]` - :doc:`[ 関連テーブル名2 ]`