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

36.. Представление (view) базы данных. Операторы создания и удаления представлений. Примеры. Ограничения при использовании представлений для внесения изменений в бд.

  • Представление – виртуальная таблица, созданная операторами SELECT и UNION ALL SELECT из таблиц и других представлений БД.

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

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

  • В представлении оператор SELECT не может использовать опции :

    • INTO

    • ORDER BY -- не действует

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

Создание:

Конструктором в диалоге Management Studio

Оператором Transact SQL:

Имена столбцов в списке обязательны только для вычисляемых или одноименных столбцов.

CREATE VIEW <имя представления> [(<имя столбца> [,…])]

[WITH [ENCRIPTION] [, SCHEMABINDING] ]

AS SELECT . . . . . . .

[ Union All SELECT . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . ]

[WITH CHECK OPTION]

Опция ENCRIPTION - шифрует текст оператора SELECT, чтобы защитить его от просмотра и выяснения имен объектов БД.

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

С опцией SCHEMABINDING имена таблиц в операторе SELECT должны включать имена схем (владельцев) и недопустима * в Select.

Опция WITH CHECK OPTION запрещает внесение во view таких изменений данных, при которых изменяется множество строк самого представления.

Пример

Написать SQL оператор, создающий представление книги_авторов_Oakland для доступа к книгам (названия, типы, фамилии и имена авторов), для авторов, проживающих в городе Oakland. Представление должно быть защищено от разрушающих структурных изменений БД

Создание представления

CREATE VIEW dbo.книги_авторов_Oakland

WITH SCHEMABINDING

AS

SELECT dbo.authors.au_lname, dbo.authors.au_fname,

dbo.titles.title, dbo.titles.type

FROM

dbo.authors INNER JOIN dbo.titleauthor ON dbo.authors.au_id = dbo.titleauthor.au_id

INNER JOIN dbo.titles ON dbo.titleauthor.title_id = dbo.titles.title_id

WHERE (dbo.authors.city = 'Oakland');

Вывести все столбцы представления для книг по бизнесу

SELECT * FROM dbo.книги_авторов_Oakland

WHERE (dbo.книги_авторов_Oakland.type = 'business')

Ограничения представлений, используемых для внесения изменений в базу

  1. оператор SELECT не должен содержать параметры DISTINCT, GROUP BY и агрегатные функции (SUM, AVG, …);

  2. операторы INSERT или UPDATE, изменяющих данные в базе через представление, должны обрабатывать только одну таблицу. Т.е. через представление, построенное на двух и более таблицах, одним оператором можно изменять поля или добавлять строки только в одну из таблиц;

  3. Изменяемые поля не должны быть:

    • Вычисляемые,

    • Использующие агрегатные функции;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]