Я хотел бы нормализовать существующую базу данных с ее данными, потому что есть один (внешний) ключ для многих таблиц для ссылки на внешний объект (сторонняя система). Поскольку мы теперь должны иметь это как объект непосредственно в нашей базе данных, я спрашиваю, как это сделать.Шаги по нормализации базы данных и ее существующих данных
Я обновляю DDL для этой базы данных и создал сценарий обновления (для DDL).
Но какой я лучший способ перенести данные?
Вся таблица, в которой используется старый ключ varchar, теперь имеет недействительный внешний ключ для этой новой сущности. Как инициализировать это новое поле. Является ли это шагом после обновления 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
являются UNICE, так что простой SQL предложит мне необходимый идентификатор NewEntity:
SELECT Key FROM NewEntity nw, Existing_n existing
WHERE nw.OldKeyThatWasJustAVarChar = existing.OldKeyThatWasJustAVarChar;
Мне нужно создать новое, потому что старые varchars не являются «родовыми». Хорошо, просто использование «не null» позже было простым намеком. Это было так просто. Много деревьев здесь ... ;-) thx – Sammy