# 論理データモデル
## テーブル一覧
| No | エンティティ名 | 論理名 | ドメイン | 概要 |
|----|--------------|--------|---------|------|
| 1 | Member | 会員 | 会員管理 | システム利用者の会員情報 |
| 2 | MemberStatus | 会員ステータス | 会員管理 | 会員ランク(BRONZE/SILVER/GOLD/PLATINUM) |
| 3 | Order | 注文 | 注文管理 | 会員が行った注文の基本情報 |
| 4 | OrderItem | 注文明細 | 注文管理 | 注文に含まれる商品と数量 |
| 5 | Product | 商品 | 商品管理 | 販売商品のマスタ情報 |
| 6 | Category | カテゴリ | 商品管理 | 商品分類カテゴリ |
| 7 | Inventory | 在庫 | 商品管理 | 商品の在庫数と状態 |
| 8 | Payment | 決済 | 注文管理 | 注文に対する決済情報 |
---
## テーブル定義
### Member(会員)
| 項目 | 内容 |
|------|------|
| **エンティティ名** | Member |
| **論理名** | 会員 |
| **主キー** | member_id |
| **一意性の意味** | システム内で会員を一意に識別する。会員登録時に自動採番される。 |
| **レコード粒度** | 最新のみ。過去のステータス変更は別テーブル(MemberStatusHistory)で管理。 |
### Order(注文)
| 項目 | 内容 |
|------|------|
| **エンティティ名** | Order |
| **論理名** | 注文 |
| **主キー** | order_id |
| **一意性の意味** | 会員が行った各注文を一意に識別する。注文作成時に自動採番される。 |
| **レコード粒度** | 最新のみ。注文ステータスの変更履歴は別途管理可能。 |
---
### 属性定義(論理設計レベル)
#### Member(会員)属性定義
| 属性名 | 論理名 | データ型(論理) | 桁数・制限 | 必須 | 業務ルール |
|--------|--------|----------------|-----------|------|----------|
| member_id | 会員ID | 文字列 | 20文字 | ○ | システム採番、変更不可 |
| email | メールアドレス | 文字列 | 255文字 | ○ | 一意制約、RFC5322準拠 |
| name | 氏名 | 文字列 | 100文字 | ○ | - |
| member_status | 会員ステータス | 列挙型 | BRONZE/SILVER/GOLD/PLATINUM | ○ | 累計購入金額で自動更新 |
| registered_at | 登録日時 | 日時 | - | ○ | 登録時の現在日時を設定 |
| status_updated_at | ステータス更新日時 | 日時 | - | - | ステータス変更時に更新 |
#### Order(注文)属性定義
| 属性名 | 論理名 | データ型(論理) | 桁数・制限 | 必須 | 業務ルール |
|--------|--------|----------------|-----------|------|----------|
| order_id | 注文ID | 文字列 | 20文字 | ○ | システム採番、変更不可 |
| member_id | 会員ID | 文字列 | 20文字 | ○ | 外部キー(Member) |
| order_date | 注文日時 | 日時 | - | ○ | 注文確定時の現在日時 |
| total_amount | 合計金額 | 数値 | 整数部8桁、小数部2桁 | ○ | 0以上、OrderItemの合計と一致 |
| order_status | 注文ステータス | 列挙型 | PENDING/CONFIRMED/SHIPPED/DELIVERED/CANCELLED | ○ | ステータス遷移ルールあり |
---
### 論理ER図
```mermaid
erDiagram
Member ||--o{ Order : "1:N"
Member ||--o{ MemberStatusHistory : "1:N"
Order ||--|{ OrderItem : "1:N"
Order ||--|| Payment : "1:1"
OrderItem }o--|| Product : "N:1"
Product }o--|| Category : "N:1"
Product ||--|| Inventory : "1:1"
Member {
string member_id PK
string email UK
string name
enum member_status
datetime registered_at
datetime status_updated_at
}
Order {
string order_id PK
string member_id FK
datetime order_date
decimal total_amount
enum order_status
}
OrderItem {
string order_item_id PK
string order_id FK
string product_id FK
int quantity
decimal unit_price
}
Product {
string product_id PK
string category_id FK
string product_name
decimal price
}
```
---
### 整合性ルール
- 外部キーは参照先エンティティに必ず存在すること
- 注文の合計金額は注文明細の小計合計と一致すること
- 注文確定時、在庫数量は注文数量以上であること
- 決済金額は注文の合計金額と一致すること
---