見出し画像

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を使ったアプリの作成方法についてご紹介しています。
下記記事にて一覧を見ることができますので、ぜひこちらもご覧ください!

お問合せ&各種リンク

presented by

サポートしていただくと、筆者のやる気がガンガンアップします!