[章番号]: データモデル設計書
このテンプレートの使い方
このファイルは、システムで扱うデータの構造や、データベースのスキーマなどを定義するためのテンプレートです。 詳しい使い方は「設計仕様の書き方ガイド」を参照してください。
1. はじめに
1.1. 目的
2. ER図 (エンティティ関連図)
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ LINE-ITEM : contains
CUSTOMER }|..|{ DELIVERY-ADDRESS : uses
CUSTOMER {
int id PK
string name
string email
}
ORDER {
int id PK
int customer_id FK
datetime order_date
}
LINE-ITEM {
int id PK
int order_id FK
int product_id
int quantity
}
3. コアデータ構造 (ドメインモデル)
3.1. User
- 概要: ユーザーを表すドメインエンティティ。
- 定義:
public record User
{
public required UserId Id { get; init; }
public required string Name { get; init; }
public required EmailAddress Email { get; init; }
public DateTime CreatedAt { get; }
}
4. テーブル定義
4.1. users テーブル
- 概要: ユーザー情報を格納するテーブル。
| カラム名 | データ型 | PK/FK | NULL許容 | デフォルト値 | 説明 |
|---|---|---|---|---|---|
id |
VARCHAR(255) |
PK | No | ユーザーの一意なID。 | |
name |
VARCHAR(255) |
No | ユーザー名。 | ||
email |
VARCHAR(255) |
No | メールアドレス。UNIQUE制約を付与。 | ||
created_at |
TIMESTAMPZ |
No | NOW() |
作成日時。 | |
updated_at |
TIMESTAMPZ |
No | NOW() |
更新日時。 |
4.2. posts テーブル
- 概要: 投稿情報を格納するテーブル。
| カラム名 | データ型 | PK/FK | NULL許容 | デフォルト値 | 説明 |
|---|---|---|---|---|---|
id |
BIGSERIAL |
PK | No | 投稿ID。自動インクリメント。 | |
user_id |
VARCHAR(255) |
FK (users.id) |
No | 投稿者のユーザーID。 | |
title |
VARCHAR(255) |
No | 投稿のタイトル。 | ||
content |
TEXT |
Yes | 投稿の本文。 | ||
created_at |
TIMESTAMPZ |
No | NOW() |
作成日時。 |
5. インデックス設計
usersテーブル:users_email_key:emailカラムに対するUNIQUEインデックス。
postsテーブル:posts_user_id_idx:user_idカラムに対する通常のB-Treeインデックス。
6. データ辞書
posts.statusカラム:draft: 下書きpublished: 公開済みarchived: アーカイブ済み