Разделение слабосвязанных схем базы данных - PullRequest
0 голосов
/ 27 апреля 2010

Мне было поручено пересмотреть схему базы данных, которую мы разработали и использовали внутри для различных систем создания билетов и отчетности. В настоящее время существует около 40 таблиц в одной схеме базы данных Oracle, поддерживающей, возможно, шесть веб-приложений.

Однако между ними есть одно объединяющее отношение: таблица комнат, описывающая комнату . Название комнаты, назначение и другие данные добавляются в общую таблицу для каждого приложения. Моя первоначальная идея состояла в том, чтобы перенести каждое из этих приложений в отдельную базу данных и выполнить соединения между данной базой данных и базой данных комнаты. Но я обнаружил, что это решение предотвращает ограничения внешнего ключа в SQL Server 2005. Кажется глупым дублировать одну таблицу для каждого приложения и синхронизировать эти несколько копий.

Должен ли я просто оставить все в одной большой БД или есть что-то еще, что я могу сделать для разделения таблиц без потери ограничений FK?

Ответы [ 3 ]

2 голосов
/ 27 апреля 2010

Единственный способ добиться встроенной ссылочной целостности - это иметь таблицу внутри базы данных, на которую она ссылается. Возможно, вам удастся добиться эквивалента ссылочной целостности с помощью триггеров, но это, вероятно, будет смертельно медленным.

0 голосов
/ 28 апреля 2010

если все приложения действительно используют и зависят от комнат - храните их все в одной БД.вы все равно можете правильно установить привилегии для таблиц и нормально управлять наборами данных в неперекрывающихся областях - есть ли какая-то задача, которую вы не сможете выполнить, когда все будет вместе?

0 голосов
/ 27 апреля 2010

Возможно, вы сможете использовать репликацию SQL Server в режиме / форме «Транзакционная репликация». http://msdn.microsoft.com/en-us/library/ms151176.aspx

...