2009-06-06 3 views
12

Каковы наилучшие методы хранения ссылочной целостности в нескольких базах данных? поскольку нет встроенных функцийСохранение ссылочной целостности в нескольких базах данных

Или лучше разбить одну базу данных?

Обновление См. Ниже пример кевина. это мой положение дел. В моей базе данных инвентаризации есть таблицы, которые ссылаются на employeeId в базе данных сотрудников.

Эти базы данных в настоящее время поддерживается в разных местах (разных серверах)

ответ

5

С 2k05/2k08 определенно лучше разделить одну базу данных. У вас есть все преимущества хранения данных, например, в нескольких базах данных, когда вы можете использовать функции одной базы данных, например, внешние ключи.

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

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

+0

Это моя ситуация. В моей базе данных инвентаризации есть таблицы, которые ссылаются на employeeId в базе данных сотрудников. Эти базы данных в настоящее время поддерживаются в разных местах (разные серверы) – 2009-06-06 22:01:35

0

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

1

Определенно лучше перейти к одной БД. Если вам нужно это сделать, триггеры помогут (yuck). Разве вы не можете просто разбить БД, используя схемы (пример DB примера AdventureWorks)?

0

Вы можете использовать триггеры для выполнения этой работы, но ...
Я боюсь, что вы потратите огромное количество времени, чтобы убедиться, что все работает. Может быть лучше одна база данных с некоторыми секционированными таблицами. Вам действительно нужны несколько баз данных или только одна база данных с несколькими файловыми группами, распространяемыми по физическим устройствам? Вы можете также рассмотреть этот вариант. Matej

Смежные вопросы