Добавить копию данных и в существующую базу данных с новым идентификатором клиента
Мы используем базу данных MySQL, и наша модель данных является мультитенантной моделью, то есть в каждой таблице есть столбец с именем "tenant_id", содержащий идентификатор существующего арендатора. Очень упрощенный пример:
Стол: машина
Колонка: id
Колонка: имя
Колонка: tenantid
Таблица: номерной знак
Колонка: id
Колонка: carid (внешний ключ к столу машины)
Колонка: номерной знак
Колонка: tenantid
Конечно, у нас есть набор данных в этой базе данных - общий стиль - означает таблицы, связанные внешними ключами (автоматически увеличиваемыми целыми числами) - в настоящее время в основном для целей тестирования. Опять упрощенный пример:
автомобиль:
1 - BMW - CompanyA
2 - Порше - Компания А
Номерной знак:
1 - 1 - MUC1234 - CompanyA
2 - 2 - EBE4321 - CompanyA
То, что я ищу, это умный подход к 1) сделать копию текущего набора данных 2) изменить tenant_id для каждой таблицы в скопированном наборе данных (например, из CompanyA в CompanyB) 3) добавить скопированный / измененный набор данных в существующая база данных
Это должно помочь нам использовать текущие данные одного арендатора в качестве базы для создания многих других арендаторов в той же базе данных.
Обычно я просто использую mysql_dump для резервного копирования и восстановления, но я не могу понять, как сохранить отношения внешнего ключа для скопированного набора и как изменить tenant_id для всех существующих записей.
В конце пример должен выглядеть так:
автомобиль:
1 - BMW - CompanyA
2 - Порше - Компания А
3 - BMW - CompanyB
4 - Porsche - CompanyB
Номерной знак:
1 - 1 - MUC1234 - CompanyA
2 - 2 - EBE4321 - CompanyA
3 - 3 - MUC1234 - CompanyB
4 - 4 - EBE4321 - CompanyB
У кого-нибудь есть идея? Обычно мне просто нужно направление, куда идти.
Большое спасибо.
1 ответ
Вы должны будете сделать это через службу копирования в коде, который получает специфичные для арендатора данные, обновляет идентификатор арендатора и затем вставляет. Так можно было бы сделать.
ИМХО подход, основанный на коде, подойдет для гарантии того, что данные проверены перед копированием.