数据库融合问题以及解决方案

x33g5p2x  于2022-04-28 转载在 其他  
字(1.8k)|赞(0)|评价(0)|浏览(515)

一 需求

需要将两个高度相似的数据库(z、i)融合到一个数据库(z),这两个数据库之前是通过 Java 代码进行数据同步。融合过程中会遇到四大问题需要解决,下面通过举例的方式进行说明。

二 z 的 v 表

| <br>ID<br> | <br>公共字段<br> | <br>pay_state<br> | <br>pay_money<br> | <br>CUSTOMER_ID<br> | <br>VISIT_PRODUCT<br> |
| <br>1<br> | <br>XXXXXXX<br> | <br>表示结算状态<br> | <br>200.71684580000002<br> | <br>2c908b607255e61201725605d23b022d<br> | <br>优甲乐<br> |
| <br>2<br> | <br>YYYYYYY<br> | <br>结算状态:0待结算1已结算<br> | <br>生成数据算法 和 i 数据库不一致。<br> | <br>客户表的ID<br> | <br>药品的名称<br> |

三 i 的 v 表

| <br>ID<br> | <br>公共字段<br> | <br>pay_state<br> | <br>pay_money<br> | <br>CUSTOMER_ID<br> | <br>VISIT_PRODUCT<br> | <br>FINAL_PAY_MONEY<br> |
| <br>2<br> | <br>YYYYYYY<br> | <br>表示结算状态<br> | 生成数据算法 和 z 数据库不一致。 | <br>医院表的ID<br> | <br>药品表的ID<br> | <br>最终结算金额<br> |
| <br>3<br> | <br>ZZZZZZ<br> | <br>结算状态:-1-作废 0-待提交 1-待审核 2-已拒绝 3-待结算 4-已结算<br> | <br>200<br> | <br>2c908b607255e612017255e73fd50001<br> | <br>2c918a6772281f460172500a7df2238f<br> | <br>89565<br> |

四 问题分析

1 需要将 I 库独有的字段进行融合

I 数据库的 FINAL_PAY_MONEY 是它独有的字段,这种字段的数据结构和数值需要融合到 z 库 的 v 表。

2 字段名称一致,含义最终指向同一实体

I 的 CUSTOMER_ID 和 VISIT_PRODUCT 同 z 的 CUSTOMER_ID 和 VISIT_PRODUCT 最终都是要和医院发生关系,用不同的业务数据形式表示同一业务实质。这类情况只需要修改 ctrans 和 imms 的业务代码,并且用数据范围大的业务值替换数据范围小的业务值。例如:CUSTOMER_ID 取 zbsale的业务值,VISIT_PRODUCT 取 imms 的业务值。

3 字段名称一致,含义不一致

pay_state 和 pay_money 在这两个库都存在,含义不一致。

pay_state 在 c 的业务代码没用到,这个影响不大,可不处理。

pay_money 可在 i 修改字段为 imms_pay_money,并修改相关业务,该数据的结构和值要同步到 z。

4 数据缺失问题

i 数据库的第3条记录在 z库不存在,这部分数据需要 z 中加上。第 4 个问题要调整业务代码和升级脚本,并且要在第3个问题解决后才能开始解决。

相关文章