
- •Файл-серверные приложения
- •3. Представления
- •5. Определение триггера в стандарте языка sql
- •Типы триггеров
- •6. Понятие хранимой процедуры
- •Типы хранимых процедур
- •7. Табличные переменные
- •Функции пользователя
- •8. Понятие курсора
- •Вложенные транзакции
- •10. Параллельная работа транзакций
- •Работа транзакций в смеси
- •Проблемы параллельной работы транзакций
- •Проблема потери результатов обновления.
- •Проблема незафиксированной зависимости (чтение "грязных" данных).
- •Проблема несовместимого анализа данных.
- •11. 1. Проблема потери результатов обновления
- •12. Проблема незафиксированной зависимости (чтение "грязных" данных)
- •13. 3.1. Неповторяемое считывание
- •14. Фиктивные элементы (фантомы)
- •15. Несовместимый анализ данных
- •16. Конфликты между транзакциями
- •17. Модель конфликтов транзакций. Граф предшествования
- •18. Типы блокировок.
- •19. Решение проблем параллелизма при помощи блокировок
- •Проблема потери результатов обновления
- •Проблема незафиксированной зависимости (чтение "грязных" данных)
- •Проблема несовместимого анализа Неповторяемое считывание
- •Фиктивные элементы (фантомы)
- •Несовместимый анализ данных
- •Разрешение тупиковых ситуаций
- •20.Разрешение тупиковых ситуаций. Граф ожидания.
- •21.Назначение многомерных бд. Структурные компоненты многомерной модели.
- •Основные преимущества многомерных субд
- •22. Агрегация данных в многомерных базах данных.
- •Существует частичная и полная агрегация.
- •24. Организация запросов средствами языка mdx.
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) никогда не используется в определении представлений.