Любые предложения о том, лучше ли ограничение проверки, или больше? Как они должны быть сгруппированы, если вообще?Одно ограничение проверки или несколько ограничений проверки?
Предположим, у меня есть 3 столбца, которые являются VARCHAR2(1 BYTE)
, каждый из которых является флагом 'T'/'F'. Я хочу добавить контрольное ограничение для каждого столбца, указав, что разрешены только символы IN ('T', 'F')
.
Если у меня есть 3 отдельных проверочных ограничений, по одному для каждого столбца:
COL_1 IN ('T', 'F')
COL_2 IN ('T', 'F')
COL_3 IN ('T', 'F')
Или одно проверочное ограничение:
COL_1 IN ('T', 'F') AND COL_2 IN ('T', 'F') AND COL_3 IN ('T', 'F')
Мои мысли лучше держать эти три отдельные, так как столбцы логически не связаны друг с другом. Единственный случай, я бы проверочное ограничение, которое рассматривает более чем один столбец, если существует определенная взаимосвязь между значением в одной и значение в другой, например .:
(PARENT_CNT > 0 AND PRIMARY_PARENT IS NOT NULL) OR (PARENT_CNT = 0 AND PRIMARY_PARENT IS NULL)
Это отвечает на ближайший вопрос, но я рекомендую правильное моделирование - создание таблицы для хранения одного набора значений T & F и отношений внешнего ключа для каждого столбца. –
Проверяющие ограничения могут также использоваться оптимизатором, и чем они более гранулированы, тем чаще их можно использовать. –
@OMG Ponies, я предпочитаю только таблицы кодов FK для столбцов, которые имеют много значений или нестандартных значений «S» = отправлено, «P» = ожидающий просмотр и т. Д. Для общих «Y» es/«N» или « T "rue /" F "alse только столбцы Мне нравятся контрольные ограничения вместо кодов FK. При использовании ограничения проверки я удостоверяюсь, что столбец назван таким образом, что значение имеет смысл: HasShipped «Y» или «N». –