Внешний ключ против ограничения проверки на целостность
Я строю систему, которая является центральным хранилищем для хранения данных из ряда других систем. Процесс синхронизации необходим для обновления центрального хранилища при обновлении данных других систем. Будет таблица sync_action, чтобы определить, с какой системой должен синхронизироваться центральный репозиторий, и тип требуемой синхронизации. Есть набор определенных действий, которые вряд ли могут измениться. Уменьшенная система ниже.
На мой взгляд, я могу подойти к этому двумя способами:
Опция 1) ЕстьAction
таблица с тремя доступными действиями. Есть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
Я хотел бы знать, какие факторы влияют на определение того, что является лучшим подходом при выборе между ограничениями целостности, внешним ключом и проверочным ограничением. Были похожие темы, но я не нашел их достаточно определенными. Это может быть потому, что это до интерпретации, но любые мысли будут оценены.
ура