2010-12-14 6 views
2

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

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

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

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

ответ

2

От Oracle Documentation:

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

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

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

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

+0

Я тоже видел эту страницу, но не стал связываться с ней. Это очень неопределенно, когда такие ограничения полезны. Стоит ли вставлять их в любое время, когда запрос будет использовать представление, или просто когда вы используете материализованные представления с включенной перепиской запроса? Это то, что я пытаюсь выяснить. – eaolson

0

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

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

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

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

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

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