### テーブル名: （M16-ENTITY-01）ユーザーマスタ
- **テーブル物理名**: `m_passenger`
- **テーブル説明**: サービス利用者の情報を格納するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| ユーザーID | `passenger_id` | PK | VARCHAR | ○ | | ユーザーの一意な識別子 |
| 名 | `first_name` | | VARCHAR | | | ユーザーの氏名の名 |
| 姓 | `last_name` | | VARCHAR | | | ユーザーの氏名の姓 |
| 名(フリガナ) | `first_name_kana` | | VARCHAR | | | ユーザーの氏名の名のフリガナ |
| 姓(フリガナ) | `last_name_kana` | | VARCHAR | | | ユーザーの氏名の姓のフリガナ |
| 性別 | `gender` | | VARCHAR | | | ユーザーの性別<br>区分値: `male`, `female`, `other`, `unspecified` |
| 生年月日 | `birthdate` | | DATE | | | ユーザーの生年月日<br>形式はRFC3339のfull-date形式文字列 |
| 電話番号 | `phone_number` | | VARCHAR | | | ユーザーの電話番号（国際電話番号形式）<br>先頭に国コード（例：+81）を含める |
| メールアドレス | `email` | | VARCHAR | | | ユーザーのメールアドレス |
| 自宅郵便番号 | `home_address_postal_code` | | VARCHAR | | | ユーザーの自宅の郵便番号<br>（ハイフンを含まない） |
| 自宅都道府県 | `home_address_state` | | VARCHAR | | | ユーザーの自宅の都道府県名 |
| 自宅市区町村 | `home_address_city` | | VARCHAR | | | ユーザーの自宅の市区町村名 |
| 自宅番地 | `home_address_street` | | VARCHAR | | | ユーザーの自宅の丁目・番地などの住所の詳細部分 |
| 自宅位置 | `home_address_location` | | GEOMETRY | | | ユーザーの自宅位置を示す地理座標のGeoJSONにおけるジオメトリタイプ（常に Point）と経度・緯度を含む配列[longitude, latitude] の順で格納（GeoJSON仕様準拠） |

---

### テーブル名: （M16-ENTITY-02）サービスマスタ
- **テーブル物理名**: `m_service`
- **テーブル説明**: オンデマンドバスのサービス情報を格納するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| サービスID | `service_id` | PK | VARCHAR | ○ | | サービスの一意な識別子 |
| 名称 | `name` | | VARCHAR | ○ | | サービスの名称 |
| 説明 | `description` | | VARCHAR | | | サービスの説明 |
| ブランドイメージURL | `brand_image_url` | | VARCHAR | | | ブランドイメージ画像のURL |
| 公開範囲 | `access_scope` | | VARCHAR | | | サービスの公開範囲 |
| 運行方式 | `operation_type` | | VARCHAR | ○ | | サービスの運行方式<br>区分値: `on_demand`, `slot_area_batch_confirmed`, `fixed_time_fixed_route` |
| 相乗り許可フラグ | `allow_ridepooling` | | BOOLEAN | | | 相乗りを許可するかどうか |
| サービス開始日時 | `start_datetime` | | TIMESTAMP WITH TIME ZONE | ○ | | サービスの提供開始日時<br>形式はRFC3339のdate-time形式文字列<br>（例：2025-06-19T07:00:00+09:00） |
| サービス終了日時 | `end_datetime` | | TIMESTAMP WITH TIME ZONE | | | サービスの提供終了日時<br>形式はRFC3339のdate-time形式文字列<br>（例：2025-06-19T07:00:00+09:00）<br>サービスの提供終了日時未設定の場合は無期限 |
| サービスグループID | `service_group_id` | FK | VARCHAR | | | サービスの上位グループ識別子 |
| 出発時刻指定可能フラグ | `time_specifiable_departure` | | BOOLEAN | ○ | | 出発時刻の指定を許可するかどうか |
| 到着時刻指定可能フラグ | `time_specifiable_arrival` | | BOOLEAN | ○ | | 到着時刻の指定を許可するかどうか |
| 最大予約可能日数 | `max_advance_reservable_days` | | INTEGER | ○ | | 予約便候補検索時に指定できる最大予約可能日数 |
| 最短予約分数 | `min_advance_reservable_minutes` | | INTEGER | ○ | | 出発希望時刻に設定できる最も早い時間を現在時刻からのオフセット（分単位） |
| キャンセル期限分 | `cancel_deadline_minutes` | | INTEGER | ○ | | 予約便のキャンセルが可能な最終時刻を、出発予定時刻からのオフセット（分単位） |
| 最大検索乗客数 | `search_passenger_limit` | | INTEGER | ○ | | 予約便候補検索時に指定できる最大乗客数 |
| 最大検索補助機能数 | `search_accessibility_limit` | | INTEGER | ○ | | 予約便候補検索時に指定できる最大の乗客補助機能数 |
| 固定地点予約可能フラグ | `fixed_stop_reservable` | | BOOLEAN | ○ | | 固定された地点からの予約可能かどうか |
| 自宅地点予約可能フラグ | `home_reservable` | | BOOLEAN | ○ | | 自宅からの予約可能かどうか |
| 任意地点予約可能フラグ | `custom_location_reservable` | | BOOLEAN | ○ | | ユーザーが指定する任意の地点からの予約が可能かどうか|

---

### テーブル名: （M16-ENTITY-03）サービス提供地域マスタ
- **テーブル物理名**: `m_service_location`
- **テーブル説明**: サービスがどの都道府県・市区町村で提供されているかの関連を管理する中間テーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| サービスID | `service_id` | PK, FK | VARCHAR | ○ | | m_service.service_id を参照 |
| 都道府県コード | `prefecture_code` | PK, FK | VARCHAR | ○ | | 都道府県コード |
| 市区町村コード | `municipality_code` | PK, FK | VARCHAR |  ○| | 市区町村コード |

---

### テーブル名: （M16-ENTITY-04）都道府県マスタ
- **テーブル物理名**: `m_prefecture`
- **テーブル説明**: 都道府県のマスターテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 都道府県コード | `prefecture_code` | PK | VARCHAR | ○ | | 都道府県コード |
| 都道府県名 | `prefecture_name` | | VARCHAR |  ○| | 都道府県名 |

---

### テーブル名: （M16-ENTITY-05）市区町村マスタ
- **テーブル物理名**: `m_municipality`
- **テーブル説明**: 市区町村のマスターテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 市区町村コード | `municipality_code` | PK | VARCHAR |  ○| | 市区町村コード |
| 市区町村コード | `municipality_name` |  | VARCHAR |  ○| | 市区町村名 |

---

### テーブル名: （M16-ENTITY-06）サービス運行時間帯マスタ
- **テーブル物理名**: `m_service_operating_hour`
- **テーブル説明**: サービスの通常運行時間帯を管理するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| サービスID | `service_id` | PK, FK | VARCHAR | ○ | | m_service.service_id を参照 |
| 曜日 | `day_of_week` | PK | VARCHAR |  | | 通常運行日<br> (例: 1=月, ..., 7=日, 8=祝日) |
| 開始時刻 | `start_time_offset_sec` | PK | INTEGER | ○ | | 運行開始時刻の当日00:00からのオフセット（秒単位） |
| 終了時刻 | `end_time_offset_sec` | | INTEGER | ○ | | 運行終了時刻の当日00:00からのオフセット（秒単位） |

---

### テーブル名: （M16-ENTITY-07）サービス特別運行時間帯マスタ
- **テーブル物理名**: `m_service_special_operating_hour`
- **テーブル説明**: サービスの特別運行時間帯を管理するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| サービスID | `service_id` | PK, FK | VARCHAR | ○ | | m_service.service_id を参照 |
| 特定日 | `specific_date` | PK | DATE |  | | 特別運行日を指定 |
| 開始時刻 | `start_time_offset_sec` | PK | INTEGER | ○ | | 運行開始時刻の当日00:00からのオフセット（秒単位） |
| 終了時刻 | `end_time_offset_sec` | | INTEGER | ○ | | 運行終了時刻の当日00:00からのオフセット（秒単位） |

---

### テーブル名: （M16-ENTITY-08）サービスお知らせマスタ
- **テーブル物理名**: `m_service_announcement`
- **テーブル説明**: 各サービスに関連するお知らせ情報を管理するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| お知らせID | `announcement_id` | PK | VARCHAR | ○ | | お知らせの一意な識別子 |
| サービスID | `service_id` | FK | VARCHAR | ○ | | m_service.service_id を参照 |
| タイトル | `title` |  | VARCHAR | ○ | | お知らせのタイトル|
| 内容 | `content` | | TEXT | ○ | | お知らせの内容 |
| お知らせ開始日時 | `start_datetime` | | TIMESTAMP WITH TIME ZONE | ○| | お知らせの開始日時<br>形式はRFC3339のdate-time形式文字列<br>（例：2025-06-19T07:00:00+09:00） |
| お知らせ終了日時 | `end_datetime` | | TIMESTAMP WITH TIME ZONE | ○| | お知らせの終了日時<br>形式はRFC3339のdate-time形式文字列<br>（例：2025-06-19T07:00:00+09:00）|

---

### テーブル名: （M16-ENTITY-09）運行エリアマスタ
- **テーブル物理名**: `m_reservable_area`
- **テーブル説明**: 予約可能な運行エリアの地理情報を管理するマスタテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| エリアID | `reservable_area_id` | PK | VARCHAR | ○ | | 運行エリアの識別子 |
| エリア名称 | `name` |  | VARCHAR |  | | 運行エリアの名称 |
| エリア説明 | `description` |  | VARCHAR |  | | 運行エリアの説明|
| エリア範囲 | `range` | | JSONB | ○ | | GeoJSON形式のうち、 FeatureCollection → Feature → Polygon の構成のみをサポート |

---

### テーブル名: （M16-ENTITY-10）サービス運行エリアマスタ
- **テーブル物理名**: `m_service_reservable_area`
- **テーブル説明**: サービスと予約可能エリアの関連を管理する中間テーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| サービスID | `service_id` | PK, FK | VARCHAR | ○ | | m_service.service_id を参照 |
| エリアID | `reservable_area_id` | PK, FK | VARCHAR | ○ | | m_reservable_area.reservable_area_id を参照　|

---

### テーブル名: （M16-ENTITY-11）制御エリアマスタ
- **テーブル物理名**: `m_transition_area`
- **テーブル説明**: サービス内の移動ルールを定義するための制御エリア情報を管理するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 制御エリアID | `transition_area_id` | PK | VARCHAR | ○ | | 制御エリアの識別子　|
| サービスID | `service_id` | FK | VARCHAR | ○ | | m_service.service_id を参照 |
| エリア名称 | `name` |  | VARCHAR |  | | 制御エリアの名称 |
| エリア説明 | `description` |  | VARCHAR |  | | 制御エリアの説明|
| エリア範囲 | `range` | | JSONB | ○ | | GeoJSON形式のうち、 FeatureCollection → Feature → Polygon の構成のみをサポート |

---

### テーブル名: （M16-ENTITY-12）移動ルールマスタ
- **テーブル物理名**: `m_transition_rule`
- **テーブル説明**: 制御エリア間の移動可否ルールを管理するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| サービスID | `service_id` | PK, FK | VARCHAR | ○ | | m_service.service_id を参照 |
| 出発エリアID | `from_area_id` | PK, FK | VARCHAR | ○ | | 出発エリアのID<br>m_transition_area.transition_area_id を参照　|
| 到着エリアID | `to_area_id` | PK, FK | VARCHAR | ○ | | 到着エリアのID<br>m_transition_area.transition_area_id を参照　|
| 移動可能フラグ | `is_allowed` | | BOOLEAN | ○ | | 制御エリア間の移動が可能かどうか |

---

### テーブル名: （M16-ENTITY-13）予約トラン
- **テーブル物理名**: `t_reservation`
- **テーブル説明**: ユーザーからの予約情報を管理するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 予約ID | `reservation_id` | PK | VARCHAR | ○ | | 予約の一意な識別子 |
| ユーザーID | `passenger_id` | FK | VARCHAR | ○ | | 予約したユーザーのID |
| サービスID | `service_id` | FK | VARCHAR | ○ | | 予約が属するサービスのID |
| 車両ID | `vehicle_id` | FK | VARCHAR | | | m_vehicle.vehicle_id を参照 |
| 予約ステータス | `status` | | VARCHAR | ○ | | 予約の状態<br>区分値: `tentative`, `confirmed`, `in_transit`, `completed`, `no_show`, `cancelled` |
| 運賃合計 | `fare_total` | | INTEGER | ○ | | 運賃の合計（円） |
| 推定移動距離 | `route_distance` | | INTEGER | ○ | | ルートの推定距離（メートル） |
| 乗車場所種類 | `pickup_type` |  | VARCHAR | | |  場所種類<br>区分値: `fixed_stop`, `home`, `custom_location` |
| 降車場所種類 | `dropoff_type` |  | VARCHAR | | |  場所種類<br>区分値: `fixed_stop`, `home`, `custom_location` |
| 乗車場所ID | `pickup_stop_id` |  | VARCHAR | | |  m_stop.stop_id を参照<br>pickup_typeが'fixed_stop'の場合に利用 |
| 降車場所ID | `dropoff_stop_id` |  | VARCHAR | | |  m_stop.stop_id を参照<br>pickup_typeが'fixed_stop'の場合に利用  |
| 乗車場所表示名 | `pickup_display_name` |  | VARCHAR | | |  乗車場所の表示名 |
| 降車場所表示名 | `dropoff_display_name` |  | VARCHAR | | |  降車場所の表示名  |
| 乗車場所位置 | `pickup_location` |  | GEOMETRY | | |  乗降場所を示す地理座標のGeoJSONにおけるジオメトリタイプ（常に Point）と経度・緯度を含む配列[longitude, latitude] の順で格納（GeoJSON仕様準拠） |
| 降車場所位置 | `dropoff_location` |  | GEOMETRY | | |  降車場所を示す地理座標のGeoJSONにおけるジオメトリタイプ（常に Point）と経度・緯度を含む配列[longitude, latitude] の順で格納（GeoJSON仕様準拠） |
| 乗車日時 | `pickup_datetime` | | TIMESTAMP WITH TIME ZONE | ○| | お知らせの開始日時<br>形式はRFC3339のdate-time形式文字列<br>（例：2025-06-19T07:00:00+09:00） |
| 降車日時 | `dropoff_datetime` | | TIMESTAMP WITH TIME ZONE | ○| | お知らせの終了日時<br>形式はRFC3339のdate-time形式文字列<br>（例：2025-06-19T07:00:00+09:00）|
| キャンセル理由 | `cancellation_reason` | | VARCHAR | | | キャンセル理由 |
| キャンセル日時 | `cancelled_at` | | TIMESTAMP WITH TIME ZONE | | | キャンセル日時 |

---

### テーブル名: （M16-ENTITY-14）決済トラン
- **テーブル物理名**: `t_payment`
- **テーブル説明**: 予約に紐づく決済情報を格納するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 決済ID | `payment_id` | PK | VARCHAR | ○ | | 決済の一意な識別子 |
| 予約ID | `reservation_id` | UK, FK | VARCHAR | ○ | | m_reservation.reservation_id を参照<br>予約テーブルへの外部キー1対1の関係 |
| 決済ステータス | `payment_status` | | VARCHAR | ○ | | 予約の状態<br>区分値: `uncollected`, `received`, `excluded`, `cancelled` |
| 決済金額 | `amount` | | INTEGER | ○ | | 決済金額（円） |

---

### テーブル名: （M16-ENTITY-15）車両マスタ
- **テーブル物理名**: `m_vehicle`
- **テーブル説明**: 運行に使用される車両の情報を管理するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 車両ID | `vehicle_id` | PK | VARCHAR | ○ | | 車両の一意な識別子 |
| サービスID | `service_id` | FK | VARCHAR | ○ | | m_service.service_id を参照 |
| 名称 | `name` |  | VARCHAR | ○ | | 車両の名称 |
| 車両ステータス | `status` | | VARCHAR | ○ | | 車車両の現在の状態<br>区分値: `active`, `archived` |
| ナンバープレート | `number_plate` |  | VARCHAR |  | | 車両のナンバープレート番号 |
| 座席数 | `seats` |  | INTEGER |  | | 車両の最大座席数 |

---

### テーブル名: （M16-ENTITY-16）乗降場所マスタ
- **テーブル物理名**: `m_stop`
- **テーブル説明**: 固定の乗降場所（バス停など）の情報を管理するマスターテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 乗降場所ID | `stop_id` | PK | VARCHAR | ○ | | 乗降場所の一意な識別子 |
| 名称 | `name` | | VARCHAR | ○ | | 乗降場所の名称 |
| 説明 | `description` | | VARCHAR | | | 乗降場所の説明 |
| 乗降場所位置 | `location` |  | GEOMETRY | | |  乗降場所を示す地理座標のGeoJSONにおけるジオメトリタイプ（常に Point）と経度・緯度を含む配列[longitude, latitude] の順で格納（GeoJSON仕様準拠） |
| 利用開始日時 | `start_datetime` |  | TIMESTAMP WITH TIME ZONE | ○| | 乗降場所の利用開始日時<br>形式はRFC3339のdate-time形式文字列<br>（例：2025-06-19T07:00:00+09:00） |
| 利用終了日時 | `end_datetime` | | TIMESTAMP WITH TIME ZONE | | | 乗降場所の利用終了日時<br>未設定の場合は無期限<br>形式はRFC3339のdate-time形式文字列<br>（例：2025-06-19T07:00:00+09:00）|
| 乗車可能フラグ | `is_boarding_available` | | BOOLEAN | ○ | | 乗車が可能かを示すフラグ |
| 降車可能フラグ | `is_alighting_available` | | BOOLEAN | ○ | | 降車が可能かを示すフラグ |

---

### テーブル名: （M16-ENTITY-17）乗降場所検索ワードマスタ
- **テーブル物理名**: `m_stop_search_word`
- **テーブル説明**: 乗降場所検索用の補助語句を管理するマスターテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 乗降場所ID | `stop_id` | PK, FK | VARCHAR | ○ | | m_stop.stop_id を参照 |
| 検索ワード | `search_word` | | VARCHAR | | | 検索用の補助語句 |

---

### テーブル名: （M16-ENTITY-18）サービス乗降場所マスタ
- **テーブル物理名**: `m_service_stop`
- **テーブル説明**: サービスと乗降場所の関連を管理する中間テーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| サービスID | `service_id` | PK, FK | VARCHAR | ○ | | m_service.service_id を参照 |
| 乗降場所ID | `stop_id` | PK, FK | VARCHAR | ○ | | m_stop.stop_id を参照 |

---

### テーブル名: （M16-ENTITY-19）乗降場所一時停止マスタ
- **テーブル物理名**: `m_stop_suspension`
- **テーブル説明**: 乗降場所の一時的な利用停止情報を管理するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 乗降場所ID | `stop_id` | PK | VARCHAR | ○ | | m_stop.stop_id を参照 |
| 一時停止開始日時 | `start_datetime` |  | TIMESTAMP WITH TIME ZONE | ○| | 一時停止開始日時<br>形式はRFC3339のdate-time形式文字列<br>（例：2025-06-19T07:00:00+09:00） |
| 一時停止終了日時 | `end_datetime` | | TIMESTAMP WITH TIME ZONE | ○ | | 一時停止終了日時<br>未設定の場合は無期限<br>形式はRFC3339のdate-time形式文字列<br>（例：2025-06-19T07:00:00+09:00）|
| 説明 | `description` | | VARCHAR | | | 停止理由や補足説明 |

---

### テーブル名: （M16-ENTITY-20）規約マスタ
- **テーブル物理名**: `m_term`
- **テーブル説明**: プラットフォーム全体またはサービス個別の利用規約情報を管理するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 規約ID | `terms_id` | PK | VARCHAR | ○ | | 規約の一意な識別子 |
| カテゴリ | `category` | | VARCHAR | ○ | | 規約の分類カテゴリ<br>区分値: `platform`, `privacy`, `cancellation`, `user`, `provider`, `third_party`, `service` |
| 名称 | `name` | | VARCHAR | | | 規約の名称 |
| URL | `url` | | VARCHAR | ○ | | 規約詳細ページのURL |
| 同意必須フラグ | `agreement_required` | | BOOLEAN | ○ | | ユーザーの同意が必須かを示すフラグ |

---

### テーブル名: （M16-ENTITY-21）サービス規約マスタ
- **テーブル物理名**: `m_service_term`
- **テーブル説明**: サービスと規約の関連を管理する中間テーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 規約ID | `terms_id` | PK | VARCHAR | ○ | | m_term.terms_id を参照 |
| サービスID | `service_id` | PK, FK | VARCHAR | ○ | | m_service.service_id を参照 |

---

### テーブル名: （M16-ENTITY-22）規約同意マスタ
- **テーブル物理名**: `m_agreement`
- **テーブル説明**: ユーザーごとの規約同意状況を格納するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| ユーザーID | `passenger_id` | PK, FK | VARCHAR | ○ | | m_passenger.passenger_id を参照 |
| 規約ID | `terms_id` | PK, FK | VARCHAR | ○ | | m_term.terms_id を参照 |
| サービスID | `service_id` | FK | VARCHAR | | | m_service.service_id を参照 |
| 同意日時 | `agreed_at` | | TIMESTAMP WITH TIME ZONE | ○ | | ユーザーが規約に同意した日時<br>形式はRFC3339のdate-time形式文字列<br>（例：2025-06-19T07:00:00+09:00） |

---

### テーブル名: （M16-ENTITY-23）利用可能乗客タイプマスタ
- **テーブル物理名**: `m_available_passenger_type`
- **テーブル説明**: 乗客タイプ（例：大人、子供）のマスターテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 乗客タイプID | `passenger_type_id` | PK | VARCHAR | ○ | | 乗客タイプの一意な識別子 |
| 名称 | `name` | | VARCHAR | ○| | 乗客タイプの名称 |
| 表示順 | `order` | | INTEGER | | | 表示順を示す番号 |
| 説明 | `description` | | VARCHAR | | | 乗客タイプの説明 |

---

### テーブル名: （M16-ENTITY-24）サービス乗客タイプマスタ
- **テーブル物理名**: `m_service_passenger_type`
- **テーブル説明**: サービスで利用可能な乗客タイプの関連を管理する中間テーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 乗客タイプID | `passenger_type_id` | PK, FK | VARCHAR | ○ | | m_available_passenger_type.passenger_type_id を参照 |
| サービスID | `service_id` | PK, FK | VARCHAR | ○ | | m_service.service_id を参照 |

---

### テーブル名: （M16-ENTITY-25）予約乗客数トラン
- **テーブル物理名**: `t_reservation_passenger_count`
- **テーブル説明**: 予約ごとの乗客タイプ別人数を管理するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 乗客タイプID | `passenger_type_id` | PK, FK | VARCHAR | ○ | | m_available_passenger_type.passenger_type_id を参照 |
| 予約ID | `reservation_id` | PK, FK | VARCHAR | ○ | | m_reservation.reservation_id を参照|
| 人数 | `count` | | INTEGER | ○ | | |

---

### テーブル名: （M16-ENTITY-26）予約補助機能数トラン
- **テーブル物理名**: `t_reservation_accessibility_feature_count`
- **テーブル説明**: 予約で必要とされる補助機能（車椅子など）の種別と数を管理するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 予約ID | `reservation_id` | PK, FK | VARCHAR | ○ | | m_reservation.reservation_id を参照|
| 補助機能種別 | `accessibility_feature_type` | PK | VARCHAR | ○ | | 乗客補助機能<br>区分値: `wheelchair`, `folding_wheelchair`, `powered_wheelchair`, `oversized_wheelchair`, `scooter`, `oversized_scooter`, `walker`, `oversized_walker`, `only_car_walker`, `only_car_rider`, `extra_space_ambulant`, `actual_door_to_door`, `lift`, `oversized_item`, `stroller`, `child_seat_baby`, `child_seat_young`, `bike`, `white_cane`, `service_animal`, `oxygen_tank`, `stretcher`|
| 乗客補助機能の必要数 | `count` | | INTEGER | ○ | | |

---

### テーブル名: （M16-ENTITY-27）運賃詳細トラン
- **テーブル物理名**: `t_fare_detail`
- **テーブル説明**: 予約ごとの乗客タイプ別運賃（小計）を管理するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 予約ID | `reservation_id` | PK, FK | VARCHAR | ○ | | m_reservation.reservation_id を参照|
| 乗客タイプID | `passenger_type_id` | PK, FK | VARCHAR | ○ | | m_available_passenger_type.passenger_type_id を参照 |
| 小計 | `subtotal` | | INTEGER | ○ | | |

---

### テーブル名: （M16-ENTITY-28）車両補助機能マスタ
- **テーブル物理名**: `m_vehicle_accessibility_feature`
- **テーブル説明**: 車両に搭載されている補助機能の種別と数を管理するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 車両ID | `vehicle_id` | PK, FK | VARCHAR |○ | | m_vehicle.vehicle_id を参照 |
| 補助機能種別 | `accessibility_feature_type` | PK | VARCHAR | ○ | | 乗客補助機能<br>区分値: `wheelchair`, `folding_wheelchair`, `powered_wheelchair`, `oversized_wheelchair`, `scooter`, `oversized_scooter`, `walker`, `oversized_walker`, `only_car_walker`, `only_car_rider`, `extra_space_ambulant`, `actual_door_to_door`, `lift`, `oversized_item`, `stroller`, `child_seat_baby`, `child_seat_young`, `bike`, `white_cane`, `service_animal`, `oxygen_tank`, `stretcher`|
| 搭載数 | `count` | | INTEGER | ○ | | |

---

### テーブル名: （M16-ENTITY-29）車両画像マスタ
- **テーブル物理名**: `m_vehicle_picture`
- **テーブル説明**: 車両の画像情報を管理するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 車両画像ID | `vehicle_image_id` | PK, FK | VARCHAR | ○ | | 車両画像の一意な識別子 |
| 車両ID | `vehicle_id` | FK | VARCHAR | ○ | | m_vehicle.vehicle_id を参照 |
| URL | `url` | | VARCHAR | ○ | | |
| タイトル | `title` | | VARCHAR |  | | |
| 説明 | `description` | | VARCHAR | | | 画像の説明文 |

---

### テーブル名: （M16-ENTITY-30）乗降場所画像マスタ
- **テーブル物理名**: `m_stop_picture`
- **テーブル説明**: 乗降場所の画像情報を管理するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 乗降場所画像ID | `stop_image_id` | PK, FK | VARCHAR | ○ | | 乗降場所画像の一意な識別子 |
| 乗降場所ID | `stop_id` | PK, FK | VARCHAR | ○ | | m_stop.stop_id を参照 |
| URL | `url` | | VARCHAR | ○ | | |
| タイトル | `title` | | VARCHAR |  | | |
| 説明 | `description` | | VARCHAR | | | 画像の説明文 |

---
### テーブル名: （M16-ENTITY-31）車両位置トラン
- **テーブル物理名**: `t_vehicle_location`
- **テーブル説明**: 車両の現在位置情報を記録するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 車両ID | `vehicle_id` | PK, FK | VARCHAR |○ | | m_vehicle.vehicle_id を参照 |
| 現在地ジオメトリタイプ | `location` | ○ | GEOMETRY | | |  現在地を示す地理座標のGeoJSONにおけるジオメトリタイプ（常に Point）と経度・緯度を含む配列[longitude, latitude] の順で格納（GeoJSON仕様準拠） |
| タイムスタンプ | `timestamp` |  | TIMESTAMP WITH TIMEZONE | ○| | 現在地の取得日時<br>形式はRFC3339のdate-time形式文字列<br>（例：2025-06-19T07:00:00+09:00） |

---

### テーブル名: （M16-ENTITY-32）運行遅延トラン
- **テーブル物理名**: `t_operation_delay`
- **テーブル説明**: 運行の遅延情報を管理するテーブル

| カラム名(論理) | カラム名(物理) | キー | データ型・桁 | 必須 | デフォルト値 | 備考 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 遅延ID | `delay_id` | PK | VARCHAR |○ | | 遅延情報の一意な識別子 |
| 車両ID | `vehicle_id` | FK | VARCHAR |○ | | m_vehicle.vehicle_id を参照 |
| サービスID | `service_id` | FK | VARCHAR |○ | | m_service.service_id を参照 |
| 遅延ステータス | `status` |  | VARCHAR |○ | |遅延の状態<br>区分値: `active`, `resolved` |
| 遅延理由コード | `delay_reason` |  | VARCHAR |○ | |遅延の理由を表すコード<br>区分値: `traffic`, `accident`, `weather`, `vehicle_issue`, `operational`, `passenger_issue`, `other` |
| 遅延理由詳細 | `delay_reason_detail` |  | VARCHAR | | |遅延の理由に関する詳細な説明|
| 遅延時間 | `delay_minutes` | | INTEGER |  | | 車両の運行遅延時間（分単位） |
| 遅延開始日時 | `started_at` |  | TIMESTAMP WITH TIME ZONE | | | 遅延が開始した日時<br>形式はRFC3339のdate-time形式文字列<br>（例：2025-06-19T07:00:00+09:00） |
| 遅延有効期限 | `effective_end` | | TIMESTAMP WITH TIME ZONE | | | 遅延有効期限 |
| 遅延終了日時 | `closed_at` | | TIMESTAMP WITH TIME ZONE | | | 遅延が終了した日時<br>形式はRFC3339のdate-time形式文字列<br>（例：2025-06-19T07:00:00+09:00）|
| 遅延終了理由コード | `closed_reason` |  | VARCHAR | | |遅延が終了した理由を表すコード<br>区分値: `vehicle_moved`, `resolved`, `schedule_changed`, `cancelled`<br>delay_status が resolved の場合に限り当該項目が設定される |
| 遅延終了理由詳細 | `closed_reason_detail` |  | VARCHAR | | |遅延終了の理由に関する詳細な説明 |