引入
做父子表的架构是为了后续能够有较高的扩张性,维护性,安全性。把公用数据放在父表,再把差异化的数据放在子表,方便后续能够复用父表。
介绍如何快速把数据批量的插入到MySQL父子表中,而且父子表的数据是一一对应的。
难点
批量插入父子表的难点在于,当你拿到一条完整的数据,你要找到一个参数或者一个组合,来确定子表跟父表的对应关系。
而且因为是批量的原因,(以PHP为例)你不能用foreach语句一条一条插入,你要批量批量的插,而批量插入子表的时候,你需要把跟父表对应关系的数据插进来,所以这个对应关系的数据要预先写入。
解决宗旨
- 减少SQL运行次数
- 解决父子对应关系
- 尽量把循环操作放在PHP里做
具体方法
1 | 抽出差异化数据 |
(以PHP为例)
看到流程图,流程可以这么操作:
- 先从数据源抽出数据(或者你通过其他源头拿到原始数据),确定一个组合或者字段来保证每一条数据是唯一可以找的,然后保存到
TransferArr
数组中 - 从
TransferArr
数组中抽出公用数据,保存在ParentArr
数组中,把ParentArr
数据插入到父表
数据表中。 - 插入后,通过
SELECT
从父表中拿出刚刚数据的ID,抽出来。 - 然后通过第一步用于确定每一条数据唯一的字段,去用PHP循环,给每一条数据配上数据在
父表的ID
,外加TransferArr
中的差异化数据,组装成ChildArr
数组,把数据插入到子表
数据表中。
Done~