51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

设计“招聘信息平台”的数据库表结构,包括职位表、用户表、匹配记录表等,说明字段设计及索引策略,考虑数据一致性(如企业认证信息、求职者专业信息)。

大连海事就业产品设计难度:中等

答案

1) 【一句话结论】招聘信息平台数据库设计需构建职位、用户、匹配等核心表,通过企业认证表(含状态、证书ID)约束企业真实性,匹配记录表加唯一索引防重复,结合索引、事务及分布式方案保障数据一致性与查询效率,支持职位发布、用户匹配等核心业务。

2) 【原理/概念讲解】数据库设计需遵循第三范式减少冗余,同时优化查询性能。职位表需添加状态字段(如is_active,布尔值,标记职位是否有效,避免过期职位被搜索);企业认证信息单独表(认证表),关联用户表企业ID,用外键约束状态(如已认证/失效),确保职位发布前验证企业状态。用户表求职者专业用JSON存储多专业,但需预计算专业标签(创建标签表,解析major字段为标签并建立索引),优化查询性能。分布式环境下,匹配记录表加乐观锁(如version字段),结合最终一致性或Saga模式处理并发冲突。类比:职位表是企业发布的“商品”,用户表是顾客档案,匹配表是订单,索引是商品目录的页码,事务是订单提交的锁机制,确保数据一致。

3) 【对比与适用场景】

表名关键字段设计说明适用场景注意点
职位表(Job)job_id, company_id, job_title, salary_min, salary_max, location, is_active企业ID关联用户表,薪资分区间,位置索引,状态字段标记有效性企业发布职位,求职者搜索企业ID需关联有效认证企业,is_active=1表示有效
用户表(User)user_id, user_type, name, major(JSON数组),company_info(JSON)用户类型枚举,求职者专业JSON存储多值,企业信息含认证字段用户注册,匹配时筛选专业/城市JSON存储需预计算专业标签(如标签表),优化查询
认证表(Certification)cert_id, company_id, status(ENUM),certificate_id企业认证状态+证书ID,外键关联用户表企业ID验证企业真实性,约束职位发布状态字段唯一约束,避免重复认证,触发器检查状态
匹配记录表(MatchRecord)match_id, job_id, user_id, version唯一索引防重复,乐观锁版本字段防并发冲突记录用户关注/申请,分析行为唯一索引(job_id, user_id),版本字段处理并发
标签表(MajorTag)tag_id, tag_name解析用户专业JSON为标签,建立索引优化专业查询(如按专业筛选)与用户表关联,建立外键索引

4) 【示例】

-- 假设数据库为MySQL,创建表
-- 1. 用户表(含企业认证关联)
CREATE TABLE User (
    user_id INT PRIMARY KEY AUTO_INCREMENT,
    user_type ENUM('企业', '求职者') NOT NULL,
    name VARCHAR(50) NOT NULL,
    major JSON DEFAULT NULL,
    company_info JSON DEFAULT NULL,
    INDEX idx_type_city (user_type, city)
);

-- 2. 认证表(企业认证状态)
CREATE TABLE Certification (
    cert_id INT PRIMARY KEY AUTO_INCREMENT,
    company_id INT NOT NULL,
    status ENUM('未认证', '已认证', '失效') NOT NULL,
    certificate_id VARCHAR(200) NOT NULL,
    FOREIGN KEY (company_id) REFERENCES User(user_id) ON DELETE CASCADE
);

-- 3. 职位表(关联企业认证,加状态字段)
CREATE TABLE Job (
    job_id INT PRIMARY KEY AUTO_INCREMENT,
    company_id INT NOT NULL,
    job_title VARCHAR(100) NOT NULL,
    salary_min INT,
    salary_max INT,
    location VARCHAR(50) NOT NULL,
    publish_time DATETIME NOT NULL,
    is_active BOOLEAN DEFAULT TRUE,
    INDEX idx_company (company_id),
    INDEX idx_title_location (job_title, location),
    FOREIGN KEY (company_id) REFERENCES User(user_id) ON DELETE CASCADE,
    FOREIGN KEY (company_id) REFERENCES Certification(company_id) ON UPDATE CASCADE
);

-- 4. 匹配记录表(唯一索引+乐观锁)
CREATE TABLE MatchRecord (
    match_id INT PRIMARY KEY AUTO_INCREMENT,
    job_id INT NOT NULL,
    user_id INT NOT NULL,
    version INT DEFAULT 1,
    INDEX idx_job_user (job_id, user_id) UNIQUE,
    FOREIGN KEY (job_id) REFERENCES Job(job_id) ON DELETE CASCADE,
    FOREIGN KEY (user_id) REFERENCES User(user_id) ON DELETE CASCADE
);

-- 5. 标签表(预计算专业标签)
CREATE TABLE MajorTag (
    tag_id INT PRIMARY KEY AUTO_INCREMENT,
    tag_name VARCHAR(50) NOT NULL UNIQUE
);

-- 6. 发布职位时检查企业认证的触发器
DELIMITER //
CREATE TRIGGER check_company_certification
BEFORE INSERT ON Job
FOR EACH ROW
BEGIN
    DECLARE cert_status VARCHAR(20);
    SELECT status INTO cert_status FROM Certification WHERE company_id = NEW.company_id;
    IF cert_status != '已认证' THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '企业未通过认证,无法发布职位';
    END IF;
END //
DELIMITER ;

5) 【面试口播版答案】面试官您好,设计招聘信息平台的数据库表结构,核心是构建职位、用户、匹配等核心表,并通过企业认证表(含状态、证书ID)约束企业真实性,匹配记录表加唯一索引防止重复记录,结合索引、事务及分布式方案保障数据一致性与查询效率。具体来说,职位表关联企业ID(需通过认证表验证状态,并添加is_active字段标记有效性,避免过期职位被搜索),用户表区分求职者/企业,求职者专业用JSON存储多值,但通过预计算专业标签(创建标签表并建立索引)优化查询性能,匹配表通过唯一索引(job_id, user_id)并添加乐观锁版本字段,防止并发冲突。数据一致性通过外键约束(如企业认证状态必须为有效值)和触发器(发布职位时检查认证状态,失败回滚)保障,确保职位发布、用户匹配等核心业务高效运行。

6) 【追问清单】

  • 问:如何确保企业认证信息的真实性和时效性?答:通过认证表存储状态(如已认证/失效)和证书ID,结合触发器在发布职位时检查状态,若状态无效则拒绝发布,并定期更新认证信息。
  • 问:求职者专业信息用JSON存储,会不会影响查询性能?答:JSON存储支持灵活多专业,但查询时需解析,可通过预计算专业标签(如将major字段解析为标签表,建立索引)优化性能,减少实时解析开销。
  • 问:为什么匹配记录表用唯一索引而非普通索引?答:唯一索引能防止同一用户多次匹配同一职位,避免数据冗余,同时加速查询匹配记录,确保数据准确性。
  • 问:分布式环境下如何处理数据一致性?答:采用最终一致性或Saga模式,匹配记录表加乐观锁(version字段),结合分布式事务协调,确保并发场景下冲突处理。
  • 问:职位表的状态字段is_active有什么作用?答:标记职位是否有效,过滤过期或无效职位,提升搜索效率,避免用户看到已失效的职位信息。

7) 【常见坑/雷区】

  • 忽略职位表状态字段:未考虑is_active,导致过期职位被搜索,影响用户体验。
  • 专业信息用字符串存储多专业:无法灵活查询(如按专业筛选),需JSON或数组字段,且查询性能差。
  • 企业认证信息未单独表存储:直接在用户表添加认证字段,导致冗余,且无法独立验证状态。
  • 匹配记录表无唯一索引:导致重复记录,影响数据分析准确性。
  • 分布式事务未考虑:仅提及事务,未说明具体方案(如乐观锁、最终一致性),缺乏工程边界考虑。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1