Files
xk-docs/docs/database/overview.md

176 lines
6.1 KiB
Markdown
Raw Normal View History

2026-07-08 15:04:42 +08:00
# 数据库总览
XK 系统使用两个 MySQL 数据库,分别存储新旧系统的数据。
## 数据库概况
| 数据库 | 表数量 | 状态 | 说明 |
|--------|--------|------|------|
| **z_xk** | 67 张 | 活跃使用 | 新库,当前核心业务表 |
| **z_o_xk** | ~100 张 | 部分使用 | 旧库Yii2 时代遗留 |
## 双库关系
```mermaid
graph TB
subgraph ZXK["z_xk 新库 67张表"]
A1[管理后台]
A2[财务结算]
A3[销售推广]
A4[特色处方]
A5[监管日志]
A6[系统配置]
A7[聊天消息]
A8[中医疾病库]
end
subgraph OXK["z_o_xk 旧库 ~100张表"]
B1[药品目录]
B2[订单系统]
B3[处方系统]
B4[用户系统]
B5[门店系统]
B6[医生系统]
B7[支付系统]
B8[物流系统]
end
API[xk-api] --> A1
API --> A2
API --> A3
API --> B1
API --> B2
API --> B3
API --> B4
API --> B5
```
::: warning 跨库约束
- 新库和旧库之间**不允许 JOIN 查询**
- 需要跨库关联时使用两步查询
- 定时任务中需要特别注意数据一致性
:::
## 表活跃状态
### z_xk (新库) — 全部活跃
所有 67 张表均在当前系统中使用。
### z_o_xk (旧库) — 部分活跃
| 状态 | 表数量 | 说明 |
|------|--------|------|
| **仍在使用** | ~40 张 | 药品、订单、处方、用户、门店、医生、支付等核心表 |
| **已废弃** | ~60 张 | 旧配置表、旧 IM 表、旧日志表、旧迁移表等 |
### 仍在使用的核心表 (z_o_xk)
| 表名 | 说明 | 使用方 |
|------|------|--------|
| `yii_drug` | 药品目录 | xk-api, xk-admin |
| `yii_drug_store_relations` | 药品-门店定价 | xk-api, xk-admin |
| `yii_drug_categories` | 药品分类 | xk-api, xk-admin |
| `yii_drug_nature` | 药品配伍 | xk-api |
| `yii_product_order` | 产品订单 | xk-api, xk-admin |
| `yii_product_order_items` | 订单明细 | xk-api, xk-admin |
| `yii_register` | 挂号订单 | xk-api, xk-admin |
| `yii_prescription` | 主处方表 | xk-api, xk-admin, xk-doctor-wx |
| `yii_prescription_chinese` | 中药处方 | xk-api, xk-doctor-wx |
| `yii_prescription_west` | 西药处方 | xk-api, xk-doctor-wx |
| `yii_prescription_granular` | 颗粒处方 | xk-api, xk-doctor-wx |
| `yii_prescription_server` | 服务包处方 | xk-api, xk-doctor-wx |
| `yii_user` | 用户表 | xk-api, xk-client-wx |
| `yii_user_patient` | 就诊人 | xk-api, xk-client-wx |
| `yii_store` | 门店表 | xk-api, xk-admin, xk-doctor-wx |
| `yii_doctor_info` | 医生信息 | xk-api, xk-admin, xk-doctor-wx |
| `yii_doctor_service` | 医生服务设置 | xk-api, xk-doctor-wx |
| `yii_pharmacist_info` | 药师信息 | xk-api, xk-admin, xk-doctor-wx |
| `yii_service_user` | 服务用户 | xk-api |
| `yii_payment_order` | 咨询支付 | xk-api |
| `yii_payment_product_order` | 产品支付 | xk-api |
| `yii_payment_register` | 挂号支付 | xk-api |
| `yii_ledger` | 分账记录 | xk-api, xk-admin |
| `yii_fund_water` | 资金流水 | xk-api, xk-admin |
| `yii_cash_account` | 提现账户 | xk-api, xk-admin |
| `yii_cash_apply` | 提现申请 | xk-api, xk-admin |
| `yii_reconciliation` | 对账记录 | xk-api, xk-admin |
| `yii_order` | 咨询订单 | xk-api |
| `yii_order_refund` | 咨询退款 | xk-api |
| `yii_product_order_refund` | 产品退款 | xk-api |
| `yii_register_refund` | 挂号退款 | xk-api |
| `yii_transfer_prescription` | 转诊处方 | xk-api, xk-admin |
| `yii_chinese_recipe` | 中药处方笺 | xk-api |
| `yii_west_recipe` | 西药处方笺 | xk-api |
| `yii_granular_recipe` | 颗粒处方笺 | xk-api |
| `yii_im_message` | IM 消息 | xk-api |
| `yii_im_message_session` | IM 会话 | xk-api |
| `yii_examine_log` | 药师审核记录 | xk-api |
| `yii_reviewer` | 审方人 | xk-api |
| `yii_region` | 地区 | xk-api, xk-admin |
| `yii_express_nos` | 快递单号 | xk-api |
| `yii_express_companies` | 快递公司 | xk-api, xk-admin |
## 数据库设计规范
### 表命名
- 新表:`xk_` 前缀 + 业务域 + 功能名(如 `xk_salesperson_commission_record`
- 旧表:`yii_` 前缀Yii2 框架约定)
### 字段命名
- 主键:`id`(自增 bigint
- 时间戳:`created_at`, `updated_at`
- 软删除:`deleted_at`
- 外键:`{关联表名}_id`(如 `store_id`, `user_id`
- 状态字段:`status`(使用枚举值)
### 索引设计
- 主键索引:`id`
- 唯一索引:`uk_` 前缀(如 `uk_order_item_sp_type`
- 普通索引:`idx_` 前缀(如 `idx_store_id`
- 联合索引:多字段组合(如 `idx_anchor_step`
### 数据类型
- 金额:`decimal(10,2)``decimal(12,2)`
- 大文本:`text``mediumtext`
- JSON`json``text`(存储 JSON 字符串)
- 状态/类型:`tinyint``int`
- 手机号:`varchar(20)`
- 银行卡:`varchar(30)`
## ER 关系图
### 核心业务关系
```mermaid
erDiagram
yii_user ||--o{ yii_user_patient : "拥有"
yii_user ||--o{ yii_product_order : "下单"
yii_user ||--o{ yii_register : "挂号"
yii_user ||--o{ yii_order : "问诊"
yii_store ||--o{ yii_product_order : "归属"
yii_store ||--o{ yii_register : "归属"
yii_store ||--o{ yii_drug_store_relations : "定价"
yii_doctor_info ||--o{ yii_prescription : "开方"
yii_doctor_info ||--o{ yii_order : "接诊"
yii_doctor_info ||--o{ yii_register : "接诊"
yii_prescription ||--o{ yii_prescription_chinese : "中药"
yii_prescription ||--o{ yii_prescription_west : "西药"
yii_prescription ||--o{ yii_prescription_granular : "颗粒"
yii_product_order ||--o{ yii_product_order_items : "明细"
yii_product_order ||--o{ yii_payment_product_order : "支付"
yii_product_order ||--o{ yii_product_order_refund : "退款"
yii_product_order ||--o{ yii_ledger : "分账"
yii_register ||--o{ yii_payment_register : "支付"
yii_register ||--o{ yii_register_refund : "退款"
xk_clinic_salesperson ||--o{ xk_salesperson_commission_record : "佣金"
xk_salesperson_commission_record ||--o{ xk_salesperson_settlement_record : "结算"
xk_salesperson_settlement ||--o{ xk_salesperson_settlement_record : "包含"
```