Внешний ключ против ограничения проверки на целостность

Я строю систему, которая является центральным хранилищем для хранения данных из ряда других систем. Процесс синхронизации необходим для обновления центрального хранилища при обновлении данных других систем. Будет таблица 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

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

ура

Ответы на вопрос(2)

Ваш ответ на вопрос