コンテンツにスキップ

job_masters テーブル定義

概要

職業を管理するマスターテーブル。顧客登録やユーザー情報で使用する職業の選択肢を管理する。

用途: 顧客情報、ユーザープロフィールでの職業選択肢として使用。

テーブル情報

項目
テーブル名 job_masters
エンジン InnoDB
文字セット utf8mb4
照合順序 utf8mb4_unicode_ci
コメント 職業マスター

カラム定義

カラム名 NULL デフォルト キー 説明
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PK 主キー
name VARCHAR(100) NOT NULL - - 名称(会社員、自営業、学生等)
sort_order INT UNSIGNED NOT NULL 0 INDEX 表示順序
is_active BOOLEAN NOT NULL TRUE INDEX 有効フラグ
created_at TIMESTAMP NULL NULL - 作成日時
updated_at TIMESTAMP NULL NULL - 更新日時

インデックス

種別 名称 対象カラム 説明
PRIMARY KEY pk_job_masters id 主キー
INDEX idx_sort_order sort_order 表示順序検索
INDEX idx_is_active is_active 有効フラグ検索

外部キー制約

なし(マスターテーブルのため)

リレーション

このテーブルは他のテーブルから参照される:

  • users: ユーザーの職業を記録(将来実装)
  • customers: 顧客の職業を記録(将来実装)

データ例

id name sort_order is_active
1 会社員 1 TRUE
2 自営業 2 TRUE
3 公務員 3 TRUE
4 学生 4 TRUE
5 主婦・主夫 5 TRUE
6 無職 6 TRUE
7 その他 7 TRUE

備考・注意事項

職業の管理方針

選択肢の柔軟性

  • 一般的な職業: 会社員、自営業、公務員、学生など一般的な職業を用意
  • その他オプション: 上記に該当しない場合は「その他」を選択可能

有効化ポリシー

  • is_active: 有効/無効フラグ
  • 無効化: 使用されていない職業を無効化(論理削除ではない)
  • 再有効化: 無効化された職業を再度有効化可能

クエリ例

-- 有効な職業一覧を取得
SELECT id, name
FROM job_masters
WHERE is_active = TRUE
ORDER BY sort_order;

-- 職業別のユーザー数(将来実装)
SELECT
    j.name,
    COUNT(u.id) as user_count
FROM job_masters j
LEFT JOIN users u ON j.id = u.job_id
WHERE j.is_active = TRUE
GROUP BY j.id, j.name
ORDER BY j.sort_order;

Eloquentモデル例

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Job extends Model
{
    protected $table = 'job_masters';

    protected $fillable = [
        'name',
        'sort_order',
        'is_active',
    ];

    protected function casts(): array
    {
        return [
            'is_active' => 'boolean',
        ];
    }

    // 有効な職業一覧を取得
    public static function getActiveJobs(): Collection
    {
        return self::where('is_active', true)
            ->orderBy('sort_order')
            ->get();
    }

    // 並び替え順で取得
    public function scopeOrdered($query)
    {
        return $query->orderBy('sort_order');
    }
}