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-parkgenerate_test_table——zteits-parknbtemp——zteits-parksys_export_temp_file——zteits-systd_b_temp_parklot——zteits-paytd_p_parking_share_order_temp——zteits-order、zteits-paytp_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 |
⚠️ 老库是生产库。上表一律走只读账号导出,禁止任何写操作。