Название: Базы данных. Концепция баз данных, реляционная модель данных, языки SQL и XML (Токмаков Г. П.) Жанр: Информационные системы и технологии Просмотров: 1429 |
3.4. создание представлений (view)
Представление (view) является логической (виртуальной) таблицей, записи в которую отобраны с помощью оператора SELECT. Представлением называется запрос на выборку, которому присвоили имя, а затем сохранили в базе данных. Представление позволяет пользователю увидеть результаты сохраненного за- проса, а SQL обеспечивает доступ к этим результатам таким образом, как если бы они были простой таблицей. Представления используются по нескольким причинам: – они позволяют сделать так, что разные пользователи базы данных будут ви- деть ее по-разному; – с их помощью можно ограничить доступ к данным, разрешая пользовате- лям видеть только некоторые из строк и столбцов таблицы; – они упрощают доступ к базе данных, показывая каждому пользователю структуру хранимых данных в наиболее подходящем виде. Представление является «виртуальной таблицей», содержимое которой яв- ляется запросом. Для пользователя базы данных представление выглядит обыч- ной таблицей, состоящей из строк и столбцов. Однако, в отличие от таблицы, представление как совокупность значений в базе данных реально не существу- ет. Строки и столбцы данных, которые пользователь видит с помощью пред- ставления, являются результатом запроса, лежащего в его основе. При создании представление получает имя, и его определение сохраняется в базе данных. Преимущество представления заключается в том, что можно один раз ото- брать записи и использовать их в дальнейшем без повторного выполнения опе- ратора SELECT. Это выгодно при частом использовании одинаковых запросов, особенно тех, в которых реализованы сложные условия отбора. Представления могут использоваться для описания внешних моделей в ре- ляционной модели. В действительности представление содержит не данные, а лишь SQL-запрос типа SELECT, указывающий, какие именно колонки и из каких таблиц нужно взять при обращении к этому представлению. Задание представ- лений входит в описание схемы базы данных в реляционных СУБД. Представ- ления позволяют скрыть ненужные детали для разных пользователей, модифи- цировать реальные структуры данных в удобном для приложений виде, разгра- ничить доступ к данным и тем самым повысить защиту данных от несанкцио- нированного доступа. В отличие от реальной таблицы, представление в том виде, как оно сконст- руировано, не существует в базе данных, это действительно только виртуальное отношение, хотя все данные, которые представлены в нем, действительно суще- ствуют в базе данных, но в разных отношениях. Они скомпонованы для пользо- вателя в удобном виде из реальных таблиц с помощью некоторого запроса. Однако пользователь может этого не знать, он может обращаться с этим представлением как со стандартной таблицей. Представление при создании по- лучает некоторое уникальное имя, его описание храниться в описании схемы базы данных, и СУБД в любой момент времени при обращении к этому пред- ставлению выполняет запрос, соответствующий его описанию, поэтому пользо- ватель, работая с представлением, в каждый момент времени видит действи- тельно реальные, актуальные на настоящий момент данные. Оно формирует их как бы на лету, в момент обращения. При необходимости в представлении может задаваться новое имя для каж- дого столбца виртуальной таблицы. При этом надо помнить, что если указыва- ется список столбцов, он должен содержать ровно столько столбцов, сколько содержит их SQL-запрос. Для создания представления мы можем использовать SQL-предложение CREATE VIEW, для его модификации – предложение ALTER VIEW, а для удаления – предложение DROP VIEW. Предложение CREATE VIEW используется для создания представлений, позволяющих извлекать данные, удовлетворяющие некоторым требованиям. Представление создается в текущей базе данных и хранится как отдельный объект. Наилучший способ создания представления – создать запрос SELECT и, проверив его, добавить недостающую часть CREATE VIEW. Если список имен столбцов в представлении не задан, то каждый столбец представления получает имя соответствующего столбца запроса. Рассмотрим типичные виды представления и их назначение.
3.4.1. О БЩИЙ ФОРМАТ ОПЕРАТОРА CREATE VIEW
Создание просмотра базы данных осуществляется оператором
CREATE VIEW Имя_Представления AS <Оператор SELECT>;
– Имя_Представления − имя просмотра после его создания можно использо- вать как имя физической таблицы. – Список столбцов − определяет состав столбцов просмотра. Если список не задан, то в просмотр отбираются все столбцы таблиц, указанных в операторе SE‐ LECT. – WITH CHECK OPTION – для редактируемого просмотра запрещает добавление записей, не удовлетворяющих условиям отбора, заданным в операторе SELECT. На Рис. 3.2. изображено представление, определенное в соответствии с за- просом
CREATE VIEW SLUZHASCHIE_OFFISY AS SELECT С.FAMILY, С.NAME, О.CITY, О.REGION, С.QUOTA, С.SALES FROM SLUZHASCHIE С, OFFISY О WHERE С.ID_OFC = O.ID_OFC
3.4.2. Г ОРИЗОН ТАЛЬН О Е ПРЕДСТАВЛЕНИЕ
Этот вид представления широко применяется для уменьшения объема ре- альных таблиц в обработке и ограничения доступа пользователей к закрытой для них информации. Так, например, правилом хорошего тона считается, что руководитель подразделения фирмы может видеть оклады и результаты работы только своих сотрудников, в этом случае для него создается горизонтальное представление, в которое загружены строки общей таблицы сотрудников, рабо- тающих в его подразделении. Пример горизонтального представления:
CREATE VIEW SAL_DEPT AS SELECT * FROM EMPLOYEE WHERE DEPARTMENT = «отдел продаж»
3.4.3. В ЕРТИКАЛЬНОЕ П РЕДСТАВ ЛЕНИЕ
Этот вид представления практически соответствует выполнению операции проектирования некоторого отношения на ряд столбцов. Он используется в ос- новном для скрытия информации, которая не должна быть доступна в конкрет- ной внешней модели. Например, для работника табельной службы, который учитывает присутствие сотрудников на работе, информация об окладе и над- бавке должна быть закрыта. Для него можно создать следующее вертикальное представление:
CREATE VIEW TABLE AS SELECT T_NUM, NAME, POSITION, DEPRT FROM EMPLOYEE
Представление ID_SLZH FAMILY NAME AGE … QUOTA SALES
105 Болгов Виктор 37 … $350 000.00 $367 911.00
109 Майоров Олег 31 … $300 000.00 $392 725.00
102 Сергеев Игорь 48 … $350 000.00 $474 050.00
106 Санкин Петр 52 … $275 000.00 $299 912.00
104 Бобров Иван 33 … $200 000.00 $142 594.00
101 Данилов Сергей 45 … $300 000.00 $305 673.00 SLUZHASCHIE_OFFISY
FAMILY NAME CITY REGION QUOTA SALES
Болгов Виктор Инза Ульяновская $350 000.00 $367 911.00
Майоров Олег Буинск Татарстан $300 000.00 $392 725.00
Сергеев Игорь Тверь Московская $350 000.00 $474 050.00
Санкин Петр Буинск Татарстан $275 000.00 $299 912.00
Бобров Иван Тверь Московская $200 000.00 $142 594.00
Данилов Сергей Инза Ульяновская $300 000.00 $305 673.00
Таблица OFFISY
ID_OFFICE CITY REGION MGR
22 Инза Ульяновская 104
11 Буинск Татарстан 106
12 Тверь Московская 108
Рис. 3.2. Типичное представление с двумя исходными таблицами
В большинстве случаев представления используются для обеспечения безопасности данных. Например, некоторые категории пользователей могут иметь доступ к представлению, но не к таблицам, данные которых его форми- руют; кроме того, SQL-запрос может содержать параметр USER (имя, под кото- рым зарегистрировался пользователь), и в этом случае данные, доступные при обращении к представлению будут зависеть от имени пользователя.
3.4.4. У ДАЛЕНИЕ ПРЕД СТАВЛЕ НИЯ Удалить просмотр можно следующим оператором:
DROP VIEW <ИмяПросмотра>; Например, DROP VIEW vStore;
3.4.5. Н ЕДОСТ А ТКИ ПР ЕДСТАВЛ Е НИЙ
Наряду с перечисленными выше преимуществами, представления облада- ют и двумя существенными недостатками. – Производительность. Представление создает лишь видимость существо- вания соответствующей таблицы, и СУБД приходится преобразовывать запрос к представлению в запрос к исходным таблицам. Если представление отображает многотабличный запрос, то простой запрос к представлению становится сложным объединением и на его выполнение может потребоваться много времени; – Ограничения на обновление. Когда пользователь пытается обновить строки представления, СУБД должна установить их соответствие строкам исходных таб- лиц, а также обновить последние. Это возможно только для простых представле- ний (созданных на основе одной таблицы); сложные представления обновлять нельзя, они доступны только для выборки. Указанные недостатки означают, что не стоит без разбора применять пред- ставления вместо исходных таблиц. В каждом конкретном случае необходимо учитывать перечисленные преимущества и недостатки представлений.
|
|