Files
BOSS/BOSSBackEnd/sql/new_structure.sql
2026-01-10 21:55:01 +08:00

176 lines
9.0 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* =========================
Boss 招聘系统 - 重构后全量建表SQL
MySQL 8.x / InnoDB / utf8mb4
========================= */
CREATE DATABASE IF NOT EXISTS boss
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_0900_ai_ci;
USE boss;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- 2) 清理
DROP TABLE IF EXISTS `interview`;
DROP TABLE IF EXISTS `boss_application_decision`;
DROP TABLE IF EXISTS `application`;
DROP TABLE IF EXISTS `job_posting`;
DROP TABLE IF EXISTS `resume`;
DROP TABLE IF EXISTS `company`;
DROP TABLE IF EXISTS `boss`;
DROP TABLE IF EXISTS `admin`;
DROP TABLE IF EXISTS `user`;
SET FOREIGN_KEY_CHECKS = 1;
-- =========================
-- user 用户表 (整合了求职者、Boss、Admin)
-- =========================
CREATE TABLE `user`
(
`id` BIGINT UNSIGNED AUTO_INCREMENT COMMENT '用户ID',
`user_account` VARCHAR(64) NOT NULL COMMENT '登录名(唯一)',
`password` VARCHAR(255) NOT NULL COMMENT '密码哈希',
`phone` VARCHAR(32) NULL COMMENT '手机号',
`email` VARCHAR(128) NULL COMMENT '邮箱',
`username` VARCHAR(64) NULL COMMENT '昵称/姓名',
`user_role` VARCHAR(20) DEFAULT 'user' NOT NULL COMMENT '用户角色user-求职者, boss-Boss, admin-管理员',
`company_id` BIGINT UNSIGNED NULL COMMENT '公司ID仅Boss角色有效',
`status` TINYINT DEFAULT 1 NOT NULL COMMENT '状态0禁用 1正常',
`profile` TINYTEXT NULL COMMENT '简介',
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` TINYINT DEFAULT 0 NOT NULL COMMENT '软删0否 1是',
`deleted_at` DATETIME NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_account` (`user_account`)
) ENGINE=InnoDB COMMENT '用户表';
CREATE INDEX `idx_user_role` ON `user` (`user_role`);
CREATE INDEX `idx_user_email` ON `user` (`email`);
CREATE INDEX `idx_user_phone` ON `user` (`phone`);
-- =========================
-- company 公司表
-- =========================
CREATE TABLE `company`
(
`id` BIGINT UNSIGNED AUTO_INCREMENT COMMENT '公司ID',
`name` VARCHAR(128) NOT NULL COMMENT '公司名',
`industry` VARCHAR(128) NULL COMMENT '行业',
`size_range` VARCHAR(64) NULL COMMENT '规模如1-50/50-200',
`website` VARCHAR(255) NULL COMMENT '官网',
`address` VARCHAR(255) NULL COMMENT '地址',
`intro` TEXT NULL COMMENT '公司介绍',
`status` TINYINT DEFAULT 1 NOT NULL COMMENT '状态0禁用 1正常',
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` TINYINT DEFAULT 0 NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_company_name` (`name`)
) ENGINE=InnoDB COMMENT '公司表';
-- =========================
-- job_posting 岗位表
-- =========================
CREATE TABLE `job_posting`
(
`id` BIGINT UNSIGNED AUTO_INCREMENT COMMENT '岗位ID',
`boss_id` BIGINT UNSIGNED NOT NULL COMMENT '发布者ID (User ID)',
`company_id` BIGINT UNSIGNED NOT NULL COMMENT '公司ID',
`title` VARCHAR(128) NOT NULL COMMENT '岗位名称',
`location` VARCHAR(128) NULL COMMENT '地点',
`job_type` VARCHAR(64) NULL COMMENT '类型:全职/实习',
`salary_min` INT NULL,
`salary_max` INT NULL,
`description` TEXT NULL COMMENT '描述',
`requirement` TEXT NULL COMMENT '要求',
`status` TINYINT DEFAULT 1 NOT NULL COMMENT '状态0草稿 1发布 2关闭',
`publish_at` DATETIME NULL,
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` TINYINT DEFAULT 0 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT '岗位表';
CREATE INDEX `idx_job_boss` ON `job_posting` (`boss_id`);
CREATE INDEX `idx_job_company` ON `job_posting` (`company_id`);
-- =========================
-- resume 简历表
-- =========================
CREATE TABLE `resume`
(
`id` BIGINT UNSIGNED AUTO_INCREMENT COMMENT '简历ID',
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
`resume_title` VARCHAR(128) DEFAULT '默认简历' NOT NULL COMMENT '简历标题',
`is_default` TINYINT DEFAULT 0 NOT NULL COMMENT '是否默认0否 1是',
`summary` TEXT NULL COMMENT '摘要',
`content` LONGTEXT NULL COMMENT '正文',
`attachment_url` VARCHAR(512) NULL COMMENT '附件URL',
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` TINYINT DEFAULT 0 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT '简历表';
CREATE INDEX `idx_resume_user` ON `resume` (`user_id`);
-- =========================
-- application 用户投递记录表
-- =========================
CREATE TABLE `application`
(
`id` BIGINT UNSIGNED AUTO_INCREMENT COMMENT '投递ID',
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '求职者ID',
`resume_id` BIGINT UNSIGNED NULL COMMENT '简历ID',
`job_id` BIGINT UNSIGNED NOT NULL COMMENT '岗位ID',
`boss_id` BIGINT UNSIGNED NOT NULL COMMENT '招聘者ID (冗余)',
`status` TINYINT DEFAULT 0 NOT NULL COMMENT '状态0已投递 1已撤回 2已过期 3面试中 4已录用 5已拒绝',
`applied_at` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '投递时间',
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` TINYINT DEFAULT 0 NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_apply_user_job` (`user_id`, `job_id`)
) ENGINE=InnoDB COMMENT '用户投递记录表';
-- =========================
-- boss_application_decision Boss处理投递表
-- =========================
CREATE TABLE `boss_application_decision`
(
`id` BIGINT UNSIGNED AUTO_INCREMENT COMMENT 'ID',
`application_id` BIGINT UNSIGNED NOT NULL COMMENT '投递ID',
`boss_id` BIGINT UNSIGNED NOT NULL COMMENT '招聘者ID',
`decision` TINYINT NOT NULL COMMENT '处理结果1接受/进入流程 2拒绝 3待定',
`stage` TINYINT DEFAULT 0 NOT NULL COMMENT '阶段0筛选 1邀面 2面试 3Offer 4结束',
`note` VARCHAR(512) NULL COMMENT '备注',
`decided_at` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '处理时间',
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` TINYINT DEFAULT 0 NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_decision_application` (`application_id`)
) ENGINE=InnoDB COMMENT 'Boss处理投递表';
-- =========================
-- interview 面试安排表
-- =========================
CREATE TABLE `interview`
(
`id` BIGINT UNSIGNED AUTO_INCREMENT COMMENT '面试ID',
`application_id` BIGINT UNSIGNED NOT NULL COMMENT '投递ID',
`boss_id` BIGINT UNSIGNED NOT NULL COMMENT '招聘者ID',
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '求职者ID',
`interview_time` DATETIME NOT NULL COMMENT '面试时间',
`mode` TINYINT DEFAULT 0 NOT NULL COMMENT '方式0线上 1线下',
`location` VARCHAR(255) NULL COMMENT '地点/会议链接',
`status` TINYINT DEFAULT 0 NOT NULL COMMENT '状态0待确认 1已确认 2已完成 3取消 4拒绝',
`note` VARCHAR(512) NULL,
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
`is_deleted` TINYINT DEFAULT 0 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT '面试安排表';