# 宠物医院管理系统 - 数据库表结构文档 ## 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 ## 数据完整性约束 1. **外键约束**:确保所有外键引用的有效性 2. **软删除**:使用deleted字段实现软删除,保留历史数据 3. **时间戳**:所有表都有create_time和update_time字段 4. **默认值**:合理设置字段默认值(如status默认为1) 5. **枚举约束**:状态字段使用预定义的枚举值