Files
integral-shop/docs/com-bybsy80-data-imgration-del.md
danaisuiyuan e181d65295 by80: 规范数据范围删除需求文档
将 BYBSY80 数据删除需求升级为可复用的标准处理方案,补充执行边界、全库字段扫描、删除顺序、校验规则和结果输出要求。

Made-with: Cursor
2026-04-27 19:05:24 +08:00

5.8 KiB
Raw Blame History

公司名称:宝应博森元

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. 输出清理前基线统计,作为最终删除数量核对依据。

参考字段扫描范围:

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_idbuyer_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_addresswa_alipaywa_bankwa_money_logwa_withdraw 等存在 user_id 字段的表:删除 user_id 在用户 ID 范围内的记录。

eb_* 相关表

删除用户 ID 范围内的相关记录:

  • eb_user:删除 uid 在用户 ID 范围内的记录。
  • eb_user_integral_record:删除 uid 在用户 ID 范围内的记录。
  • eb_user_addresseb_user_billeb_user_brokerage_recordeb_user_experience_recordeb_user_extracteb_user_leveleb_user_rechargeeb_user_signeb_user_tokeneb_user_visit_record 等存在 uid 字段的用户表:删除 uid 在用户 ID 范围内的记录。
  • eb_store_ordereb_store_carteb_store_coupon_usereb_store_pinkeb_store_product_logeb_store_product_relationeb_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 范围内的记录。
  • 仅字段名包含 usernameuser_phoneuser_address 等非用户 ID 语义字段时,不按用户 ID 范围删除。

执行顺序

  1. 先删除业务子表和日志表数据。
  2. 再删除订单、商品、积分、账单、访问记录等用户关联数据。
  3. 最后删除核心用户表:
    • wa_users WHERE id IN (...)
    • eb_user WHERE uid IN (...)
  4. 不处理 eb_user.spread_uid IN (...) 的范围外用户。

校验要求

删除完成后必须逐表校验:

  • 所有纳入删除范围的 uiduser_idseller_idbuyer_idout_user_idbargain_user_idpay_uid 等字段,对目标用户 ID 的命中数应为 0
  • wa_users.id 在目标用户 ID 范围内的记录数应为 0
  • eb_user.uid 在目标用户 ID 范围内的记录数应为 0
  • wa_orderseller_idbuyer_id 在目标用户 ID 范围内的记录数应为 0
  • eb_user.spread_uid 命中范围内 ID 的记录可以继续存在,作为保留边界说明输出。

输出要求

执行完成后输出以下结果:

  • 每张表清理前命中数。
  • 每张表实际删除数。
  • 每张表清理后剩余命中数。
  • eb_user.spread_uid 的保留说明。
  • 最终结论:是否所有纳入删除范围的相关数据均已清零。