mysql如何设计医院挂号系统数据表

来源:这里教程网 时间:2026-02-28 20:08:01 作者:
设计一个医院挂号系统的MySQL数据表,需要考虑患者信息、医生信息、科室、排班、号源、挂号记录等核心模块。以下是合理的数据库结构设计,满足基本业务需求并具备扩展性。

1. 患者表(patient)

存储患者基本信息。

字段说明: id: 主键,自增 name: 姓名(VARCHAR) gender: 性别(ENUM: '男','女') phone: 手机号(唯一,用于登录或通知) id_card: 身份证号(唯一) birth_date: 出生日期 create_time: 注册时间

2. 科室表(department)

医院的科室信息,如内科、外科等。

id: 主键 dept_name: 科室名称 description: 简要描述 tel: 科室电话

3. 医生表(doctor)

医生信息,关联科室。

id: 主键 name: 医生姓名 dept_id: 所属科室ID(外键) title: 职称(如主治医师、主任医师) intro: 简介 photo_url: 头像路径(可选)

4. 排班表(schedule)

医生每日出诊安排,决定可挂号的时间段。

id: 主键 doctor_id: 医生ID(外键) dept_id: 科室ID(冗余字段,便于查询) work_date: 出诊日期(如2025-04-05) shift_type: 班次(ENUM: '上午','下午','全天') max_registration: 最大挂号人数 current_num: 当前已挂号人数(可实时更新) status: 排班状态(如正常、停诊)

5. 号源表(registration_source)

将排班细化为具体时间段和剩余号数,支持分时段挂号。

id: 主键 schedule_id: 对应排班ID time_slot: 时间段(如 08:00-09:00) quota: 号源总数 used: 已使用数量 available: 剩余数量(可计算或更新)

6. 挂号记录表(registration)

每次挂号的具体记录。

id: 主键 patient_id: 患者ID(外键) doctor_id: 医生ID dept_id: 科室ID schedule_id: 排班ID source_id: 号源ID(可选,精确到时间段) reg_time: 挂号时间 visit_date: 就诊日期 status: 挂号状态(如待就诊、已取消、已完成) order_no: 挂号单号(唯一,业务编号)

7. 用户账号表(user_account)

用于系统登录(患者、管理员、医生等)。

id: 主键 username: 登录名(可为手机号) password_hash: 密码哈希值 role: 角色(patient, doctor, admin) related_id: 关联ID(如 patient.id 或 doctor.id) 关键设计建议: 外键约束确保数据一致性,如 registration.patient_id 引用 patient.id 挂号时需检查号源 available > 0,并在插入后减一(事务处理) index 优化:在 patient.phone、schedule.doctor_id + work_date、registration.order_no 上建索引 逻辑删除可用 status 字段代替物理删除 基本上就这些,结构清晰,能支撑预约、查询、统计等常见功能。

相关推荐