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