Files
gpf_pet_hospital/database_schema_documentation.md

283 lines
9.9 KiB
Markdown
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.

# 宠物医院管理系统 - 数据库表结构文档
## 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 | 附件URLJSON格式 |
| 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. **枚举约束**:状态字段使用预定义的枚举值