Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 CHECK or NOCHECK for FOREIGN KEY  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
Есть таблица Tab1 (ID, Товар, АтрибутID), а также таблица Tab2 (ID, Атрибут)

Как на таблице Tab1 создать FOREIGN KEY с доверенным соединением CHECK,
если поле АтрибутID не является обязательным для заполнения?

1. Кажется для создания доверенного соединения обязательно должно быть АтрибутID NOT NULL. Верно?
2. Если соединение будет доверенным, запросы с этими двумя таблицами будут работать быстрее. Верно? (не кластерный индекс на АтрибутID есть)
17 окт 11, 16:54    [11453381]     Ответить | Цитировать Сообщить модератору
 Re: CHECK or NOCHECK for FOREIGN KEY  [new]
Glory
Member

Откуда:
Сообщений: 104751
trew
1. Кажется для создания доверенного соединения обязательно должно быть АтрибутID NOT NULL. Верно?

Неверно. NULL в дочерней таблице как раз показывает отсутствие фактической связи для этой записи
Любое не NULL значение должно быть в родительской таблице
17 окт 11, 17:00    [11453434]     Ответить | Цитировать Сообщить модератору
 Re: CHECK or NOCHECK for FOREIGN KEY  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
Glory,

alter table Tab1  with check check constraint fk_Tab1_Tab2
и ключ будет достоверным, хотя поле АтрибутID не обязательно для заполнения.
Это верно или нет?
17 окт 11, 17:11    [11453538]     Ответить | Цитировать Сообщить модератору
 Re: CHECK or NOCHECK for FOREIGN KEY  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
trew,

Любое не NULL значение должно быть в родительской таблице

это соблюдается, если поле заполняется.
17 окт 11, 17:12    [11453549]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить