Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на СУБД.docx
Скачиваний:
9
Добавлен:
30.08.2019
Размер:
146.57 Кб
Скачать

3. Представления

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

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

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

Представления могут быть трех видов:

  • горизонтальные;

  • вертикальные;

  • смешанные.

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

SELECT city, snum

FROM Salespeople;

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

SELECT *

FROM Salespeople

WHERE city = "London";

Смешанное – это представление, которое ограничивает доступ, как к некоторым столбцам исходной таблицы, так и к некоторым строкам.

SELECT city, snum

FROM Salespeople

WHERE city = "London";

4. Определение модифицируемости представления

Если команды модификации могут выполняться в представлении, представление будет модифицируемым; в противном случае оно предназначено только для чтения при запросе. Выражение "модифицируемое представление" (updating a view), означает возможность выполнения в представлении любой из трех команд модификации DML (Вставить, Изменить и Удалить), которые могут изменять значения.

Использование этого принципа на практике, однако, затруднено. Кроме того, некоторые представления, которые являются модифицируемыми в теории, на самом деле не являются модифицируемыми в SQL. Критерии, по которые определяют, является ли представление модифицируемым или нет, в SQL, следующие:

  • Оно должно выводиться в одну и только в одну базовую таблицу.

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

  • Оно не должно иметь никаких полей, которые бы являлись агрегатными функциями.

  • Оно не должно содержать DISTINCT в своем определении.

  • Оно не должно использовать GROUP BY или HAVING в своем определении.

  • Оно не должно использовать подзапросы (это - ANSI ограничение которое не предписано для некоторых реализаций)

  • Оно может быть использовано в другом представлении, но это представление должно также быть модифицируемыми.

  • Оно не должно использовать константы, строки, или выражения значений (например: comm * 100) среди выбранных полей вывода.

  • Оно на должно содержать операторов Объединения (UNION) и Объединения всего (UNIOM ALL).

  • Для INSERT, оно должно содержать любые поля основной таблицы, которые имеют ограничение NOT NULL, если другое ограничение по умолчанию, не определено.

  • Упорядочение по (ORDER BY) никогда не используется в определении представлений.