Я создаю систему, которая является центральным репозиторием для хранения данных из ряда других систем. Процесс синхронизации необходим для обновления центрального репозитория при обновлении данных других систем. Там будет таблица sync_action, чтобы определить, с какой системой необходимо синхронизировать центральное репо, и тип требуемой синхронизации. Есть набор определенных действий, которые вряд ли будут изменены. Ниже представлена упрощенная система.
На мой взгляд, я могу подойти к этому двумя способами:
Вариант 1). Имейте Action
таблицу, в которой доступны 3 действия. Имейте sync_action
таблицу, которая использует внешний ключ для ссылки на необходимые действия.
Таблица: Система
ID Description
1 Slave System 1
2 Slave System 2
Таблица: Действие
ID Description
1 Insert
2 Update
3 Delete
Таблица: Sync_action
ID Action System
1 1 1
2 2 1
Вариант 2). Вместо внешнего ключа используйте ограничение проверки для столбца sync_action.action
, чтобы можно было вставить только действия Insert/Update/Delete
.
Таблица: Sync_action
ID Action System
1 Insert 1
2 Update 1
Я хотел бы знать, какие факторы влияют на определение лучшего подхода при выборе между ограничениями целостности, внешним ключом и ограничением проверки. Были похожие темы, но я не нашел их достаточно определенными. Это может быть потому, что это до интерпретации, но любые мысли будут оценены.
Ваше здоровье
{ }
) на панели инструментов редактора, чтобы красиво отформатировать и выделить синтаксис ! - person marc_s   schedule 19.02.2012pst
- а если нужно добавить четвертое, пятое действие ?? Если у вас есть отдельнаяAction
таблица, это так же просто, как добавить строку. Если у вас есть проверочные ограничения, вам нужно отказаться от них и воссоздать их - это больше работы и больше хлопот. Я не вижу хороших аргументов против наличия отдельнойAction
таблицы и обеспечения ссылочной целостности с использованием ограничения FK - базы данных хороши в этом! (это их основной бизнес!) - person marc_s   schedule 19.02.2012