Обновление
Я забыл рассмотреть вопрос об отчетности, поднятый ОП (Спасибо Марк Баннистер ). Вот пример того, как бороться с отчетностью.
В начале (до переноса данных) в отчете для создания имени, страны и возраста пользователей использовался следующий SQL (более или менее):
-- This query orders users by their Lastname
SELECT Lastname, Firstname, Age, Country FROM tableA order by Lastname;
Связанные с именем поля больше не присутствуют в tableA
после переноса данных. Нам нужно выполнить соединение с tableB
, чтобы получить информацию. Запрос теперь изменяется на:
SELECT b.Lastname, b.Firstname, a.Country, a.Age FROM tableA a, tableB b
WHERE a.name = b.id ORDER BY b.Lastname;
Я не знаю, как именно вы генерируете свой отчет, но это суть изменений, которые вы должны будете сделать, чтобы ваши отчеты снова заработали.
Оригинальный ответ
Рассмотрим ситуацию, когда у вас был только один стол (table A
). Пара строк в таблице будет выглядеть так:
# Picture 1
# Table A
------------------------------------------------------
Id | Country | Age | Firstname | Middlename | Lastname
1 | US | 45 | John | Fuller | Doe
2 | UK | 32 | Jane | Margaret | Smith
После добавления второй таблицы (table B
) поля, связанные с именами, перемещаются с table A
на table B
. Table A
будет иметь внешний ключ, указывающий на table B
, соответствующий каждой строке.
# Picture 2
# Table A
------------------------------------------------------
Id | Country | Age | Name
1 | US | 45 | 10
2 | UK | 32 | 11
# Table B
------------------------------------------------------
Id | Firstname | Middlename | Lastname
10 | John | Fuller | Doe
11 | Jane | Margaret | Smit
Это финальная картинка. Суть в том, что данные не будут перемещаться из table A
в table B
сами по себе. Увы, для этого требуется вмешательство человека. Если бы я был упомянутым человеком, я бы следовал инструкциям ниже:
- Создать
table B
со столбцами Id
, Firstname
, Middlename
и Lastname
. Теперь у вас есть две таблицы A
и B
. A
имеет все существующие данные, B
пусто.
- Добавить внешний ключ к
table A
. Этот FK будет называться name
и будет ссылаться на поле id
table B
.
- Для каждой строки в
table A
создайте новую строку в table B
, используя поля Firstname
, Middlename
и Lastname
, взятые из table A
.
- После копирования каждой строки обновите поле
name
table A
, указав id
недавно созданной строки в table B
.
База данных теперь выглядит так:
# Table A
-------------------------------------------------------------
Id | Country | Age | Firstname | Middlename | Lastname | Name
1 | US | 45 | John | Fuller | Doe | 10
2 | UK | 32 | Jane | Margaret | Smith | 11
# Table B
------------------------------------------------------
Id | Firstname | Middlename | Lastname
10 | John | Fuller | Doe
11 | Jane | Margaret | Smith
- Теперь вам больше не нужны столбцы
Firstname
, Middlename
и Lastname
в table A
, чтобы их можно было отбросить.
- вуаля, вы выполнили миграцию данных!
Процесс, который я только что описал выше, является лишь конкретным примером миграции данных. Вы можете сделать это несколькими способами, используя несколько языков / инструментов. Выбор механизма будет варьироваться от случая к случаю.