table-inventory.md 6.88 KB

表清单(静态抽取自 zteits-clouds)

生成方式:sql/tools/extract_table_inventory.py,扫全仓 mapper XML 的 FROM/JOIN/INTO/UPDATE 与实体的 @Table/@TableName。 不含:只由 DDL 变更日志新增、代码从未引用的表。

1. 总量与模块归属

共 400 张表:单模块归属 387 张,被多个模块触碰 13 张。

模块 表数 说明
zteits-park 122 停车场、车位、设备、进出场
zteits-order 85 停车订单、共享订单
zteits-pay 78 账户、客户、结算
zteits-bill 55 计费规则、活动优惠、黑白名单、会员卡 —— t_* 前缀几乎全是它的
zteits-sys 32 组织、用户、权限、字典
zteits-business 11 商户/业务域
zteits-charge 4 充电桩

2. ⚠️ 跨模块表(合并后必须逐个定归属)

这 13 张表被多个模块的 SQL 直接引用。老系统靠"各模块连自己的库"侥幸隔离, 合库后它们变成真正可写,必须指定唯一归属模块,其余模块改走 parking-module-api:

表 引用它的模块 建议归属
td_b_pay_blncac zteits-order、zteits-pay zteits-pay(结算/账户)
td_b_pay_blncac_wx zteits-order、zteits-pay zteits-pay(结算/账户)
td_b_settlement_record zteits-order、zteits-pay zteits-pay(结算/账户)
td_b_settlement_share_record zteits-order、zteits-pay zteits-pay(结算/账户)
td_b_wx_config zteits-order、zteits-pay zteits-pay(结算/账户)
td_c_cust_business zteits-business、zteits-pay zteits-pay(客户)
td_c_cust_business_pic zteits-business、zteits-pay zteits-pay(客户)
td_p_parking_share_order_temp zteits-order、zteits-pay zteits-pay(结算/账户)
tp_p_eqp zteits-data-collection、zteits-glock-collection、zteits-park zteits-park
tp_p_eqp_error_record zteits-glock-collection、zteits-park zteits-park
tp_p_eqp_gateway zteits-data-collection、zteits-park zteits-park
tp_p_exception_log zteits-data-collection、zteits-glock-collection、zteits-park zteits-park
tp_p_interface_log zteits-data-collection、zteits-glock-collection、zteits-park zteits-park

3. 前缀 → 归属对照

合并六库时表名不改,靠前缀区分业务域。前缀与模块不是一一对应,此表是证据:

前缀 表数 主要归属模块
td_ 127 zteits-pay(77)、zteits-order(30)、zteits-business(11)
t_ 41 zteits-bill(39)、zteits-park(2)
tp_ 39 zteits-park(39)、zteits-data-collection(4)、zteits-glock-collection(4)
order_ 27 zteits-order(25)、zteits-business(2)
sys_ 26 zteits-sys(26)
income_ 21 zteits-order(21)
parking_ 21 zteits-park(21)
charger_ 17 zteits-park(13)、zteits-pay(3)、zteits-order(1)
tb_ 11 zteits-bill(6)、zteits-sys(4)、zteits-order(1)
park_ 10 zteits-park(8)、zteits-order(2)
eqp_ 7 zteits-park(7)
hub_ 6 zteits-park(6)
duty_ 5 zteits-park(5)
enclosed_ 4 zteits-park(4)
pay_ 3 zteits-order(3)
duration_ 3 zteits-order(3)
employee_ 3 zteits-park(3)
arrearage_ 2 zteits-order(2)
app_ 2 zteits-pay(2)
special_ 2 zteits-pay(2)
parkinglot_ 2 zteits-park(2)
sms_ 2 zteits-park(2)
rocketmq_ 2 zteits-park(2)
connector_ 1 zteits-charge(1)
equipment_ 1 zteits-charge(1)
operator_ 1 zteits-charge(1)
station_ 1 zteits-charge(1)
aliyun_ 1 zteits-sys(1)
vip_ 1 zteits-order(1)
cash_ 1 zteits-order(1)
inspection_ 1 zteits-order(1)
cust_ 1 zteits-pay(1)
car_ 1 zteits-pay(1)
outpark_ 1 zteits-park(1)
illegal_ 1 zteits-park(1)
inpark_ 1 zteits-park(1)
xc_ 1 zteits-park(1)
generate_ 1 zteits-park(1)
nbtemp_ 1 zteits-park(1)
irain_ 1 zteits-park(1)

4. 疑似测试/遗留表(迁移时确认后丢弃)

  • duty_roster_base_temp —— zteits-park
  • generate_test_table —— zteits-park
  • nbtemp —— zteits-park
  • sys_export_temp_file —— zteits-sys
  • td_b_temp_parklot —— zteits-pay
  • td_p_parking_share_order_temp —— zteits-order、zteits-pay
  • tp_p_eqp_inout_record_temp —— zteits-park

5. ⚠️ 分表族(运行期拼后缀,静态数不出真实表名)

下列 SQL 的表名后缀是调用方在运行时拼出来的,所以:

  • 真实物理表比本清单的表名多得多(每月/每年一张),SHOW TABLES 会看到一批 "代码里搜不到"的表——它们正是这里拼出来的
  • 建表/清理脚本在仓库外(或定时任务里),合库时要连着这些分表族一起搬
  • 迁移改造时不能把 ${...} 写死成某个月,要保留动态拼名逻辑
表名前缀 变量 后缀格式 涉及模块
pay_order year yyyy(DateUtil.year(startDate)) zteits-order
tp_p_eqp_inout_record monthStr yyyyMM(DateUtil.format(queryMonth,"yyyyMM")) zteits-park
tp_p_eqp_inout_record recordDateStr yyyyMM(DateUtil.date().toString("yyyyMM")) zteits-park
tp_p_eqp_inout_record tableName yyyyMM(SimpleDateFormat("yyyyMM")) zteits-park
tp_p_eqp_inout_record tableStr yyyyMM(DateUtil.format(endTime,"yyyyMM")) zteits-park

⚠️ 顺带查出的存量缺陷:ParkingLotUseStatisticDaoImpl:169 的 recordStr 用的是 DateUtil.date()(当前时间)而不是入参 endDate 所在月份。 也就是说它查"任意历史区间的路侧 20 分钟数据"时,实际只查本月那张分表 —— 跨月/历史区间查询会静默返回空或错数据。迁移时不要原样搬,要么修, 要么明确记录为已知缺陷(修它属于业务逻辑变更,需单独确认)。

6. 本抽取不能回答的问题(需只读连生产库)

问题 为什么代码答不了
六库各有哪些表(含代码从未引用的) 代码只暴露"用到过的表"
重名表的结构是否一致 需要 SHOW CREATE TABLE 逐个比对
每张表的字符集是否 utf8mb4 非 utf8mb4 的表合并后中文/emoji 会截断
dev_park / dev_charge 与正式库的差异 需要两个库各导一份结构
各表的实际行数(决定迁移窗口) 需要 information_schema.TABLES

⚠️ 老库是生产库。上表一律走只读账号导出,禁止任何写操作。