by80: 规范数据范围删除需求文档
将 BYBSY80 数据删除需求升级为可复用的标准处理方案,补充执行边界、全库字段扫描、删除顺序、校验规则和结果输出要求。 Made-with: Cursor
This commit is contained in:
217
docs/com-bybsy80-data-imgration-del.md
Normal file
217
docs/com-bybsy80-data-imgration-del.md
Normal file
@@ -0,0 +1,217 @@
|
||||
|
||||
# 公司名称:宝应博森元
|
||||
|
||||
## mysql数据库配置信息
|
||||
|
||||
host ip: 123.56.214.80
|
||||
datasource:
|
||||
name: yangtangyoupin
|
||||
username: yangtangyoupin
|
||||
password: 5Fn8eWrbYFtAhCZw
|
||||
|
||||
---
|
||||
|
||||
## 数据删除任务
|
||||
|
||||
- **用户id数据范围**:
|
||||
93257
|
||||
93255
|
||||
93247
|
||||
93246
|
||||
93245
|
||||
93244
|
||||
93243
|
||||
93242
|
||||
93240
|
||||
93237
|
||||
93236
|
||||
93235
|
||||
93234
|
||||
93232
|
||||
93231
|
||||
93230
|
||||
93229
|
||||
93227
|
||||
93226
|
||||
93225
|
||||
93224
|
||||
93223
|
||||
93222
|
||||
93221
|
||||
93220
|
||||
93219
|
||||
93215
|
||||
93210
|
||||
93209
|
||||
93208
|
||||
93206
|
||||
93205
|
||||
93204
|
||||
93203
|
||||
93202
|
||||
93201
|
||||
93199
|
||||
93198
|
||||
93197
|
||||
93196
|
||||
93195
|
||||
93191
|
||||
93188
|
||||
93181
|
||||
93180
|
||||
93178
|
||||
93176
|
||||
93175
|
||||
93174
|
||||
93173
|
||||
93172
|
||||
93165
|
||||
93162
|
||||
93158
|
||||
93154
|
||||
93151
|
||||
93149
|
||||
93141
|
||||
93099
|
||||
93098
|
||||
93096
|
||||
93095
|
||||
93079
|
||||
93076
|
||||
93063
|
||||
93041
|
||||
93003
|
||||
93001
|
||||
92959
|
||||
92951
|
||||
92885
|
||||
92884
|
||||
92880
|
||||
92850
|
||||
92792
|
||||
92754
|
||||
92671
|
||||
91757
|
||||
|
||||
---
|
||||
|
||||
## 需求目标
|
||||
|
||||
删除数据库中“用户id数据范围”内用户在所有相关表中的业务数据,保留不在该范围内的其他用户及其业务数据。
|
||||
|
||||
本文件可作为后续同类“按用户范围删除数据”需求的标准处理方案文档。执行时只需替换公司信息、数据库连接信息和用户 ID 范围。
|
||||
|
||||
## 执行边界
|
||||
|
||||
- **删除方向**:删除用户 ID 范围内的数据,保留范围外数据。
|
||||
- **表范围**:不只处理显式列出的表,需要扫描目标库所有表结构,找出用户关联字段后统一处理。
|
||||
- **字段范围**:重点处理以下用户关联字段:
|
||||
- `uid`
|
||||
- `user_id`
|
||||
- `seller_id`
|
||||
- `buyer_id`
|
||||
- `out_user_id`
|
||||
- `bargain_user_id`
|
||||
- `pay_uid`
|
||||
- 其他明确表示用户 ID 的字段
|
||||
- **核心用户表**:
|
||||
- `wa_users.id`
|
||||
- `eb_user.uid`
|
||||
- **特殊字段边界**:
|
||||
- `eb_user.spread_uid` 表示“当前用户的推荐人”。
|
||||
- 当 `spread_uid` 命中待删除用户 ID 时,不删除这些范围外用户,也不默认清空该字段。
|
||||
- `spread_uid` 仅作为预检报告项,除非需求另行明确要求处理。
|
||||
|
||||
## 预检要求
|
||||
|
||||
执行删除前必须先做只读预检:
|
||||
|
||||
1. 确认连接的数据库为目标库 `yangtangyoupin`。
|
||||
2. 扫描 `INFORMATION_SCHEMA.COLUMNS`,找出所有用户关联字段。
|
||||
3. 对每个命中的表字段统计目标用户 ID 的命中行数。
|
||||
4. 单独报告 `eb_user.spread_uid` 命中数量,但不纳入删除范围。
|
||||
5. 输出清理前基线统计,作为最终删除数量核对依据。
|
||||
|
||||
参考字段扫描范围:
|
||||
|
||||
```sql
|
||||
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND (
|
||||
COLUMN_NAME IN (
|
||||
'uid',
|
||||
'user_id',
|
||||
'seller_id',
|
||||
'buyer_id',
|
||||
'out_user_id',
|
||||
'bargain_user_id',
|
||||
'pay_uid',
|
||||
'spread_uid'
|
||||
)
|
||||
OR COLUMN_NAME LIKE '%user%'
|
||||
OR COLUMN_NAME LIKE '%uid%'
|
||||
OR COLUMN_NAME LIKE '%seller%'
|
||||
OR COLUMN_NAME LIKE '%buyer%'
|
||||
)
|
||||
ORDER BY TABLE_NAME, COLUMN_NAME;
|
||||
```
|
||||
|
||||
## 删除规则
|
||||
|
||||
### `wa_*` 相关表
|
||||
|
||||
删除用户 ID 范围内的相关记录:
|
||||
|
||||
- `wa_users`:删除 `id` 在用户 ID 范围内的记录。
|
||||
- `wa_order`:删除 `seller_id` 或 `buyer_id` 在用户 ID 范围内的订单。同一订单只删除一次。
|
||||
- `wa_merchandise`:删除 `user_id` 在用户 ID 范围内的寄售商品。
|
||||
- `wa_selfbonus_log`:删除 `user_id` 在用户 ID 范围内的记录。
|
||||
- `wa_sharebonus_log`:删除 `user_id` 在用户 ID 范围内的记录。
|
||||
- `wa_coupon_log`:删除 `user_id` 在用户 ID 范围内的记录。
|
||||
- `wa_address`、`wa_alipay`、`wa_bank`、`wa_money_log`、`wa_withdraw` 等存在 `user_id` 字段的表:删除 `user_id` 在用户 ID 范围内的记录。
|
||||
|
||||
### `eb_*` 相关表
|
||||
|
||||
删除用户 ID 范围内的相关记录:
|
||||
|
||||
- `eb_user`:删除 `uid` 在用户 ID 范围内的记录。
|
||||
- `eb_user_integral_record`:删除 `uid` 在用户 ID 范围内的记录。
|
||||
- `eb_user_address`、`eb_user_bill`、`eb_user_brokerage_record`、`eb_user_experience_record`、`eb_user_extract`、`eb_user_level`、`eb_user_recharge`、`eb_user_sign`、`eb_user_token`、`eb_user_visit_record` 等存在 `uid` 字段的用户表:删除 `uid` 在用户 ID 范围内的记录。
|
||||
- `eb_store_order`、`eb_store_cart`、`eb_store_coupon_user`、`eb_store_pink`、`eb_store_product_log`、`eb_store_product_relation`、`eb_store_product_reply` 等存在 `uid` / `pay_uid` / `bargain_user_id` 的业务表:删除相关字段在用户 ID 范围内的记录。
|
||||
- `eb_pay_component_order.out_user_id` 等明确表示用户 ID 的字段:删除字段值在用户 ID 范围内的记录。
|
||||
|
||||
### 其他相关表
|
||||
|
||||
- `t_platform_account.user_id` 等非 `wa_*` / `eb_*` 表:如字段语义明确为用户 ID,删除字段值在用户 ID 范围内的记录。
|
||||
- 仅字段名包含 `username`、`user_phone`、`user_address` 等非用户 ID 语义字段时,不按用户 ID 范围删除。
|
||||
|
||||
## 执行顺序
|
||||
|
||||
1. 先删除业务子表和日志表数据。
|
||||
2. 再删除订单、商品、积分、账单、访问记录等用户关联数据。
|
||||
3. 最后删除核心用户表:
|
||||
- `wa_users WHERE id IN (...)`
|
||||
- `eb_user WHERE uid IN (...)`
|
||||
4. 不处理 `eb_user.spread_uid IN (...)` 的范围外用户。
|
||||
|
||||
## 校验要求
|
||||
|
||||
删除完成后必须逐表校验:
|
||||
|
||||
- 所有纳入删除范围的 `uid`、`user_id`、`seller_id`、`buyer_id`、`out_user_id`、`bargain_user_id`、`pay_uid` 等字段,对目标用户 ID 的命中数应为 `0`。
|
||||
- `wa_users.id` 在目标用户 ID 范围内的记录数应为 `0`。
|
||||
- `eb_user.uid` 在目标用户 ID 范围内的记录数应为 `0`。
|
||||
- `wa_order` 中 `seller_id` 或 `buyer_id` 在目标用户 ID 范围内的记录数应为 `0`。
|
||||
- `eb_user.spread_uid` 命中范围内 ID 的记录可以继续存在,作为保留边界说明输出。
|
||||
|
||||
## 输出要求
|
||||
|
||||
执行完成后输出以下结果:
|
||||
|
||||
- 每张表清理前命中数。
|
||||
- 每张表实际删除数。
|
||||
- 每张表清理后剩余命中数。
|
||||
- `eb_user.spread_uid` 的保留说明。
|
||||
- 最终结论:是否所有纳入删除范围的相关数据均已清零。
|
||||
|
||||
Reference in New Issue
Block a user