Next.js とSupabaseで求人マッチングアプリを作る②~マスターデータ設定~

今回は前回の記事に続き、今後必要となるマスターテーブル群を作成していきます。

Supabaseの`Table Editor`を開き、下記の順序で設定してください。(外部キーの関係上順番通りに作成しないとエラーになる可能性があるため注意)

Supabaseは、この通りインターフェースを通して、簡単にテーブル設計が可能です。
是非この記事を通して、DBの設定方法等を勉強してみてください。

目次

業界テーブル(mst_industry)

ITや金融、商社など業界を指定するテーブルです。
下記のような設定で作成します。

名前:mst_industry

  • id
    • varchar型
    • financial、tradingなど英語名をIDにする。
    • primaryキー
  • industry
    • varchar型
    • 業界の日本語名
    • not null
  • created_at
    • 作成日。デフォルトのままでOK
    • not null
  • updated_at
    • created_atと同じ設定で作成
  • delete_flg
    • bool型でデフォルト値falseで作成
    • not null

参考画像

サンプルのデータは下記のような形で3つほど作成しておいてください。

企業の基本情報テーブル(mst_company)

企業の基本情報を設定するためのテーブルです。

下記のような設定で作成します。

名前:mst_company

  • user_uid
    • uuid型
    • auth.user.idを外部参照します。
    • primaryキー
  • name
    • varchar型
    • 企業名
    • not null
  • zipcode
    • varchar型
    • 郵便番号
    • not null
  • address1
    • varchar型
    • 住所の一つ目
    • not null
  • address2
    • varchar型
    • 住所の二つ目
    • not null
  • phone
    • varchar型
    • 電話番号
    • unique
  • email1
    • varchar型
    • メールアドレス
    • not null
    • unique
  • url
    • text型
    • 会社サイトのURL
  • capital
    • int8型
    • 資本金
  • employee
    • int8型
    • 従業員数
  • annual_turnover
    • int8型
    • 年商
  • established_at
    • date型
    • 設立
  • industry_id_1
    • varchar型
    • 業界ID1
  • industry_id_2
    • varchar型
    • 業界ID2
  • industry_id_3
    • varchar型
    • 業界ID3
  • company_image_url_1
    • text型
    • 会社画像URL1
  • company_image_url_2
    • text型
    • 会社画像URL2
  • company_image_url_3
    • text型
    • 会社画像URL3
  • company_image_url_4
    • text型
    • 会社画像URL4
  • company_image_url_5
    • text型
    • 会社画像URL5
  • created_at
    • 作成日。デフォルトのままでOK
    • not null
  • updated_at
    • created_atと同じ設定で作成
  • delete_flg
    • bool型でデフォルト値falseで作成
    • not null

参考画像

国籍テーブル(mst_nationality)

国籍を定義するテーブルです。
下記のように設定します。

名前:mst_nationality

  • id
    • varchar型
    • japan、usなど英語名をIDにする。
    • primaryキー
  • nationality
    • varchar型
    • 国籍の日本語名
    • not null
  • created_at
    • 作成日。デフォルトのままでOK
    • not null
  • updated_at
    • created_atと同じ設定で作成
  • delete_flg
    • bool型でデフォルト値falseで作成
    • not null

参考画像

サンプルデータとして二つほど入力しておきます。

職種テーブル(mst_occupation)

職種を定義するテーブルです。
下記のように設定します。
名前:mst_occupation

  • id
    • varchar型
    • sales、it_engineerなど英語名をIDにする。
    • primaryキー
  • occupation
    • varchar型
    • 職種の日本語名
    • not null
  • created_at
    • 作成日。デフォルトのままでOK
    • not null
  • updated_at
    • created_atと同じ設定で作成
  • delete_flg
    • bool型でデフォルト値falseで作成
    • not null

参考画像

サンプルデータとして三件ほど入力しておきます。

資格テーブル(mst_qualification)

資格情報を定義するテーブルです。
下記のように設定します。
名前:mst_qualification

  • id
    • varchar型
    • primaryキー
  • qualification
    • varchar型
    • 資格の日本語名
    • not null
  • created_at
    • 作成日。デフォルトのままでOK
    • not null
  • updated_at
    • created_atと同じ設定で作成
  • delete_flg
    • bool型でデフォルト値falseで作成
    • not null

参考画像

在留資格テーブル(mst_residence_qualification)

在留資格の種類を定義するテーブルです。
下記のように設定します。
名前:mst_residence_qualification

  • id
    • varchar型
    • 在留資格の英語名
    • primaryキー
  • residence_qualification
    • varchar型
    • 在留資格の日本語名
    • not null
  • created_at
    • 作成日。デフォルトのままでOK
    • not null
  • updated_at
    • created_atと同じ設定で作成
  • delete_flg
    • bool型でデフォルト値falseで作成
    • not null

参考画像

サンプルデータを三件ほど追加しておきます。

スキル情報テーブル(mst_skill)

スキル情報を定義するテーブルです。
下記のように設定します。
名前:mst_skill

  • id
    • varchar型
    • スキルの英語名
    • primaryキー
  • skill
    • varchar型
    • スキルの日本語名
    • not null
  • created_at
    • 作成日。デフォルトのままでOK
    • not null
  • updated_at
    • created_atと同じ設定で作成
  • delete_flg
    • bool型でデフォルト値falseで作成
    • not null

参考画像

勤務地テーブル(mst_work_location)

スキル情報を定義するテーブルです。
下記のように設定します。
名前:mst_work_location

  • id
    • varchar型
    • 勤務地の英語名(or 都道府県コードなど、後程決めます)
    • primaryキー 
  • work_location
    • varchar型
    • 勤務地の日本語名
    • not null
  • created_at
    • 作成日。デフォルトのままでOK
    • not null
  • updated_at
    • created_atと同じ設定で作成
  • delete_flg
    • bool型でデフォルト値falseで作成
    • not null

参考画像

求職者の基本情報テーブル(mst_job_seeker)

求職者の基本情報を定義するテーブルです。
下記のように設定します。

名前:mst_job_seeker

  • user_uid
    • uuid型
    • auth.user.idを外部参照します。
    • primaryキー
  • last_name
    • varchar型
    • not null
  • first_name
    • varchar型
    • not null
  • middle_name
    • varchar型
    • ミドルネーム
  • gender
    • int2型
    • 性別
    • not null
  • birthday
    • date型
    • 誕生日
    • not null
  • zipcode
    • varchar型
    • 郵便番号
  • address1
    • varchar型
    • 住所の一つ目
  • address2
    • varchar型
    • 住所の二つ目
  • phone
    • varchar型
    • 電話番号
    • unique
  • email1
    • varchar型
    • メールアドレス
    • not null
    • unique
  • email2
    • varchar型
    • メールアドレス2
    • unique
  • email3
    • varchar型
    • メールアドレス3
    • unique
  • nationality_id
    • varchar型
    • 国籍ID
  • current_annual_income
    • int8型
    • 現在の年収
  • desired_annual_income
    • int8型
    • 希望年収
  • spouse
    • bool型
    • 配偶者がいるかどうか
  • desired_occupation_id_1
    • varchar型
    • 希望職種1
  • desired_occupation_id_2
    • varchar型
    • 希望職種2
  • desired_occupation_id_3
    • varchar型
    • 希望職種3
  • desired_change_job_date
    • date型
    • 転職希望日
  • residence_qualification_id
    • varchar型
    • 在留資格ID
  • residence qualification_expired
    • date型
    • 在留資格期限
  • residence qualification_front_image_url
    • text型
    • 在留資格カード表のファイルURL
  • residence qualification_back_image_url
    • text型
    • 在留資格カード裏のファイルURL
  • profile_image_url
    • text型
    • プロフィール画像のファイルURL
  • resume_file_url
    • text型
    • 履歴書のファイルURL
  • resume_file_name
    • text型
    • 履歴書のファイル名
  • created_at
    • 作成日。デフォルトのままでOK
    • not null
  • updated_at
    • created_atと同じ設定で作成
  • delete_flg
    • bool型でデフォルト値falseで作成
    • not null

参考画像

ポリシー設定

mst_companyとmst_job_seeker

この二つのテーブルに関しては、
`INSERT`、`SELECT`、`UPDATE`の三つに対し下記のCHECK(もしくはUSING)の設定を行ってください。
ターゲットとするロールは`authenticated`です。

(auth.uid() = user_uid)

それ以外は`ALL`の権限でCHECK(もしくはUSING)の設定をすべて`true`にしていただければOKです。
同じくターゲットとするロールは`authenticated`です。

ここまででマスターテーブルの設定は以上になります。
次回は企業のプロファイル変更機能を実装します。

その他参考資料など

なお弊社では『マッチングワン』という『低コスト・短期にマッチングサービスを構築できる』サービスを展開しており、今回ご紹介するコードは、その『マッチングワン』でも使われているコードとなります。
本記事で紹介したようなプロダクトを開発されたい場合は、是非お問い合わせください。

またTodoONada株式会社では、この記事で紹介した以外にも、Supabase・Next.jsを使ったアプリの作成方法についてご紹介しています。
下記記事にて一覧を見ることができますので、ぜひこちらもご覧ください!https://libproc.com/category/supabase/

お問合せ&各種リンク

presented by

  • システム開発、アプリ開発
  • マッチングアプリ開発
  • インフラ構築支援等、なんでもご相談ください。
よかったらシェアしてね!
  • URLをコピーしました!
目次