Сохранение ссылочной целостности в нескольких базах данных - PullRequest
13 голосов
/ 07 июня 2009

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

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

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

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

Ответы [ 5 ]

5 голосов
/ 07 июня 2009

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

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

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

1 голос
/ 07 июня 2009

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

0 голосов
/ 07 июня 2009

Я бы предпочел иметь одну базу данных. Объясняется здесь:

http://sqlblog.com/blogs/alexander_kuznetsov/archive/2008/05/13/be-aware-of-these-loopholes-in-your-referential-integrity.aspx

0 голосов
/ 07 июня 2009

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

0 голосов
/ 07 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...