Это не проблема проектирования базы данных.
Это проблема процессов, связанных с использованием дизайна базы данных.
Реальный вопрос, который у меня возникает, - это почему пользователи заходят в магазины ad-hoc? Я могу думать о сценариях, но, не зная вашей ситуации, трудно угадать.
Нормальным решением является то, что таблица tblStore является только справочной таблицей. Обычно пользователи имеют доступ только к тем магазинам, которые уже были введены.
Затем существует контролируемый процесс для согласованного ведения таблицы tblStore. Только несколько пользователей будут иметь доступ к этому процессу.
Конечно, как я упоминал выше, это не всегда возможно, поэтому вам может потребоваться другое решение.
UPDATE:
Вопрос № 1: наилучшим подходом является сценарий обновления. Лучший способ сделать это - иметь копию базы данных, если это возможно, или закрытую копию, если нет, и проверить сценарий на соответствие этим данным. Убедившись, что скрипт работает правильно, вы можете запустить его на реальных данных.
Если у вас есть целостность транзакции, вы должны использовать это. Используйте «начало» перед запуском сценария, и если количество записей соответствует ожидаемому, а также любым другим тестам, которые вы разработали (возможно, также в сценариях), то вы можете «зафиксировать»
Не вводить SQL против живой БД.
Вопрос № 3: Я предлагаю, чтобы ваша первая линия атаки заключалась в создании процессов вокруг создания новых магазинов, но это не может быть в ваших интересах.
Второе - это проактивность, идентификация и ввод новых магазинов (если это проблема) до того, как это понадобится пользователям на местах. Я не знаю, работает ли это в вашем сценарии.
Наконец, если у вас есть скрипт, который объединяет «store1» с «store2», вы можете стандартизировать его, чтобы сократить время и ошибки. Вы даже можете встроить это в экран только администратора, который автоматизирует объединение магазинов.
Это все, что я могу думать о макушке головы.