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

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

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

Ура

11
задан skaffman 19 February 2012 в 11:03
поделиться