У меня есть база данных SQL-Server 2008 и схема, которая использует ограничения внешнего ключа для обеспечения ссылочной целостности. Работает как задумано. Теперь пользователь создает представления для исходных таблиц для работы только с подмножествами данных. Моя проблема заключается в том, что фильтрация определенных наборов данных в некоторых таблицах, но не в других, нарушит ограничения внешнего ключа.
Представьте себе две таблицы «один» и «два». «one» содержит только столбец id со значениями 1,2,3. «Две» ссылки «одна». Теперь вы создаете представления для обеих таблиц. Представление для таблицы «два» ничего не фильтрует, в то время как представление для таблицы «один» удаляет все строки, кроме первой. Вы получите записи во втором представлении, которые нигде не указывают.
Есть ли способ избежать этого? У вас могут быть ограничения внешнего ключа между представлениями?
Некоторые уточнения в ответ на некоторые комментарии:
Мне известно, что лежащие в основе ограничения обеспечат целостность данных даже при вставке в представления. Моя проблема заключается в утверждениях, потребляющих взгляды. Эти утверждения были написаны с учетом исходных таблиц и предполагают, что некоторые объединения не могут завершиться неудачей. Это предположение всегда верно при работе с таблицами, но представления могут нарушить его.
Объединение / проверка всех ограничений при создании представлений в первую очередь раздражает из-за большого количества ссылающихся таблиц. Таким образом, я надеялся избежать этого.