Skip to content

テーブル定義書

転職エージェント業務管理システム


テーブル一覧

#テーブル名説明種別
1usersユーザー(エージェント・アシスタント)マスタ
2channels応募媒体マスタ
3aspsASPマスタ
4candidate_statuses求職者全体ステータスマスタ
5selection_statuses選考ステータスマスタ
6progress_ranks内定確度マスタ
7company_types企業タイプマスタ
8job_categories求人カテゴリマスタ
9entry_platformsエントリー媒体マスタ
10companies企業マスタ
11jobs求人マスタ
12company_type_mappings企業×タイプ中間テーブル中間テーブル
13job_category_mappings求人×カテゴリ中間テーブル中間テーブル
14candidates求職者トランザクション
15candidate_notes面談メモトランザクション
16applications選考トランザクション
17application_status_histories選考ステータス履歴トランザクション

1. users(ユーザー)

エージェント・アシスタントの情報を管理する。

カラム名データ型NULLデフォルト説明
idSERIALNO-PK
nameVARCHAR(100)NO-氏名
emailVARCHAR(255)NO-メールアドレス(UNIQUE)
password_hashVARCHAR(255)YES-パスワードハッシュ(CF Access使用時は不要)
roleVARCHAR(20)NO-役割(agent/assistant)
colorVARCHAR(20)NO'blue'バッジ表示色(blue/red/green/purple/yellow/orange/pink/cyan/gray)
created_atTIMESTAMPNOCURRENT_TIMESTAMP作成日時
updated_atTIMESTAMPNOCURRENT_TIMESTAMP更新日時

インデックス:

  • PRIMARY KEY (id)
  • UNIQUE (email)

カラー選択肢:

  • blue(デフォルト), red, green, purple, yellow, orange, pink, cyan, gray

2. channels(応募媒体)

求職者の流入元となる媒体を管理する。

カラム名データ型NULLデフォルト説明
idSERIALNO-PK
nameVARCHAR(100)NO-媒体名
fee_rateDECIMAL(5,4)NO0手数料率(例: 0.35 = 35%)
is_activeBOOLEANNOTRUE有効フラグ
created_atTIMESTAMPNOCURRENT_TIMESTAMP作成日時
updated_atTIMESTAMPNOCURRENT_TIMESTAMP更新日時

初期データ:

  • 自社サイト(fee_rate: 0)
  • ビズリーチ(fee_rate: 0.35)
  • リクルートダイレクトスカウト(fee_rate: 0.35)
  • doda(fee_rate: 0.30)
  • Green(fee_rate: 0.30)

3. asps(ASP)

自社サイト経由の成果報酬を管理するASP情報。

カラム名データ型NULLデフォルト説明
idSERIALNO-PK
nameVARCHAR(100)NO-ASP名
cost_per_acquisitionDECIMAL(10,0)NO-成果報酬単価(円)
cutoff_dayINTEGERNO-締め日(1-31)
payment_month_offsetINTEGERNO1出金月オフセット(1=翌月末)
is_activeBOOLEANNOTRUE有効フラグ
created_atTIMESTAMPNOCURRENT_TIMESTAMP作成日時
updated_atTIMESTAMPNOCURRENT_TIMESTAMP更新日時

制約:

  • cutoff_day: CHECK (cutoff_day >= 1 AND cutoff_day <= 31)

4. candidate_statuses(求職者全体ステータス)

求職者の活動状態を管理するマスタ。

カラム名データ型NULLデフォルト説明
idSERIALNO-PK
nameVARCHAR(50)NO-ステータス名
display_orderINTEGERNO0表示順(自動ステータス変更時の進行度判定に使用)

初期データ:

display_ordername説明更新タイミング
1申込新規登録直後登録時(デフォルト)
2ヒアリング面談電話面談完了面談モーダルから
3キャリア面談Zoom面談完了(ASP承認ポイント)面談モーダルから
4活動中求人紹介〜選考フォロー中選考追加時に自動
5内定内定獲得選考が内定になったら自動
6入社決定入社確定手動
101活動終了(ヒアリング)ヒアリング面談後に終了面談モーダルから
102活動終了(キャリア)キャリア面談後に終了面談モーダルから
103活動終了(選考)選考中に終了選考管理モーダルから
999活動終了途中離脱・終了(非推奨)手動

終了系ステータスの説明:

  • 活動終了(ヒアリング): ヒアリング面談実施後、求職者が活動終了する場合
  • 活動終了(キャリア): キャリア面談実施後、求職者が活動終了する場合
  • 活動終了(選考): 選考中に他社決定・辞退等で活動終了する場合

※「活動終了」(display_order=999)は既存データ互換のため残存。新規登録では使用しない。

自動ステータス変更ロジック:

  • 選考追加時: display_order < 4 なら「活動中」に自動変更
  • 選考内定時: display_order < 5 なら「内定」に自動変更

5. selection_statuses(選考ステータス)

選考の進捗状態を管理するマスタ。

カラム名データ型NULLデフォルト説明
idSERIALNO-PK
nameVARCHAR(50)NO-ステータス名
categoryVARCHAR(30)NO-カテゴリ(書類/面接/内定)
display_orderINTEGERNO0表示順

初期データ:

カテゴリステータス
書類書類選考中、書類選考合格、書類選考不合格、書類選考辞退
面接カジュアル面談、筆記試験、一次面接、一次面接合格、一次面接不合格、一次面接辞退、二次面接、二次面接合格、二次面接不合格、二次面接辞退、三次面接、三次面接合格、三次面接不合格、三次面接辞退、最終面接、最終面接合格、最終面接不合格、最終面接辞退
内定内定、内定辞退、入社

6. progress_ranks(内定確度)

求職者の内定見込み度合いを管理するマスタ。

カラム名データ型NULLデフォルト説明
idSERIALNO-PK
nameVARCHAR(20)NO-確度名(A/B/C等)
descriptionVARCHAR(200)YES-説明
display_orderINTEGERNO0表示順

初期データ:

  • A: 内定見込み高
  • B: 選考順調
  • C: 選考初期

7. company_types(企業タイプ)

企業のビジネスモデル・業態を分類するマスタ。

カラム名データ型NULLデフォルト説明
idSERIALNO-PK
nameVARCHAR(50)NO-タイプ名(UNIQUE)
display_orderINTEGERNO0表示順

初期データ:

name説明
SIシステムインテグレーター
SESシステムエンジニアリングサービス(派遣)
コンサルITコンサルティングファーム
自社サービス自社プロダクトを持つ事業会社
Web系Webサービス企業
SaaSSaaSプロダクト企業
受託開発受託開発専門
スタートアップ創業間もないベンチャー
メガベンチャー大規模ベンチャー

8. job_categories(求人カテゴリ)

求人の職種カテゴリを分類するマスタ。

カラム名データ型NULLデフォルト説明
idSERIALNO-PK
nameVARCHAR(50)NO-カテゴリ名(UNIQUE)
display_orderINTEGERNO0表示順

初期データ:

name説明
ソフトウェアエンジニア汎用的な開発職種
バックエンドエンジニアサーバーサイド・API開発
フロントエンドエンジニアWeb UI 実装
インフラ/SREエンジニアクラウド・運用基盤
モバイルエンジニアiOS/Android 開発
データサイエンティスト分析・モデリング
プロジェクト/プロダクトマネージャーPM/PdM
ITコンサルタントITコンサル領域
QAエンジニアテスト・品質保証
セキュリティエンジニアセキュリティ領域
社内SE(情シス)コーポレートIT
セールス営業職
AI/MLエンジニア機械学習エンジニア
組み込み/IoTエンジニア組み込み・IoT開発
ゲームエンジニアゲーム開発
カスタマーサクセス導入・活用支援
データエンジニアデータ基盤構築
エンジニアリング責任者(EM/VPoE/CTO)EM/VPoE/CTO
UI/UXデザイナープロダクトデザイン・UX設計

9. entry_platforms(エントリー媒体)

企業へのエントリー時に利用する媒体を管理するマスタ。

カラム名データ型NULLデフォルト説明
idSERIALNO-PK
nameVARCHAR(100)NO-媒体名
is_activeBOOLEANNOTRUE有効フラグ
created_atTIMESTAMPNOCURRENT_TIMESTAMP作成日時
updated_atTIMESTAMPNOCURRENT_TIMESTAMP更新日時

初期データ:

  • HRMOS
  • Talentio
  • ジョブカン
  • 採用一括かんりくん
  • 直接メール

10. companies(企業)

紹介先企業の情報を管理する。

カラム名データ型NULLデフォルト説明
idSERIALNO-PK
nameVARCHAR(200)NO-企業名
entry_platform_idINTEGERYES-FK: entry_platforms.id
entry_urlVARCHAR(2048)YES-応募URL
contract_statusVARCHAR(20)NO'active'契約状態(active/terminated)
contract_start_dateDATEYES-契約開始日
contract_end_dateDATEYES-契約終了日
created_atTIMESTAMPNOCURRENT_TIMESTAMP作成日時
updated_atTIMESTAMPNOCURRENT_TIMESTAMP更新日時

インデックス:

  • idx_companies_name (name)
  • idx_companies_contract_status (contract_status)

※担当者情報はcompany_contactsテーブルで管理


11. jobs(求人)

企業ごとの求人情報を管理する。1企業に複数の求人が存在する。

カラム名データ型NULLデフォルト説明
idSERIALNO-PK
company_idINTEGERNO-FK: companies.id
titleVARCHAR(200)NO-求人タイトル
descriptionTEXTYES-求人内容
is_activeBOOLEANNOTRUE有効フラグ
entry_urlVARCHAR(2048)YES-エントリーURL
contact_idINTEGERYES-FK: company_contacts.id
created_atTIMESTAMPNOCURRENT_TIMESTAMP作成日時
updated_atTIMESTAMPNOCURRENT_TIMESTAMP更新日時

制約:

  • ON DELETE CASCADE (company_id)

インデックス:

  • idx_jobs_company (company_id)
  • idx_jobs_is_active (is_active)

12. company_type_mappings(企業×タイプ中間テーブル)

企業とタイプの多対多リレーションを管理する中間テーブル。1企業に複数のタイプを設定可能。

カラム名データ型NULLデフォルト説明
idSERIALNO-PK
company_idINTEGERNO-FK: companies.id
company_type_idINTEGERNO-FK: company_types.id
created_atTIMESTAMPNOCURRENT_TIMESTAMP作成日時

制約:

  • UNIQUE (company_id, company_type_id)
  • ON DELETE CASCADE (company_id, company_type_id)

インデックス:

  • idx_company_type_mappings_company (company_id)
  • idx_company_type_mappings_type (company_type_id)

13. job_category_mappings(求人×カテゴリ中間テーブル)

求人とカテゴリの多対多リレーションを管理する中間テーブル。1求人に複数のカテゴリを設定可能。

カラム名データ型NULLデフォルト説明
idSERIALNO-PK
job_idINTEGERNO-FK: jobs.id
job_category_idINTEGERNO-FK: job_categories.id
created_atTIMESTAMPNOCURRENT_TIMESTAMP作成日時

制約:

  • UNIQUE (job_id, job_category_id)
  • ON DELETE CASCADE (job_id, job_category_id)

インデックス:

  • idx_job_category_mappings_job (job_id)
  • idx_job_category_mappings_category (job_category_id)

14. candidates(求職者)

求職者の基本情報を管理する。

カラム名データ型NULLデフォルト説明
idSERIALNO-PK
last_nameVARCHAR(50)NO-
first_nameVARCHAR(50)NO-
last_name_kanaVARCHAR(50)YES-姓(カナ)
first_name_kanaVARCHAR(50)YES-名(カナ)
genderVARCHAR(10)YES-性別
birth_dateDATEYES-生年月日
phoneVARCHAR(20)YES-電話番号
emailVARCHAR(255)YES-メールアドレス
current_statusVARCHAR(20)YES-現況(現職/退職/休職)
current_companyVARCHAR(200)YES-現在の会社名
current_salaryINTEGERYES-現年収(万円)
expected_salaryINTEGERYES-希望年収(万円)
channel_idINTEGERNO-FK: channels.id
asp_idINTEGERYES-FK: asps.id(自社サイト経由時のみ)
status_idINTEGERNO-FK: candidate_statuses.id
agent_idINTEGERYES-FK: users.id(担当エージェント)
assistant_idINTEGERYES-FK: users.id(担当アシスタント)
progress_rank_idINTEGERYES-FK: progress_ranks.id
zoom_interview_dateDATEYES-Zoom面談日(ASP承認判定用)
termination_reasonTEXTYES-終了理由(ASP否認判定用)
phone_termination_reasonTEXTYES-電話終了理由(ASP否認判定用)
last_contact_dateTIMESTAMPYES-最終連絡日(音信不通検知用)
registered_atTIMESTAMPNOCURRENT_TIMESTAMP登録日
created_atTIMESTAMPNOCURRENT_TIMESTAMP作成日時
updated_atTIMESTAMPNOCURRENT_TIMESTAMP更新日時

必須項目(登録時):

  • last_name(姓)
  • first_name(名)
  • channel_id(応募媒体)
  • status_id(ステータス)

インデックス:

  • idx_candidates_last_name (last_name)
  • idx_candidates_last_name_kana (last_name_kana)
  • idx_candidates_status (status_id)
  • idx_candidates_agent (agent_id)
  • idx_candidates_assistant (assistant_id)
  • idx_candidates_channel (channel_id)
  • idx_candidates_registered (registered_at)
  • idx_candidates_last_contact_date (last_contact_date)

音信不通検知:

last_contact_date を使用して、求職者への連絡が途絶えていないかを検知する。

ステータス警告閾値(日)説明
申込7新規登録後、最初の連絡が遅れている
ヒアリング面談14ヒアリング後のフォローが滞っている
キャリア面談14キャリア面談後のフォローが滞っている
活動中7選考中の連絡が途絶えている
内定14内定後の入社準備フォローが滞っている

監視対象外ステータス:

  • 活動終了(ヒアリング)
  • 活動終了(キャリア)
  • 活動終了(選考)
  • 入社決定

last_contact_date 更新タイミング:

  • 求職者登録時: registered_at の値で初期化
  • メール連絡ボタン押下時: 現在日時で更新
  • 面談実施記録時: 現在日時で更新

15. candidate_notes(面談メモ)

求職者との面談記録を管理する。

カラム名データ型NULLデフォルト説明
idSERIALNO-PK
candidate_idINTEGERNO-FK: candidates.id
titleVARCHAR(200)NO-タイトル
contentTEXTYES-本文
created_byINTEGERNO-FK: users.id(作成者)
created_atTIMESTAMPNOCURRENT_TIMESTAMP作成日時
updated_atTIMESTAMPNOCURRENT_TIMESTAMP更新日時

制約:

  • ON DELETE CASCADE (candidate_id)

16. applications(選考)

求職者と求人の選考情報を管理する。

カラム名データ型NULLデフォルト説明
idSERIALNO-PK
candidate_idINTEGERNO-FK: candidates.id
job_idINTEGERNO-FK: jobs.id
status_idINTEGERNO-FK: selection_statuses.id
expected_salaryINTEGERYES-想定年収(万円)
final_salaryINTEGERYES-決定年収(万円)
entry_dateDATEYES-エントリー日
offer_dateDATEYES-内定日
join_dateDATEYES-入社日
remarksTEXTYES-備考
created_atTIMESTAMPNOCURRENT_TIMESTAMP作成日時
updated_atTIMESTAMPNOCURRENT_TIMESTAMP更新日時

制約:

  • UNIQUE (candidate_id, job_id)
  • ON DELETE CASCADE (candidate_id)
  • ON DELETE CASCADE (job_id)

インデックス:

  • idx_applications_candidate (candidate_id)
  • idx_applications_job (job_id)
  • idx_applications_status (status_id)
  • idx_applications_entry_date (entry_date)

自動処理:

  • 選考追加時: 求職者ステータスが「活動中」より前なら自動で「活動中」に変更
  • ステータス更新時: 選考ステータスが「内定」を含む場合、求職者ステータスが「内定」より前なら自動で「内定」に変更

17. application_status_histories(選考ステータス履歴)

選考ステータスの変更履歴を管理する。

カラム名データ型NULLデフォルト説明
idSERIALNO-PK
application_idINTEGERNO-FK: applications.id
status_idINTEGERNO-FK: selection_statuses.id
status_dateDATENO-ステータス変更日
remarksTEXTYES-備考
created_byINTEGERNO-FK: users.id(更新者)
created_atTIMESTAMPNOCURRENT_TIMESTAMP作成日時

制約:

  • ON DELETE CASCADE (application_id)

インデックス:

  • idx_histories_application (application_id)
  • idx_histories_status_date (status_date)