Использование внешнего ключа - только 2 записи? - PullRequest
1 голос
/ 17 октября 2011

Должен ли я использовать внешний ключ для «balanceimpact», который имеет только две опции: «CREDIT» или «DEBIT»?

Имеет ли это смысл, здесь есть только два варианта?

Ответы [ 3 ]

1 голос
/ 17 октября 2011

Это не столько количество вариантов, сколько значение rel (1: 1; 1: n; и т. Д.).

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

Также, как предложил Marc_S в своем комментарии, добавьте ограничение CHECK, чтобы убедиться, что введено только одно из этих двух значений.

ALTER TABLE your_table
ADD CONSTRAINT chk_balanceimpact CHECK (balanceimpact in ('C','D'))
GO
1 голос
/ 17 октября 2011

Знаменитые слова "Будет только два варианта"

Не париться 20 способами, но у меня немного другой подход, когда я вижу это. Я говорю создать таблицу поиска с помощью ФК. Только потому, что когда они захотят добавить 3-й, 4-й и ... варианты, у вас будет вся структура на месте. Очевидно, что в этом случае вы можете пойти в любую сторону и быть в порядке, я просто не понимаю, почему так плохо сначала нормализовать его и избежать каких-либо переделок в будущем, даже если есть небольшая вероятность этого. Только мои 2цента на макушке моей головы поздно ночью.

0 голосов
/ 17 октября 2011

Если вы собираетесь использовать только два варианта, похоже, что лучшим решением было бы просто иметь столбец true / false. Если это не сопоставление с другими таблицами.

...