Почему у вас есть 3 базы данных с одинаковыми пользователями?
Что произойдет, если одна база данных выйдет из строя сейчас?
Я задаю эти вопросы, потому что «Con» базы данных «пользователь-источник», отказывающийся от использования двух других баз данных, может быть не такой большой проблемой, как кажется.
Кроме того, если база данных выйдет из строя сейчас, у вас уже будут проблемы с согласованностью, если пользователи изменятся в двух других БД в течение этого периода. Я не думаю, что мы можем дать лучший совет без большего контекста.
Прямо сейчас я хотел бы создать четвертую базу данных для пользователей, вносить изменения только там и синхронизировать другие базы данных. Вы уже распределены-денормализованы, изменив по существу одни и те же данные в трех местах, и, возможно, у вас уже есть проблемы с согласованностью. Если отказоустойчивость важна, тогда эта схема все еще дает это, решая проблему многократного входа.
Я думаю, что наличие четвертой базы данных, предназначенной только для пользователей / настроек, а не одной из существующих, является хорошей стратегией, так как она становится менее вероятной, поскольку она не привязана к другим ресурсам или интенсивно не используется. Теперь я вижу, что вы сказали, что не можете этого сделать, но я не понимаю, почему. Поддерживают ли приложения в основной базе данных непосредственное редактирование пользователя или редактирование пользователем является совершенно отдельной функцией, которую можно указать в другом месте?
Правда, с этой идеей «канонической пользовательской таблицы» - используете ли вы синонимы или синхронизируете данные - вы не можете изменять пользователей во время неактивной базы данных, но мне это кажется приемлемым. Исправьте проблему и поднимите ее! Один источник, одно место для редактирования, одно исправление, если оно сломано. При синхронизации все остальные базы данных имеют временные копии, с которыми они могут работать, но без редактирования. Минимизация дублирования данных в разных системах является большой и полезной целью. Серьезной проблемой является ввод одних и тех же данных в трех местах, поэтому сделайте все возможное, чтобы устранить это.
Чтобы учесть больше ваших комментариев, если ваши идентификаторы пользователей отличаются во всех ваших приложениях, вам следует серьезно подумать о запланированном времени простоя для ваших двух новых баз данных, чтобы привести их в синхронизацию с основной (задайте отдельный вопрос, если вам нужны идеи о том, как это сделать, что сложно, но не очень сложно).
Если вы проанализируете свои бизнес-потребности и обнаружите, что основная база данных должна содержать пользовательские данные, что все в порядке, вы все равно используете их как канонические, а затем выбираете между синонимами или синхронизацией, чтобы указать, как незапланированные простои влияют на все базы данных.
Еще одним дополнительным доводом в пользу использования синонимов является то, что вы больше не сможете иметь надлежащие FK для пользователей в каждой базе данных.