← 成果物一覧に戻る

データベース設計書

保険リードマーケットプレイス | v1.0.0 | 2026-03-18

1. 文書管理情報

文書名データベース設計書
バージョンv1.0.0
作成日2026-03-18
プロジェクト保険リードマーケットプレイス
対象システムhoken_Leads_2026_0317
RDBMSPostgreSQL 16
ORMPrisma ORM 7
テーブル数17テーブル
ENUM数18 ENUM型

2. データベース概要

本システムのデータベースは PostgreSQL 16 を採用し、Prisma ORM 7 を介してアクセスする。 保険見込客(リード)の収集からオークション形式での販売、購入後の案件管理、 請求・決済までを一貫して管理する17テーブルで構成される。

スキーマ構成

テーブルは以下の6つのドメイン領域に分類される。各ドメインは明確な責務を持ち、 外部キーによって適切にリレーションが設定されている。

ドメイン領域テーブル概要
ユーザー・認証User, Agency, AgencyInvitation, AgencyBudgetAlert営業担当者・代理店の管理、認証・MFA、招待・予算管理
リード管理Lead見込客情報の登録・スコアリング・SMS認証・重複排除
オークションAuction, Bid, AuctionSettings入札オークションの実行・設定管理
購入・案件管理Purchase, ContactLog, RefundRequest落札後の案件進捗追跡・連絡記録・返金管理
請求・決済Invoice, InvoiceItem月次請求書の生成・明細管理
運用・分析ABTest, ABTestVariant, Notification, AuditLogA/Bテスト・通知・監査ログ
ID生成方式: 全テーブルの主キーは CUID(Collision-resistant Unique Identifier)を採用。 連番と異なり推測不可能で、分散環境でも衝突しない。Prisma の @default(cuid()) で自動生成される。

3. ER図(エンティティ関連図)

以下に全17テーブルのリレーションを示す。(1) は「1」側、(*) は「多」側を表す。

┌─────────────────────────────────────────────────────────────────────────────┐ │ 保険リードマーケットプレイス ER図 │ └─────────────────────────────────────────────────────────────────────────────┘ ┌──────────┐ ┌──────────────────┐ │ Agency │(1)───(*) │ AgencyInvitation │ │ │ └──────────────────┘ │ │(1)───(*) ┌──────────────────┐ │ │ │ AgencyBudgetAlert │ │ │ └──────────────────┘ │ │(1)──┐ └──────────┘ │ │(1) │ │ │ (*) │ ┌──────────┐ │ ┌──────────┐ │ User │ │ │ Lead │ │ │ │ │ │ └──────────┘ │ └──────────┘ │(1) │(1) │ │(1) │ │ │ │ (*) (*) │ (*) ┌────┐ ┌─────────────┐ ┌──────────┐ ┌─────────────────┐ │Bid │ │ Purchase │ │ Auction │(*)──│ AuctionSettings │(1) └────┘ │ │ │ │ └─────────────────┘ │ │ └──────────┘ │(1) └─────────────┘ │(1) (*) │ │(1) │(1) │(1)│ ┌────┐ (*) │ │ │ └─────│Bid │ ┌───────────────┐ (*) (*) (*) └────┘ │ ABTestVariant │ ┌───────────┐ ┌──────────┐ ┌───────────┐└───────────────┘ │ContactLog │ │RefundReq │ │InvoiceItem│ │(*) └───────────┘ └──────────┘ └───────────┘ │ │(*) ┌────────┐ │ │ ABTest │(1) ┌─────────┐ └────────┘ │ Invoice │(1) └─────────┘ │(*) ┌──────────┐ │ Agency │(1) └──────────┘ ┌──────────────┐ ┌────────────┐ │ Notification │(*)──(1) │ User │ └──────────────┘ └────────────┘ ┌──────────────┐ ┌────────────┐ │ AuditLog │(*)──(1) │ User │ └──────────────┘ └────────────┘

リレーション一覧

親テーブル (1)子テーブル (*)外部キー関係の説明
AgencyUseragencyId代理店に所属する営業担当者
AgencyPurchaseagencyId代理店ごとの購入実績
AgencyInvoiceagencyId代理店宛の請求書
AgencyAgencyInvitationagencyId代理店への招待
AgencyAgencyBudgetAlertagencyId代理店の予算アラート
UserBiduserIdユーザーの入札
UserPurchaseuserIdユーザーの購入
UserRefundRequestuserIdユーザーの返金申請
UserRefundRequestreviewedBy管理者による返金審査
UserNotificationuserIdユーザーへの通知
UserAuditLoguserIdユーザーの操作ログ
UserAgencyInvitationinvitedById招待を送ったユーザー
LeadAuctionleadIdリードに対するオークション
LeadPurchaseleadIdリードの購入
AuctionBidauctionIdオークションへの入札
AuctionPurchaseauctionIdオークションの落札
AuctionSettingsAuctionsettingsIdオークション設定
AuctionSettingsABTestVariantsettingsIdA/Bテスト用設定
PurchaseContactLogpurchaseId購入案件の連絡記録
PurchaseRefundRequestpurchaseId購入案件の返金申請
PurchaseInvoiceItempurchaseId購入案件の請求明細
InvoiceInvoiceIteminvoiceId請求書の明細行
ABTestABTestVariantabTestIdA/Bテストのバリアント

4. テーブル定義

4.1 User(ユーザー)

システムを利用する営業担当者・代理店管理者・運用者を管理するテーブル。 認証情報(パスワードハッシュ、MFA)、アカウントロック機能を持つ。

カラム名NULLデフォルト説明
idPKString (CUID)NOcuid()主キー
emailUNIQUEStringNO-メールアドレス(一意)
passwordHashStringNO-bcryptハッシュ化パスワード
nameStringNO-表示名
roleENUMUserRoleNOSALES_AGENTユーザー権限ロール
agencyIdFKStringYESNULL所属代理店ID
isActiveBooleanNOtrueアカウント有効フラグ
mfaEnabledBooleanNOfalse二要素認証の有効/無効
mfaSecretStringYESNULLMFA用シークレットキー
lastLoginAtDateTimeYESNULL最終ログイン日時
loginAttemptsIntNO0連続ログイン失敗回数
lockedUntilDateTimeYESNULLアカウントロック解除日時
createdAtDateTimeNOnow()作成日時
updatedAtDateTimeNO@updatedAt更新日時(自動)

4.2 Agency(代理店)

保険代理店の組織情報を管理するテーブル。請求先メールアドレス、決済方法(クレジットカード/請求書払い)、 Stripe顧客ID、月次予算上限を保持する。

カラム名NULLデフォルト説明
idPKString (CUID)NOcuid()主キー
nameStringNO-代理店名
addressStringYESNULL住所
phoneStringYESNULL電話番号
invoiceEmailStringNO-請求書送付先メール
paymentMethodENUMPaymentMethodNOCREDIT_CARD決済方法
stripeCustomerIdStringYESNULLStripe顧客ID
monthlyBudgetIntYESNULL月次予算上限(円)
isActiveBooleanNOtrue有効フラグ
createdAtDateTimeNOnow()作成日時
updatedAtDateTimeNO@updatedAt更新日時(自動)

4.3 AgencyInvitation(代理店招待)

代理店管理者が営業担当者を招待するためのトークン管理テーブル。 一意のトークンを発行し、有効期限内に承諾されることで User が作成される。

カラム名NULLデフォルト説明
idPKString (CUID)NOcuid()主キー
agencyIdFKStringNO-対象代理店ID
emailStringNO-招待先メールアドレス
invitedByIdFKStringNO-招待者のユーザーID
tokenUNIQUEStringNO-招待トークン(一意)
expiresAtDateTimeNO-トークン有効期限
acceptedAtDateTimeYESNULL承諾日時
createdAtDateTimeNOnow()作成日時

4.4 AgencyBudgetAlert(予算アラート)

代理店の月次予算消化率が閾値に達した際のアラート記録テーブル。 同一代理店・閾値・月の組み合わせで一意制約を持ち、重複通知を防止する。

カラム名NULLデフォルト説明
idPKString (CUID)NOcuid()主キー
agencyIdFKStringNO-対象代理店ID
thresholdIntNO-アラート閾値(%: 80, 100)
alertedAtDateTimeNOnow()アラート発生日時
monthStringNO-対象月(例: 2026-03)
複合一意制約: @@unique([agencyId, threshold, month]) により、 同一代理店の同一月・同一閾値で重複アラートが発生しない。

4.5 Lead(リード/見込客)

保険相談を希望する見込客の情報を管理するテーブル。個人情報(氏名・電話番号・メール)は 購入前は非公開。スコアリング(入力充実度・温度感・属性スコア)で品質を数値化する。 SMS認証による本人確認機能を持ち、電話番号ハッシュによる重複排除を実装。

カラム名NULLデフォルト説明
idPKString (CUID)NOcuid()主キー
nameStringNO-氏名(購入前は非公開)
phoneStringNO-電話番号(購入前は非公開)
emailStringNO-メールアドレス(購入前は非公開)
addressFullStringYESNULL住所(詳細)
ageIntNO-年齢
genderENUMGenderNO-性別
prefectureStringNO-都道府県
cityStringYESNULL市区町村
occupationENUMOccupationCategoryYESNULL職業カテゴリ
incomeRangeENUMIncomeRangeYESNULL年収帯
familySizeIntYESNULL家族人数
hasChildrenBooleanYESNULL子供の有無
housingStatusENUMHousingStatusYESNULL住居形態
insuranceCategoryENUMInsuranceCategoryNO-相談希望の保険種別
consultationMethodENUMConsultationMethodNO-希望相談方法
consultationDetailStringYESNULL相談詳細・備考
urgencyENUMUrgencyYESNULL相談の緊急度
scoreIntNO0総合スコア
inputScoreIntNO0入力充実度スコア
temperatureScoreIntNO0温度感スコア
attributeScoreIntNO0属性スコア
statusENUMLeadStatusNONEWリードステータス
smsVerifiedBooleanNOfalseSMS認証済みフラグ
smsCodeStringYESNULLSMS認証コード(一時)
smsCodeExpiresAtDateTimeYESNULLSMS認証コード有効期限
failedAuctionCountIntNO0不成立オークション回数
phoneHashStringNO-電話番号ハッシュ(重複排除用)
createdAtDateTimeNOnow()作成日時
updatedAtDateTimeNO@updatedAt更新日時(自動)

4.6 Auction(オークション)

リードに対するオークションを管理するテーブル。スケジュール予約から開始・延長・完了までの ライフサイクルを追跡する。即決価格(instantPrice)による即時落札にも対応。 A/Bテストバリアントとの紐付けにより、オークション設定の最適化実験が可能。

カラム名NULLデフォルト説明
idPKString (CUID)NOcuid()主キー
leadIdFKStringNO-対象リードID
statusENUMAuctionStatusNOSCHEDULEDオークション状態
startPriceIntNO-開始価格(円)
currentPriceIntNO-現在価格(円)
instantPriceIntNO-即決価格(円)
bidCountIntNO0入札数
startAtDateTimeNO-開始予定日時
endAtDateTimeNO-終了予定日時
extendCountIntNO0延長回数
maxExtensionsIntNO3最大延長回数
winnerIdStringYESNULL落札者ユーザーID
abTestVariantStringYESNULLA/Bテストバリアント名
settingsIdFKStringYESNULLオークション設定ID
createdAtDateTimeNOnow()作成日時
updatedAtDateTimeNO@updatedAt更新日時(自動)

4.7 Bid(入札)

オークションに対する入札を記録するテーブル。通常入札と即決入札を区別し、 現在の最高額入札を isWinning フラグで管理する。

カラム名NULLデフォルト説明
idPKString (CUID)NOcuid()主キー
auctionIdFKStringNO-対象オークションID
userIdFKStringNO-入札者ユーザーID
amountIntNO-入札額(円)
isInstantBooleanNOfalse即決入札フラグ
isWinningBooleanNOfalse現在の最高額フラグ
createdAtDateTimeNOnow()入札日時

4.8 Purchase(購入/案件)

オークション落札後の案件を管理するテーブル。購入金額・Stripe決済ID・案件ステータス・ 連絡試行回数・商談日・商談結果などを追跡する。返金申請・連絡記録・請求明細と紐づく。

カラム名NULLデフォルト説明
idPKString (CUID)NOcuid()主キー
auctionIdFKStringNO-落札オークションID
userIdFKStringNO-購入者ユーザーID
agencyIdFKStringNO-所属代理店ID
leadIdFKStringNO-対象リードID
amountIntNO-購入金額(円)
stripePaymentIdStringYESNULLStripe決済ID
caseStatusENUMCaseStatusNONOT_CONTACTED案件ステータス
contactAttemptsIntNO0連絡試行回数
lastContactAtDateTimeYESNULL最終連絡日時
meetingDateDateTimeYESNULL商談日
meetingResultENUMMeetingResultYESNULL商談結果
memoStringYESNULLメモ・備考
createdAtDateTimeNOnow()作成日時
updatedAtDateTimeNO@updatedAt更新日時(自動)

4.9 ContactLog(連絡記録)

購入案件に対する連絡履歴を時系列で記録するテーブル。電話・メール等の連絡方法と備考を記録する。

カラム名NULLデフォルト説明
idPKString (CUID)NOcuid()主キー
purchaseIdFKStringNO-対象購入案件ID
methodStringNO-連絡方法(phone / email)
noteStringYESNULL備考・内容メモ
createdAtDateTimeNOnow()連絡日時

4.10 RefundRequest(返金申請)

購入案件に対する返金申請を管理するテーブル。申請理由(重複・不正・不達)、 証拠資料パス、審査者・審査結果を記録する。

カラム名NULLデフォルト説明
idPKString (CUID)NOcuid()主キー
purchaseIdFKStringNO-対象購入案件ID
userIdFKStringNO-申請者ユーザーID
reasonENUMRefundReasonNO-返金理由
descriptionStringNO-返金理由の詳細説明
evidenceStringYESNULL証拠ファイルパス
statusENUMRefundStatusNOPENDING審査ステータス
amountIntNO-返金申請額(円)
reviewedByFKStringYESNULL審査者ユーザーID
reviewedAtDateTimeYESNULL審査日時
reviewNoteStringYESNULL審査コメント
createdAtDateTimeNOnow()申請日時

4.11 Invoice(請求書)

代理店への月次請求書を管理するテーブル。請求期間・小計・消費税・返金控除額・合計額を保持し、 下書き(DRAFT)から発行(ISSUED)、支払済(PAID)、延滞(OVERDUE)までのステータスを追跡する。

カラム名NULLデフォルト説明
idPKString (CUID)NOcuid()主キー
agencyIdFKStringNO-対象代理店ID
invoiceNumberUNIQUEStringNO-請求書番号(例: INV-2026-03-001)
periodStartDateTimeNO-請求期間(開始)
periodEndDateTimeNO-請求期間(終了)
subtotalIntNO-小計(税抜、円)
taxIntNO-消費税額(円)
refundAmountIntNO0返金控除額(円)
totalIntNO-合計額(税込、円)
statusENUMInvoiceStatusNODRAFT請求書ステータス
issuedAtDateTimeYESNULL発行日時
dueDateDateTimeNO-支払期限
paidAtDateTimeYESNULL支払日時
createdAtDateTimeNOnow()作成日時

4.12 InvoiceItem(請求明細)

請求書の明細行を管理するテーブル。各購入案件と請求書を紐づけ、明細ごとの金額を記録する。

カラム名NULLデフォルト説明
idPKString (CUID)NOcuid()主キー
invoiceIdFKStringNO-請求書ID
purchaseIdFKStringNO-購入案件ID
amountIntNO-明細金額(円)
createdAtDateTimeNOnow()作成日時

4.13 AuctionSettings(オークション設定)

オークションの動作パラメータを管理するマスタテーブル。基本価格・スコア係数・即決価格倍率・ 入札単位・延長ルール・表示フィールド・カテゴリ別価格倍率などを設定する。 複数の設定を定義してA/Bテストで比較できる。

カラム名NULLデフォルト説明
idPKString (CUID)NOcuid()主キー
nameStringNO-設定名
basePriceIntNO8000基本開始価格(円)
scoreCoefficientIntNO200スコア係数(スコア*係数で加算)
instantPriceMultiplierFloatNO2.0即決価格倍率
auctionDurationIntNO30オークション時間(分)
bidUnitIntNO500入札単位(円)
extensionThresholdIntNO3延長判定閾値(分)
extensionDurationIntNO5延長時間(分)
maxExtensionsIntNO3最大延長回数
maxPurchasePerAuctionIntNO11オークション最大購入数
maxActiveCasesIntNO10同時進行最大案件数
cooldownMinutesIntNO0クールダウン時間(分)
scheduleTimesString[]NO["09:00","17:00"]定時スケジュール
displayFieldsJsonNO[]オークション表示フィールド
categoryMultipliersJsonNO{}カテゴリ別価格倍率
isActiveBooleanNOtrue有効フラグ
createdAtDateTimeNOnow()作成日時
updatedAtDateTimeNO@updatedAt更新日時(自動)

4.14 ABTest(A/Bテスト)

オークション設定のA/Bテスト実験を管理するテーブル。テスト名・ステータス・実施期間を保持する。

カラム名NULLデフォルト説明
idPKString (CUID)NOcuid()主キー
nameStringNO-テスト名
statusENUMABTestStatusNODRAFTテスト状態
startAtDateTimeNO-テスト開始日時
endAtDateTimeYESNULLテスト終了日時
createdAtDateTimeNOnow()作成日時
updatedAtDateTimeNO@updatedAt更新日時(自動)

4.15 ABTestVariant(A/Bテストバリアント)

A/Bテストの各パターン(バリアント)を管理するテーブル。トラフィック配分比率・ 表示回数・入札数・購入数・収益を集計し、バリアント間の効果比較を行う。

カラム名NULLデフォルト説明
idPKString (CUID)NOcuid()主キー
abTestIdFKStringNO-所属A/BテストID
nameStringNO-バリアント名(A, B, C...)
ratioIntNO-トラフィック配分率(%)
settingsIdFKStringYESNULL適用するオークション設定ID
impressionsIntNO0表示回数
bidsIntNO0入札数
purchasesIntNO0購入数
revenueIntNO0累計収益(円)
createdAtDateTimeNOnow()作成日時

4.16 Notification(通知)

ユーザーへのシステム通知を管理するテーブル。オークション開始・競り負け・落札・ 返金結果・請求書発行・予算警告など、各種イベントの通知を記録する。

カラム名NULLデフォルト説明
idPKString (CUID)NOcuid()主キー
userIdFKStringNO-通知先ユーザーID
typeENUMNotificationTypeNO-通知種別
titleStringNO-通知タイトル
messageStringNO-通知メッセージ本文
dataJsonYESNULL追加データ(JSON)
isReadBooleanNOfalse既読フラグ
createdAtDateTimeNOnow()通知日時

4.17 AuditLog(監査ログ)

システム上の重要な操作を記録する監査ログテーブル。操作者・アクション・対象リソース・ 詳細情報・IPアドレス・UserAgentを記録し、セキュリティ監査とトレーサビリティを担保する。

カラム名NULLデフォルト説明
idPKString (CUID)NOcuid()主キー
userIdFKStringYESNULL操作者ユーザーID
actionStringNO-実行アクション名
resourceStringNO-対象リソース種別
resourceIdStringYESNULL対象リソースID
detailsJsonYESNULL操作詳細(JSON)
ipAddressStringYESNULL送信元IPアドレス
userAgentStringYESNULLブラウザUserAgent
createdAtDateTimeNOnow()記録日時

5. ENUM定義

本システムで使用する18種類のENUM型の定義一覧。すべてPostgreSQLのENUM型としてマイグレーション時に作成される。

5.1 UserRole(ユーザーロール)

日本語名説明
SALES_AGENT営業担当者リード入札・案件管理の実行者
AGENCY_ADMIN代理店管理者代理店のユーザー管理・請求閲覧
ADMINシステム管理者全機能へのフルアクセス
OPERATOR運用担当者オークション・リード管理
ACCOUNTANT経理担当者請求書・返金の管理
VIEWER閲覧者読み取り専用アクセス

5.2 PaymentMethod(決済方法)

日本語名説明
CREDIT_CARDクレジットカードStripeによるカード決済
INVOICE請求書払い月末締め翌月払い

5.3 Gender(性別)

日本語名
MALE男性
FEMALE女性
OTHERその他

5.4 IncomeRange(年収帯)

日本語名
UNDER_200200万円未満
RANGE_200_400200万円〜400万円
RANGE_400_600400万円〜600万円
RANGE_600_800600万円〜800万円
RANGE_800_1000800万円〜1,000万円
RANGE_1000_15001,000万円〜1,500万円
RANGE_1500_20001,500万円〜2,000万円
OVER_20002,000万円以上

5.5 OccupationCategory(職業カテゴリ)

日本語名
COMPANY_EMPLOYEE会社員
PUBLIC_SERVANT公務員
SELF_EMPLOYED自営業
PART_TIMEパート・アルバイト
HOMEMAKER専業主婦(主夫)
STUDENT学生
RETIRED定年退職者
OTHERその他

5.6 HousingStatus(住居形態)

日本語名
OWN_WITH_LOAN持ち家(ローンあり)
OWN_NO_LOAN持ち家(ローンなし)
RENT賃貸
COMPANY_HOUSING社宅・寮
LIVING_WITH_FAMILY実家
OTHERその他

5.7 InsuranceCategory(保険種別)

日本語名説明
LIFE生命保険死亡保障・収入保障
MEDICAL医療保険入院・手術・がん保険
EDUCATION学資保険教育費積立
CASUALTY損害保険火災・自動車・地震保険
PENSION年金保険個人年金・iDeCo
GENERAL総合相談複数保険の見直し相談

5.8 ConsultationMethod(相談方法)

日本語名
ONLINEオンライン
IN_PERSON対面
EITHERどちらでも可

5.9 Urgency(緊急度)

日本語名
WITHIN_1_MONTH1ヶ月以内
WITHIN_3_MONTHS3ヶ月以内
NOT_URGENT急ぎではない

5.10 LeadStatus(リードステータス)

日本語名説明
NEW新規登録直後、オークション未開始
IN_AUCTIONオークション中オークション進行中
SOLD販売済落札されリード情報開示済
UNSOLD未販売オークション不成立
INVALID無効SMS未認証・重複等で無効化

5.11 AuctionStatus(オークションステータス)

日本語名説明
SCHEDULED予約済定時スケジュールで開始待ち
ACTIVE進行中入札受付中
EXTENDED延長中終了間際の入札により延長
COMPLETED完了正常終了(落札あり)
NO_BID入札なし入札ゼロで終了
CANCELLEDキャンセル運用により中止

5.12 CaseStatus(案件ステータス)

日本語名説明
NOT_CONTACTED未連絡購入後、まだ連絡していない
IN_PROGRESS対応中連絡済、商談調整中
UNREACHABLE不達連絡がつかない
MET面談済商談実施済
REFUND_REQUESTED返金申請中返金申請が提出された
CLOSED完了案件クローズ

5.13 MeetingResult(商談結果)

日本語名
CONTRACTED契約成立
CONTINUING継続検討
DECLINED辞退

5.14 RefundReason(返金理由)

日本語名説明
DUPLICATE重複同一リードが複数回販売された
FRAUDULENT不正リード情報が虚偽だった
UNREACHABLE不達複数回連絡しても応答なし

5.15 RefundStatus(返金ステータス)

日本語名
PENDING審査中
APPROVED承認
REJECTED却下

5.16 InvoiceStatus(請求書ステータス)

日本語名説明
DRAFT下書き作成中、未発行
ISSUED発行済代理店に送付済
PAID支払済入金確認済
OVERDUE延滞支払期限超過

5.17 ABTestStatus(A/Bテストステータス)

日本語名
DRAFT下書き
RUNNING実行中
COMPLETED完了
CANCELLED中止

5.18 NotificationType(通知種別)

日本語名説明
AUCTION_STARTオークション開始対象リードのオークション開始通知
BID_OUTBID競り負け自分の入札が他者に上回られた
AUCTION_WON落札オークション落札通知
AUCTION_ENDING終了間近オークション終了間近のリマインダー
REFUND_RESULT返金結果返金申請の審査結果通知
INVOICE_ISSUED請求書発行月次請求書の発行通知
BUDGET_WARNING予算警告月次予算の80%消化通知
BUDGET_EXCEEDED予算超過月次予算の100%到達通知
SYSTEMシステムメンテナンス等のシステム通知

6. インデックス設計

クエリパフォーマンスを最適化するため、以下のインデックスを定義する。 Prismaの @@index ディレクティブにより、マイグレーション時にPostgreSQLインデックスとして作成される。

テーブルインデックスカラム種別用途
UseragencyIdINDEX代理店別ユーザー一覧取得
UseremailINDEXメールアドレスによるログイン検索(@unique併用)
UserroleINDEXロール別ユーザーフィルタリング
AgencyInvitationagencyIdINDEX代理店別招待一覧取得
AgencyInvitationtokenINDEXトークンによる招待検証(@unique併用)
AgencyBudgetAlertagencyId + threshold + monthUNIQUE重複アラート防止(複合一意制約)
LeadstatusINDEXステータス別リード一覧取得
LeadphoneHashINDEX電話番号ハッシュによる重複チェック
LeadinsuranceCategoryINDEX保険種別フィルタリング
LeadprefectureINDEX都道府県フィルタリング
LeadcreatedAtINDEX新着順ソート
AuctionstatusINDEXステータス別オークション一覧
AuctionleadIdINDEXリード別オークション履歴
AuctionstartAtINDEX開始予定時刻でのスケジュール検索
AuctionendAtINDEX終了予定時刻でのタイマー処理
BidauctionIdINDEXオークション別入札一覧
BiduserIdINDEXユーザー別入札履歴
BidauctionId + amountCOMPOUNDオークション内の最高額検索
PurchaseuserIdINDEXユーザー別購入案件一覧
PurchaseagencyIdINDEX代理店別購入案件一覧
PurchasecaseStatusINDEXステータス別案件フィルタリング
PurchasecreatedAtINDEX新着順ソート
ContactLogpurchaseIdINDEX案件別連絡履歴取得
RefundRequestpurchaseIdINDEX案件別返金申請取得
RefundRequeststatusINDEX審査ステータス別一覧
InvoiceagencyIdINDEX代理店別請求書一覧
InvoicestatusINDEXステータス別請求書フィルタリング
InvoiceperiodStartINDEX請求期間での検索
InvoiceIteminvoiceIdINDEX請求書別明細取得
ABTestVariantabTestIdINDEXテスト別バリアント一覧
NotificationuserId + isReadCOMPOUND未読通知の取得
NotificationuserId + createdAtCOMPOUND通知の新着順取得
AuditLoguserIdINDEXユーザー別操作ログ
AuditLogresource + resourceIdCOMPOUNDリソース別操作ログ
AuditLogcreatedAtINDEX時系列ログ検索
インデックス設計方針:

7. データ量見積

サービス開始後の想定データ量を以下に示す。月間のリード流入数を500件、 代理店数50社、営業担当者数200名を基準に算出。

テーブル月間増加(件)1年後(件)推定行サイズ1年後容量備考
User10320512B160KB新規営業担当者の追加
Agency274256B19KB新規代理店契約
AgencyInvitation10120256B30KB招待トークン(承諾後も保持)
AgencyBudgetAlert1001,200128B150KB月次アラート(50社x2閾値)
Lead5006,0001KB6MB月間リード流入数
Auction6007,200256B1.8MBリード毎1〜2回(再掲載含む)
Bid3,00036,000128B4.5MB1オークション平均5入札
Purchase4004,800512B2.4MB落札率約70%
ContactLog1,20014,400256B3.6MB1案件平均3回連絡
RefundRequest40480512B240KB購入の約10%が返金申請
Invoice50600256B150KB代理店毎月1枚
InvoiceItem4004,800128B600KB購入件数と同数
AuctionSettings112512B6KB設定変更・A/Bテスト
ABTest224128B3KB月平均2テスト
ABTestVariant672128B9KBテスト毎3バリアント
Notification5,00060,000256B15MB各種イベント通知
AuditLog10,000120,000512B60MB全操作ログ
容量見積の前提条件:
← 成果物一覧に戻る