我正在将一个相当大的数据库迁移到一个新的数据库设计。现有结构具有多个表,用于表示不同商店的相同数据。
例如:
`store1_tickets`
--------------------
| id | customer |
--------------------
| 1 | 29 |
--------------------
`store2_tickets`
--------------------
| id | customer |
--------------------
| 1 | 54 |
--------------------
我现在正在合并到这样的表中:
`tickets`
----------------------------------------
| id | legacy_id | store | customer |
----------------------------------------
| 1 | 1 | 1 | 29 |
| 2 | 1 | 2 | 54 |
----------------------------------------
这种模式对几个组件(客户、供应商、约会......)重复。
我正在制作一个(PHP)脚本来对 INSERT 语句执行 ETL。在转换数据时,它必须保持新工单 ID 的总和。在 INSERT 语句之后,我正在创建一个 UPDATE 语句来更改其他表中的相应 ID(例如,一旦我重新编号表,就更改表customer
中的字段。tickets
customers
我害怕运行更新(在所有插入之后)并让它进行一种级联,将customer
1 更改为 54,然后当它达到customer
54 时,将其更改为 243,依此类推。
如何正确修复 ID?票证表是唯一保留旧 ID 的表格,因为我实际上会将其用作多列 auto_increment(每个商店都必须有自己的递增票证 ID 用于显示目的)。复杂性在于有如此多的表相互引用,因此在脚本中直接更新任何 ID 都变得非常复杂。
有没有更好的方法来解决这个问题,或者有什么方法可以防止更新级联?我几乎认为从id
一个非常高的数字开始(由于记录数必须至少为 100k),然后在一切都说完之后,我可以将所有 ID 减少该值。