Какой смысл ограничения взгляда? - PullRequest
3 голосов
/ 14 декабря 2010

Где ограничения просмотра полезны?Я имею в виду, что Oracle позволяет создавать ограничения для представления.Они не соблюдаются базой данных.Кажется, это просто больше метаданных, которые могут использоваться базой данных, но я пытаюсь понять, при каких обстоятельствах они полезны.

Том Кайт ответил в вопросе:

Они используются для сложных переписываний запросов с материализованными представлениями и тому подобным.Это больше «метаданные» - это дает оптимизатору больше информации, позволяет выполнять более широкий диапазон переписывания запросов.

... но это немного кратко.

Ответы [ 2 ]

2 голосов
/ 14 декабря 2010

С Документация Oracle :

Ограничения на просмотр

Вы можете создавать ограничения для представлений.Единственный тип ограничения, поддерживаемый в представлении, - это ограничение RELY.

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

Цитировал еще одну страницу документации Oracle, но в любом случае никогда не использовал ограничения для представлений.

0 голосов
/ 14 декабря 2010

Незначительное использование в продукте Oracle. В созданных Designer веб-приложениях PL / SQL компонентам, основанным на представлениях, требовался первичный ключ, определенный для представления. Это позволило приложению делать гиперссылки из списка записей на отображение одной записи.

Я помню несколько случаев, когда Hibernate генерировал лучший код, когда для представлений были определены ограничения PK и FK. (Кто-нибудь еще может это подтвердить?)

И Том указывает на запрос переписать.

Поэтому я думаю, что ответ таков: «Если ваши инструменты могут использовать информацию, то лучше ее предоставить». Конечно, будет сложно понять, какие инструменты будут использовать его.

Я пытаюсь включить их, потому что

  • Это не так много работы, хотя сценарии для воссоздания представлений несколько сложнее.
  • Помогает завершить физическую реализацию логической модели
  • Это напоминает мне о реальных ограничениях данных, которые мне нужно каким-то образом реализовать, с помощью триггеров или фоновых пакетов или в отчете "нарушение ограничений".
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...