【发布时间】:2014-12-02 21:02:32
【问题描述】:
我想用其数据规范化现有数据库,因为在许多表上都有一个(外部)键来引用外部实体(第 3 方系统)。由于我们现在需要将它作为一个实体直接存在于我们的数据库中,所以我在问我,如何做到这一点。
我更新了该数据库的 DDL 并创建了一个更新脚本(用于 DDL)。
但是我迁移数据的最佳方式是什么?
所有使用旧 varchar-key 的表现在都有一个指向该新实体的不可为空的外键。如何初始化这个新字段。这是在更新 DDL 之后的步骤(这对于非空字段是否可行?)?或者这是否必须在同时迁移 DDL(以及如何迁移)时完成?
示例:
Table NewEntity
+ Key (autogenerated)
+ SomeInfo
+ OldKeyThatWasJustAVarchar
Table Existing_1
- Key (autogenerated)
- SomeInfo_1
- SomeInfo_n
- OldKeyThatWasJustAVarchar ('logical' Reference)
+ NewForeignKeyToNewTable
Table Existing_2
- Key (autogenerated)
- ExampleFieldAnalogOtherTables
- OldKeyThatWasJustAVarchar ('logical' Reference)
+ NewForeignKeyToNewTable
所有OldKeyThatWasJustAVarchar 的内容都很统一,所以一个简单的 SQL 就可以为我提供所需的 NewEntity 的 ID:
SELECT Key FROM NewEntity nw, Existing_n existing
WHERE nw.OldKeyThatWasJustAVarChar = existing.OldKeyThatWasJustAVarChar;
【问题讨论】:
标签: sql database-migration ddl database-normalization