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