# テーブル定義書（{{PROJECT_NAME}}）

**目的**: DBの“契約”を明文化し、実装・レビュー・移行でブレないようにする。
**作成/更新タイミング**: `/design` の中盤〜終盤（ERDのエンティティが固まったら）。詳細は `.cursor/templates/artifacts/artifacts_rules.md`。

---

## テーブル一覧

| テーブル物理名 | テーブル論理名 | 概要 | 種別 |
| -------------- | -------------- | ---- | ---- |
| (例) m_user | ユーザー | ユーザー情報 | マスタ |

---

## 共通カラム定義

> ここはプロジェクト標準を定義して、各テーブルの繰り返しを減らす。

| カラム名 | 論理名 | 型 | 制約 | デフォルト値 | 説明 |
| ------ | ------ | -- | ---- | ---------- | ---- |
| id | ID | bigint | PK | | |
| created_at | 作成日時 | timestamptz | NOT NULL | CURRENT_TIMESTAMP | |
| created_by | 作成者 | text | NULL | | |
| created_program | 作成プログラム | varchar(255) | NOT NULL | | |
| updated_at | 更新日時 | timestamptz | NOT NULL | CURRENT_TIMESTAMP | |
| updated_by | 更新者 | text | NULL | | |
| updated_program | 更新プログラム | varchar(255) | NOT NULL | | |
| patched_at | パッチ更新日時 | timestamptz | NULL | | |
| patched_by | パッチ更新者 | text | NULL | | |
| lock_no | ロック番号 | bigint | NOT NULL | 0 | 楽観ロック |

**論理削除カラム（必要なテーブルのみ）**

| カラム名 | 論理名 | 型 | 制約 | デフォルト値 | 説明 |
| ------- | ------ | -- | ---- | ---------- | ---- |
| deleted_at | 削除日時 | timestamptz | NULL | | NULL=有効 |

---

## テーブル詳細定義

### （例）ユーザー（m_user）

**概要**: 

#### テーブル定義

| カラム名 | 論理名 | 型 | 制約 | デフォルト値 | 説明 |
| ------ | ------ | -- | ---- | ---------- | ---- |
| id | ID | bigint | PK | | |

**インデックス**

| インデックス名 | カラム | 種別 | 備考 |
| ------------ | ------ | ---- | ---- |

**外部キー制約**

| FK 名 | 参照元カラム | 参照先テーブル | 参照先カラム | ON DELETE | ON UPDATE |
| ----- | ---------- | -------------- | ------------ | -------- | -------- |

#### データ編集仕様

| カラム名 | [操作 1：作成] | [操作 2：更新] | [操作 3：無効化/削除] |
| ------- | ------------- | ------------- | --------------------- |

#### RLS ポリシー（任意）

```sql
-- 採用する場合のみ方針を書く
```

---

## 変更履歴

| 日付 | バージョン | 変更者 | 変更内容 |
| ---- | ---------- | ------ | -------- |
| {{DATE}} | v1.0 | {{AUTHOR}} | 初版作成 |
