轻松聘AI开发
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

-- 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;