宠物医院管理系统 - 数据库表结构文档
1. 用户表 (user)
| 字段名 |
类型 |
说明 |
| id |
BIGINT |
主键,自增长 |
| username |
VARCHAR(50) |
用户名,唯一 |
| phone |
VARCHAR(20) |
手机号 |
| email |
VARCHAR(100) |
邮箱 |
| password |
VARCHAR(255) |
密码(加密存储) |
| role |
VARCHAR(20) |
角色(ADMIN/DOCTOR/CUSTOMER) |
| status |
INT |
状态(1-启用,0-禁用) |
| avatar |
VARCHAR(255) |
头像URL |
| create_time |
TIMESTAMP |
创建时间 |
| update_time |
TIMESTAMP |
更新时间 |
| deleted |
INT |
删除标记(0-未删除,1-已删除) |
2. 医生表 (doctor)
| 字段名 |
类型 |
说明 |
| id |
BIGINT |
主键,自增长 |
| name |
VARCHAR(50) |
医生姓名 |
| department |
VARCHAR(50) |
所属科室 |
| title |
VARCHAR(50) |
职称 |
| phone |
VARCHAR(20) |
联系电话 |
| email |
VARCHAR(100) |
邮箱 |
| avatar |
VARCHAR(255) |
头像URL |
| status |
INT |
状态(1-启用,0-禁用) |
| create_time |
TIMESTAMP |
创建时间 |
| update_time |
TIMESTAMP |
更新时间 |
| deleted |
INT |
删除标记 |
3. 宠物表 (pet)
| 字段名 |
类型 |
说明 |
| id |
BIGINT |
主键,自增长 |
| owner_id |
BIGINT |
主人ID(外键关联user表) |
| name |
VARCHAR(50) |
宠物名称 |
| species |
VARCHAR(50) |
物种(猫/狗等) |
| breed |
VARCHAR(100) |
品种 |
| gender |
VARCHAR(10) |
性别(MALE/FEMALE) |
| birthday |
DATE |
生日 |
| weight |
DOUBLE |
体重 |
| photo |
VARCHAR(255) |
照片URL |
| remark |
TEXT |
备注 |
| create_time |
TIMESTAMP |
创建时间 |
| update_time |
TIMESTAMP |
更新时间 |
| deleted |
INT |
删除标记 |
4. 预约表 (appointment)
| 字段名 |
类型 |
说明 |
| id |
BIGINT |
主键,自增长 |
| customer_id |
BIGINT |
顾客ID(外键关联user表) |
| pet_id |
BIGINT |
宠物ID(外键关联pet表) |
| doctor_id |
BIGINT |
医生ID(外键关联doctor表,可空) |
| department |
VARCHAR(50) |
科室 |
| appointment_date |
DATE |
预约日期 |
| time_slot |
VARCHAR(20) |
预约时段(如:09:00-10:00) |
| status |
VARCHAR(20) |
状态(PENDING/CONFIRMED/ARRIVED/CANCELLED/NO_SHOW) |
| remark |
TEXT |
备注 |
| cancel_time |
TIMESTAMP |
取消时间 |
| create_time |
TIMESTAMP |
创建时间 |
| update_time |
TIMESTAMP |
更新时间 |
| deleted |
INT |
删除标记 |
5. 就诊记录表 (visit)
| 字段名 |
类型 |
说明 |
| id |
BIGINT |
主键,自增长 |
| appointment_id |
BIGINT |
预约ID(外键关联appointment表,可空) |
| customer_id |
BIGINT |
顾客ID(外键关联user表) |
| pet_id |
BIGINT |
宠物ID(外键关联pet表) |
| doctor_id |
BIGINT |
医生ID(外键关联doctor表) |
| symptoms |
TEXT |
症状描述 |
| diagnosis |
TEXT |
诊断结果 |
| treatment_plan |
TEXT |
治疗方案 |
| status |
VARCHAR(20) |
状态(IN_PROGRESS/COMPLETED/CANCELLED) |
| total_amount |
DECIMAL(10,2) |
总金额 |
| payment_status |
VARCHAR(20) |
支付状态(UNPAID/PAID/REFUNDING/REFUNDED) |
| payment_method |
VARCHAR(20) |
支付方式(OFFLINE/ALIPAY/WECHAT) |
| payment_time |
TIMESTAMP |
支付时间 |
| start_time |
TIMESTAMP |
开始时间 |
| end_time |
TIMESTAMP |
结束时间 |
| create_time |
TIMESTAMP |
创建时间 |
| update_time |
TIMESTAMP |
更新时间 |
| deleted |
INT |
删除标记 |
6. 处方表 (prescription)
| 字段名 |
类型 |
说明 |
| id |
BIGINT |
主键,自增长 |
| visit_id |
BIGINT |
就诊ID(外键关联visit表) |
| doctor_id |
BIGINT |
医生ID(外键关联doctor表) |
| customer_id |
BIGINT |
顾客ID(外键关联user表) |
| total_amount |
DECIMAL(10,2) |
总金额 |
| status |
VARCHAR(20) |
状态(DRAFT/SUBMITTED/ISSUED/VOIDED) |
| remark |
TEXT |
备注 |
| create_time |
TIMESTAMP |
创建时间 |
| update_time |
TIMESTAMP |
更新时间 |
| deleted |
INT |
删除标记 |
7. 处方明细表 (prescription_item)
| 字段名 |
类型 |
说明 |
| id |
BIGINT |
主键,自增长 |
| prescription_id |
BIGINT |
处方ID(外键关联prescription表) |
| drug_id |
BIGINT |
药品ID(外键关联drug表) |
| quantity |
INT |
数量 |
| dosage |
VARCHAR(100) |
用量 |
| frequency |
VARCHAR(50) |
频次 |
| duration |
VARCHAR(50) |
疗程 |
| usage_instructions |
TEXT |
用法说明 |
| create_time |
TIMESTAMP |
创建时间 |
| update_time |
TIMESTAMP |
更新时间 |
| deleted |
INT |
删除标记 |
8. 药品表 (drug)
| 字段名 |
类型 |
说明 |
| id |
BIGINT |
主键,自增长 |
| name |
VARCHAR(100) |
药品名称 |
| category |
VARCHAR(50) |
分类 |
| manufacturer |
VARCHAR(100) |
生产厂家 |
| specification |
VARCHAR(100) |
规格 |
| unit_price |
DECIMAL(10,2) |
单价 |
| stock_quantity |
INT |
库存数量 |
| unit |
VARCHAR(20) |
单位 |
| status |
INT |
状态(1-启用,0-禁用) |
| create_time |
TIMESTAMP |
创建时间 |
| update_time |
TIMESTAMP |
更新时间 |
| deleted |
INT |
删除标记 |
9. 订单表 (order_info)
| 字段名 |
类型 |
说明 |
| id |
BIGINT |
主键,自增长 |
| visit_id |
BIGINT |
就诊ID(外键关联visit表,可空) |
| customer_id |
BIGINT |
顾客ID(外键关联user表) |
| amount |
DECIMAL(10,2) |
金额 |
| status |
VARCHAR(20) |
状态(UNPAID/PAID/CANCELLED/REFUNDING/REFUNDED) |
| payment_method |
VARCHAR(20) |
支付方式(OFFLINE/ALIPAY/WECHAT) |
| payment_time |
TIMESTAMP |
支付时间 |
| remark |
TEXT |
备注 |
| create_time |
TIMESTAMP |
创建时间 |
| update_time |
TIMESTAMP |
更新时间 |
| deleted |
INT |
删除标记 |
10. 病历表 (medical_record)
| 字段名 |
类型 |
说明 |
| id |
BIGINT |
主键,自增长 |
| visit_id |
BIGINT |
就诊ID(外键关联visit表) |
| record_type |
VARCHAR(50) |
记录类型(CHECKUP/EXAMINATION/DIAGNOSIS/TREATMENT) |
| content |
TEXT |
内容 |
| attachment_urls |
TEXT |
附件URL(JSON格式) |
| doctor_id |
BIGINT |
医生ID(外键关联doctor表) |
| create_time |
TIMESTAMP |
创建时间 |
| update_time |
TIMESTAMP |
更新时间 |
| deleted |
INT |
删除标记 |
11. 消息表 (message)
| 字段名 |
类型 |
说明 |
| id |
BIGINT |
主键,自增长 |
| sender_id |
BIGINT |
发送者ID(外键关联user表,可空) |
| receiver_id |
BIGINT |
接收者ID(外键关联user表) |
| content |
TEXT |
消息内容 |
| type |
VARCHAR(20) |
类型(NOTICE/CHAT) |
| status |
VARCHAR(20) |
状态(UNREAD/READ) |
| create_time |
TIMESTAMP |
创建时间 |
| update_time |
TIMESTAMP |
更新时间 |
| deleted |
INT |
删除标记 |
12. 公告表 (notice)
| 字段名 |
类型 |
说明 |
| id |
BIGINT |
主键,自增长 |
| title |
VARCHAR(200) |
标题 |
| content |
TEXT |
内容 |
| publisher_id |
BIGINT |
发布者ID(外键关联user表) |
| publish_time |
TIMESTAMP |
发布时间 |
| status |
INT |
状态(1-发布,0-撤销) |
| create_time |
TIMESTAMP |
创建时间 |
| update_time |
TIMESTAMP |
更新时间 |
| deleted |
INT |
删除标记 |
13. 报表表 (report)
| 字段名 |
类型 |
说明 |
| id |
BIGINT |
主键,自增长 |
| report_type |
VARCHAR(50) |
报表类型(REVENUE/CUSTOMER/PET/DRUG) |
| report_data |
JSON |
报表数据(JSON格式) |
| period_start |
DATE |
统计周期开始 |
| period_end |
DATE |
统计周期结束 |
| generated_by |
BIGINT |
生成者ID(外键关联user表) |
| create_time |
TIMESTAMP |
创建时间 |
| update_time |
TIMESTAMP |
更新时间 |
| deleted |
INT |
删除标记 |
14. 入库记录表 (stock_in)
| 字段名 |
类型 |
说明 |
| id |
BIGINT |
主键,自增长 |
| drug_id |
BIGINT |
药品ID(外键关联drug表) |
| quantity |
INT |
数量 |
| unit_price |
DECIMAL(10,2) |
单价 |
| supplier |
VARCHAR(100) |
供应商 |
| operator_id |
BIGINT |
操作员ID(外键关联user表) |
| remark |
TEXT |
备注 |
| create_time |
TIMESTAMP |
创建时间 |
| update_time |
TIMESTAMP |
更新时间 |
| deleted |
INT |
删除标记 |
15. 出库记录表 (stock_out)
| 字段名 |
类型 |
说明 |
| id |
BIGINT |
主键,自增长 |
| drug_id |
BIGINT |
药品ID(外键关联drug表) |
| quantity |
INT |
数量 |
| unit_price |
DECIMAL(10,2) |
单价 |
| purpose |
VARCHAR(100) |
用途(销售/损耗等) |
| operator_id |
BIGINT |
操作员ID(外键关联user表) |
| remark |
TEXT |
备注 |
| create_time |
TIMESTAMP |
创建时间 |
| update_time |
TIMESTAMP |
更新时间 |
| deleted |
INT |
删除标记 |
16. 疫苗接种记录表 (vaccine_record)
| 字段名 |
类型 |
说明 |
| id |
BIGINT |
主键,自增长 |
| pet_id |
BIGINT |
宠物ID(外键关联pet表) |
| vaccine_name |
VARCHAR(100) |
疫苗名称 |
| dose_number |
INT |
剂次 |
| injection_date |
DATE |
接种日期 |
| next_appointment_date |
DATE |
下次预约日期 |
| doctor_id |
BIGINT |
医生ID(外键关联doctor表) |
| remark |
TEXT |
备注 |
| create_time |
TIMESTAMP |
创建时间 |
| update_time |
TIMESTAMP |
更新时间 |
| deleted |
INT |
删除标记 |
主要业务流程关系
1. 预约流程
Customer → Appointment → Visit → Prescription → Order
2. 库存管理
Drug ↔ StockIn/StockOut
3. 病历管理
Visit → MedicalRecord
4. 疫苗管理
Pet → VaccineRecord
5. 消息通知
User ↔ Message/Notice
数据完整性约束
- 外键约束:确保所有外键引用的有效性
- 软删除:使用deleted字段实现软删除,保留历史数据
- 时间戳:所有表都有create_time和update_time字段
- 默认值:合理设置字段默认值(如status默认为1)
- 枚举约束:状态字段使用预定义的枚举值