Инструменты пользователя

Инструменты сайта


examination:bd:question34

Вопрос№34. Представления в SQL: виды представлений, обновляемость представлений

Представление или виртуальная таблица - это таблица, которой физически нет в БД, но которая существует в представлении пользователя о логической структуре БД. Т.е. это поименованный запрос на выборку данных из одной или нескольких таблиц, определение которых сохранено в словаре БД.

CREATE VIEW view_name [column.list] as query_expression

Виды представлений:

  1. Горизонтальное (применяется для уменьшения объема реальных таблиц в обработке и уменьшения доступа пользователей);
  2. Вертикальное;
  3. Сгруппированное (создаются запросы с группировкой);
  4. Объединенные представления (виртуальные таблицы с соединениями. С такими таблицами используется опция проверки WITH CHECK OPTION. Любая вставка или обновление будет проверяться на соотв. опред. вирт. табл.)

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

Примеры скрытия от пользователя чего-то там (вроде как данных) с помощью представлений изменений на уровне физической БД: (да, странное предложение, но вот так в тетради)

  • Изменение владельцев объектов
  • Изменение имен полей таблиц
  • Добавление полей
  • физическое переупорядочивание колонок
  • раздел одной таблиц на несколько или объединение нескольких табл. в одну
  • и т.п.

Рекомендации по созданию внешней схемы:

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

Обновляемость представлений

Обновляемыми являются представления, полученные из единственной базовой таблицы простым исключением некоторых ее строк и (или) столбцов.

Иногда нужно, чтобы отсутствовал предикат дистинкт. (я не знаю, что это сокращение значит ^^). В предложении FROM должна быть задана только одна таблица. В списке возвращаемых столбцов должны быть ссылки только на простые столбцы. В предложении WHERE не должно быть встроенных запросов. Не должно предлагаться GROUP BY

examination/bd/question34.txt · Последние изменения: 2014/01/15 08:11 (внешнее изменение)