
- •1. 1)Общие сведения о бд и субд
- •2) Основные функции субд
- •4) Уровни представления данных в субд
- •3) Обобщенная архитектура субд
- •5) Sql: история, стандарты
- •6) Языки баз данных
- •7) Язык qbe
- •8) Функциональная зависимость и нормализация отношений
- •9) Использование функций агрегирования в построении запросов
- •10) Модели данных
- •11) Форматирование результатов запросов
- •12) Иерархическая модель
- •13) Ограничения целостности
- •14) Сетевая модель
- •15) Создание, изменение и удаление таблиц средствами sql
- •16) Реляционная модель
- •17) Sql server. Характеристика объектов бд
- •18) Структура реляционных данных
- •19) Системные базы данных
- •1. Отношения: определение, свойства.
- •20) Создание бд в sql server
- •21.Реляционные ключи.
- •22.Основные типы данных.
- •23.Реляционная целостность.
- •24.Индексы: типы, назначение, создание.
- •25.Реляционные языки.
- •26.Подключение бд к sql server.
- •27.Связанные запросы.
- •28.Этапы обработки запросов.
- •29.Поддержка основных правил целостности данных.
- •30.Основные этапы проектирования баз данных.
- •31.Sql server. Характеристика объектов бд.
- •32.Вторая нормальная форма
- •33.Реляционная алгебра. (Унарные операции).
- •34.Концептуальное проектирование.
- •35.Управление транзакциями
- •36.Основные операции реляционной алгебры.
- •37.Обзор процесса нормализации.
- •38.Методология физического проектирования реляционных баз данных.
- •39.Методология концептуального проектирования.
- •40.Методология логического проектирования.
- •41.Обновляемые представления
- •42.Концепция er-модели.
- •43.Представления. Изменение значений с помощью представлений.
- •44.Избыточность данных и аномалии обновления.
- •45. Структура современной субд на примере Microsoft sql Server.
- •46.Защита баз данных.
- •47.Оптимизация запросов.
- •48.Эвристические правила преобразования операций реляционной алгебры.
- •49.Уровни представления данных в субд.
- •50.Подсистема типичной обработки транзакций.
43.Представления. Изменение значений с помощью представлений.
Таблицы, ранее рассматриваемые, называются базовыми. Эти таблицы содержат реальные данные. В отличии от них представления – это таблицы, которые содержат данные других таблиц. Эти таблицы могут использоваться в запросах, предложениях языка манипулирования данными так же, как и базовые таблицы. В действительности, представления – это запросы, выполняемые всякий раз, когда представление является объектом команды.
Преимуществом представления является то, что оно обновляется автоматически при изменении формирующих его таблиц. Создание представления не фиксируется и вычисляется повторно всякий раз, когда в команде ссылаются на представление. запрос для представления – это фактически запрос к запросу
Однако даже с обновляемыми представлениями часто бывают проблемы.
Команды обновления применительно к представлениям работают следующим образом: воздействуют на базовую таблицу представления. Существуют критерии для определения обновленовляемого представления представления:
10)Оно базируется только на одной таблице.
11)Должно включать первичный ключ таблицы.
12)Не должно содержать ключей, полученных агрегированием.
13)Не должно содержать DISTINCT в своем определении.
14)Не должно содержать GROUP BY и HAVING в своем определении.
15)Не должно содержать подзапросов.
16)Может быть ограничено на обновляемом представлении.
17)Не может содержать констант, строк или выражений в списке выбираемых выходных полей.
18)Для команды INSERT должно включать любые поля, которые имеют ограничения NOT NULL.
Представления, которые не отвечают выше указанным критериям, являются представлениями только для чтения. Однако, даже с обновляемыми представлениями часто бывают проблемы. Например:
CREATE VIEW Highrating
AS SELECT cnum, rating FROM Customers
WHERE rating = 300;
Выполняется следующая команда:
INSERT INTO Highrating
VALUES (2000, 200);
Обновление выполнено не будет. Эта проблема в SQL решается следующим образом: в определение представления добавляется команда:
WITH CHECK OPTION
Эта команда вводится в определения представления и она не имеет отношения к базовой таблице. Будут контролироваться все команды. При выполнении команды будут выдаваться сообщения. Аналогичная проблема возникает, если необходимо в представление включить строки, которые базируются на полях, которые не представлены в представлении:
CREATE VIEW Londonstaff
AS SELECT cnum, cname, comm
FROM Salespeople
WHERE city =’London’;
Если в такое представление попытаться вставить строчку, то она не будет видна в представлении, а будет вставлена в базовую таблицу. Чтобы решить эту проблему, необходимо всегда в представлении задавать все поля, которые есть в базовой таблице.
Получится представление, в котором будут одинаковые значения для поля city. Чтобы исключить это из выходных данных нужно:
SELECT snum, sname
FROM Londonstaff;
Опция WITH CHECK OPTION действует только на представление, в котором она указана, но не действует на представление, которое базируется на этом представлении. Например имеется:
CREATE VIEW Highrating
AS SELECT cnum, rating FROM Customers
WHERE rating = 300
WHITH CHECK OPTION;