- •Лекция №9- Безопасность Привилегии в базах данных
- •Идентификаторы пользователей и права владения
- •Привилегии
- •Предоставление привилегий другим пользователям (оператор grant)
- •Отмена предоставленных пользователям привилегий (оператор revoke)
- •Перезагрузка привилегий (оператор flush)
- •Представления в базах данных
- •Создание представлений (оператор create view)
- •Удаление представлений (оператор drop view)
- •Замена представлений
- •Использование конструкции with check option
- •Преимущества и недостатки представлений
Преимущества и недостатки представлений
Практика ограничения доступа некоторых пользователей к данным посредством создания специализированных представлений, безусловно, имеет значительные преимущества перед предоставлением им прямого доступа к таблицам базы данных. Однако использование представлений в среде SQL не лишено недостатков. В этом разделе мы кратко обсудим как достоинства, так и недостатки, присущие представлениям языка SQL. Эти преимущества и недостатки перечислены в таблице.
Преимущество |
Недостаток |
Независимость от данных |
Ограниченные возможности обновления |
Актуальность |
Структурные ограничения |
Повышение защищенности данных |
Снижение производительности |
Снижение сложности |
|
Дополнительные удобства |
|
Возможность настройки |
|
Обеспечение целостности данных |
|
|
Преимущества В случае эксплуатации СУБД на отдельном персональном компьютере использование представлений обычно имеет целью лишь упрощение структуры запросов к базе данных. Однако в случае многопользовательской сетевой СУБД представления играют ключевую роль в определении структуры базы данных и организации защиты информации. Основные преимущества использования представлений в подобной среде заключаются в следующем. Независимость от данных С помощью представлений можно создать согласованную, неизменную картину структуры базы данных, которая будет оставаться стабильной даже в случае изменения формата исходных таблиц (например, добавления или удаления столбцов, изменения связей, разделения таблиц, их реструктуризации или переименования). Если в таблицу добавляются или из нее удаляются столбцы, не используемые в представлении, то изменять определение этого представления не потребуется. Если структура исходной таблицы переупорядочивается или эта таблица разделяется, то можно будет создать представление, позволяющее пользователям работать с виртуальной таблицей прежнего формата. В случае разделения исходной таблицы прежний формат может быть виртуально восстановлен с помощью представления, построенного на основе соединения вновь созданных таблиц, — конечно, если это будет возможно. Последнее условие можно обеспечить с помощью помещения во все вновь созданные таблицы первичного ключа прежней таблицы. Допустим, в исходном виде таблица Client имела следующий вид: Client (clientNo, fName, IName, address, telNo, prefType, maxRent) Допустим также, что возникла необходимость разбить эту исходную таблицу на две новые таблицы, ClientDetails и ClientReqts: ClientDetails (clientNo, fName, IName, telNo) ClientReqts (clientNo, prefType, maxRent) Пользователи и приложения смогут по-прежнему иметь доступ к данным с использованием формата исходной таблицы, если определить представление Client, построенное на базе естественного соединения таблиц ClientDetails и ClientReqts, с помощью соединительного столбца clientNo: CREATE VIEW Client AS SELECT cd.clientNo, fName, IName, telNo, prefType, maxRent FROM ClientDetails cd, ClientReqts cr WHERE cd.clientNo = cr.clientNo; Актуальность Изменения в любой из таблиц базы данных, указанных в определяющем запросе, немедленно отображаются на содержимом представления. Повышение защищенности данных Каждому пользователю права доступа к данным в базе могут быть предоставлены исключительно через ограниченный набор представлений, включающих только то подмножество данных, с которыми пользователю необходимо работать. Подобный подход позволяет существенно ужесточить контроль за доступом отдельных категорий пользователей к информации в базе данных и контролировать такой доступ. Снижение сложности Использование представлений позволяет упростить структуру запросов, объединив данные из нескольких таблиц в единственную виртуальную таблицу. В результате многотабличные запросы преобразуются в простые запросы к одному представлению. Дополнительные удобства Создание представлений может обеспечивать пользователей дополнительными удобствами — например, позволить им работать только с той частью данных, которая им действительно необходима. В результате можно добиться максимального упрощения той модель; данных, с которой будет работать каждый конечный пользователь. Возможность настройки Представления являются удобным средством настройки того образа базы данных, с которым будет работать каждый из пользователей. В результате одни и те же таблицы могут быть предъявлены различным пользователям в совершенно разном виде. Обеспечение целостности данных Если в операторе CREATE VIEW будет указана конструкция WITH CHECK OPTION, то СУБД будет осуществлять контроль за тем, чтобы в исходные таблицы базы данных не была введена ни одна из строк, не удовлетворяющих конструкции WHERE в определяющем запросе. Этот механизм гарантирует целостность данных в представлении. Недостатки Хотя использование представлений позволяет достичь многих существенных преимуществ, представлениям языка SQL свойственны и определенные недостатки. Ограниченные возможности обновления В некоторых случаях представления не позволяют вносить изменения в данные, содержащиеся в таблицах. Структурные ограничения Структура представления устанавливается в момент его создания. Если определяющий запрос представлен в форме SELECT * FROM..., то символ * ссылается на все столбцы, существующие в исходной таблице на момент создания представления. Если впоследствии в исходную таблицу базы данных будут добавлены новые столбцы, то они не появятся в данном представлении до тех пор, пока это представление не будет удалено и вновь создано. Снижение производительности Использование представлений связано с определенным снижением производительности. В одних случаях влияние этого фактора будет совершенно незначительным, тогда как в других оно может послужить источником существенных проблем. Например, представление, определенное с помощью сложного многотабличного запроса, может потребовать значительных затрат времени на обработку, поскольку при замене представления потребуется выполнять соединение таблиц всякий раз, когда понадобится доступ к данному представлению. Выполнение замены представлений связано с использованием дополнительных вычислительных ресурсов. |