データベース詳細設計 - pikawakapikka/SkillSync GitHub Wiki

users(ユーザー:求職者・企業共通)

カラム名 データ型 主キー 外部キー 制約
id SERIAL
email VARCHAR(255) NOT NULL, UNIQUE
password_hash TEXT NOT NULL
name VARCHAR(100) NOT NULL
role VARCHAR(20) NOT NULL('seeker' / 'employer')
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

seeker_profiles(求職者プロフィール)

カラム名 データ型 主キー 外部キー 制約
id SERIAL
user_id INTEGER → users(id) NOT NULL
desired_position VARCHAR(100)
summary TEXT

portfolios(ポートフォリオ)

カラム名 データ型 主キー 外部キー 制約
id SERIAL
seeker_id INTEGER → seeker_profiles(id) NOT NULL
url TEXT NOT NULL
description TEXT

skills(スキルマスタ)

カラム名 データ型 主キー 外部キー 制約
id SERIAL
name VARCHAR(100) NOT NULL, UNIQUE

seeker_skills(求職者のスキル)

カラム名 データ型 主キー 外部キー 制約
seeker_id INTEGER ✔(複合) → seeker_profiles(id) NOT NULL
skill_id INTEGER ✔(複合) → skills(id) NOT NULL
level INTEGER CHECK (1 <= level <= 5)

skill_tests(スキルテスト定義)

カラム名 データ型 主キー 外部キー 制約
id SERIAL
name VARCHAR(100) NOT NULL
category VARCHAR(50)

test_results(スキルテスト結果)

カラム名 データ型 主キー 外部キー 制約
id SERIAL
seeker_id INTEGER → seeker_profiles(id) NOT NULL
test_id INTEGER → skill_tests(id) NOT NULL
score INTEGER NOT NULL
taken_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

employers(企業情報)

カラム名 データ型 主キー 外部キー 制約
id SERIAL
user_id INTEGER → users(id) NOT NULL
company_name VARCHAR(100) NOT NULL

job_posts(求人)

カラム名 データ型 主キー 外部キー 制約
id SERIAL
employer_id INTEGER → employers(id) NOT NULL
title VARCHAR(100) NOT NULL
description TEXT
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

job_skills(求人に必要なスキル)

カラム名 データ型 主キー 外部キー 制約
job_id INTEGER ✔(複合) → job_posts(id) NOT NULL
skill_id INTEGER ✔(複合) → skills(id) NOT NULL
required BOOLEAN NOT NULL

job_matches(スキルマッチ結果)

カラム名 データ型 主キー 外部キー 制約
id SERIAL
seeker_id INTEGER → seeker_profiles(id) NOT NULL
job_id INTEGER → job_posts(id) NOT NULL
match_score INTEGER
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

scouts(スカウト)

カラム名 データ型 主キー 外部キー 制約
id SERIAL
job_id INTEGER → job_posts(id) NOT NULL
seeker_id INTEGER → seeker_profiles(id) NOT NULL
message TEXT
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

learning_courses(学習コース)

カラム名 データ型 主キー 外部キー 制約
id SERIAL
name VARCHAR(100) NOT NULL
url TEXT NOT NULL
platform VARCHAR(50)

recommended_courses(推薦された学習コース)

カラム名 データ型 主キー 外部キー 制約
id SERIAL
seeker_id INTEGER → seeker_profiles(id) NOT NULL
course_id INTEGER → learning_courses(id) NOT NULL
reason TEXT
recommended_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

mock_interviews(模擬面接)

カラム名 データ型 主キー 外部キー 制約
id SERIAL
seeker_id INTEGER → seeker_profiles(id) NOT NULL
type VARCHAR(10) CHECK (type IN ('video','text'))
feedback TEXT
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP