forked from baskbuddy/zhangshun
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
3.1 KiB
71 lines
3.1 KiB
-- Flyway V2 draft: 企业、学生资料、岗位、投递
|
|
-- 设计确认后再移动到 src/main/resources/db/migration/ 并执行。
|
|
|
|
CREATE TABLE companies (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
owner_user_id BIGINT NOT NULL,
|
|
name VARCHAR(120) NOT NULL,
|
|
logo_url VARCHAR(500),
|
|
description TEXT,
|
|
industry VARCHAR(80),
|
|
website VARCHAR(255),
|
|
address VARCHAR(255),
|
|
verified TINYINT(1) NOT NULL DEFAULT 0,
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
CONSTRAINT uk_companies_owner UNIQUE (owner_user_id),
|
|
CONSTRAINT fk_companies_owner FOREIGN KEY (owner_user_id) REFERENCES users(id),
|
|
INDEX idx_companies_name (name)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE student_profiles (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id BIGINT NOT NULL,
|
|
real_name VARCHAR(50),
|
|
bio TEXT,
|
|
location VARCHAR(100),
|
|
education VARCHAR(100),
|
|
school VARCHAR(150),
|
|
graduation_year SMALLINT,
|
|
resume_url VARCHAR(500),
|
|
skills_json JSON,
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
CONSTRAINT uk_student_profiles_user UNIQUE (user_id),
|
|
CONSTRAINT fk_student_profiles_user FOREIGN KEY (user_id) REFERENCES users(id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE jobs (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
company_id BIGINT NOT NULL,
|
|
title VARCHAR(120) NOT NULL,
|
|
description TEXT NOT NULL,
|
|
requirements TEXT,
|
|
city VARCHAR(80) NOT NULL,
|
|
employment_type VARCHAR(30) NOT NULL,
|
|
salary_min INT,
|
|
salary_max INT,
|
|
status VARCHAR(20) NOT NULL DEFAULT 'DRAFT',
|
|
published_at DATETIME,
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
CONSTRAINT fk_jobs_company FOREIGN KEY (company_id) REFERENCES companies(id),
|
|
INDEX idx_jobs_company_status (company_id, status),
|
|
INDEX idx_jobs_status_created (status, created_at),
|
|
INDEX idx_jobs_city_status (city, status)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE applications (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
job_id BIGINT NOT NULL,
|
|
student_user_id BIGINT NOT NULL,
|
|
cover_letter TEXT,
|
|
status VARCHAR(20) NOT NULL DEFAULT 'SUBMITTED',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
CONSTRAINT uk_applications_job_student UNIQUE (job_id, student_user_id),
|
|
CONSTRAINT fk_applications_job FOREIGN KEY (job_id) REFERENCES jobs(id),
|
|
CONSTRAINT fk_applications_student FOREIGN KEY (student_user_id) REFERENCES users(id),
|
|
INDEX idx_applications_student_status (student_user_id, status),
|
|
INDEX idx_applications_job_status (job_id, status)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|