Управление доступа к данным
Каждая СУБД должна предоставлять механизм, гарантирующий, что доступ к базе данных смогут получить только те пользователи, которые имеют на это соответствующее разрешение. Язык SQL включает два оператора GRANT и REVOKE, предназначенные для защиты данных от неавторизированного доступа. Применяемый механизм защиты основан на использовании идентификаторов пользователей, предоставляемых им прав владения и привилегий. Каждому пользователю БД назначается собственный идентификатор (обычно определяется именем пользователя и паролем), который применяется для определения того, на какие объекты базы данных может ссылаться данный пользователь, а также какие операции с этими объектами он имеет право выполнять. Таким образом, каждый оператор SQL выполняется от имени некоторого пользователя исходя из назначенных ему прав доступа (привилегий).
Каждый объект в SQL имеет своего владельца (зачастую пользователя, который его создал). Только владелец имеет полный доступ к объекту. Для предоставления другим пользователям прав доступа к этому объекту применяется оператор GRANT. Оператор GRANT имеет следующий формат:
GRANT {<список привилегий> | ALL PRIVILEGES} ON <имя объекта>
TO {<список идентификаторов пользователей> | PUBLIC} [WITH GRANT OPTIONS]
В SQL определен следующий набор привилегий:
SELECT – позволяет просматривать данные;
INSERT [<список полей>] – позволяет добавлять данные;
UPDATE [<список полей >] – позволяет обновлять данные;
DELETE – позволяет удалять данные;
REFERENCE [<список полей >] – позволяет ссылаться на указанные поля при определении ссылочной целостности;
USAGE – позволяет использовать домены и ограничители целостности.
После списка идентификаторов пользователей можно указать опцию WITH GRANT OPTIONS, которая позволит этим пользователям в свою очередь назначать привилегии другим пользователям. Таким образом, владелец может четко контролировать, кто получил права доступа к объекту и какие права доступа ему предоставлены.
Для отмены указанных привилегий применяется оператор REVOKE:
REVOKE [GRANT OPTION FOR] {<список привилегий> | ALL PRIVILEGES}
ON <имя объекта>
FROM {<список идентификаторов пользователей> | PUBLIC} [RESTRICT | CASCADE]
Опция GRANT OPTION FOR позволяет для всех заданных привилегий отменять возможность их передачи другим пользователям.
Упражнения
5.1. К какому виду реляционных языков относится SQL: реляционной алгебре или реляционному исчислению.
5.2. На какие две большие группы можно разбить все операторы SQL.
5.3. Перечислите операторы языка описания запросов выборки в SQL.
5.4. Какие виды вычислений можно производить в SQL.
5.5. Исправьте ошибку(и) в запросе:
SELECT Фамилия, Имя, Отчество FROM Клиенты INNER JOIN Заказы AS Клиенты = Заказы SORT BY Фамилия WHERE Город = Минск;
5.6. Что сделает следующий запрос действия (каскадное удаление не установлено):
DELETE * FROM Клиенты INNER JOIN Заказы ON Клиенты.КодКлиента = Заказы.КодКлиента;
a) удалит тех клиентов из таблицы «Клиенты», которые имеют заказы;
b) удалит клиентов из таблицы «Клиенты» (которые имеют хотя бы один заказ) и сделанные ими заказы из таблицы «Заказы»;
c) завершится выдачей сообщения о том, что данный запрос не может быть выполнен.
5.7. Чем отличается внутреннее (естественное) соединение от внешнего. Напишите два запроса: один с внутренним объединением, один с внешним, между таблицами «Клиенты» и «Заказы».
5.8. Что позволяют запросы с группировкой.
5.9. Какой из запросов действия имеет две формы записи.
5.10. Напишите запрос выборки Фамилии, Имени и Отчества всех клиентов, которые покупали товары в текущем году на языке SQL. Записи должны быть упорядочены по возрастанию по полю Фамилия. Повторяющиеся записи должны быть исключены.
5.11. Что возвратит следующий запрос:
SELECT КодКлиента, SUM(Цена*Количество) FROM Клиенты INNER JOIN Заказы ON Клиенты.КодКлиента = Заказы.КодКлиента WHERE EXISTS(SELECT * FROM Товары WHERE НаименованиеТовара = “Молоко” And Товары.КодТовара = Заказы.КодТовара) GROUP BY КодКлиента;
5.12. Что возвратит следующий запрос (связи между таблицами заданы):
SELECT * FROM Клиенты, Заказы;
d) информацию о клиентах и сделанных ими заказах с учетом связи, определенной в окне схемы данных,
e) информацию о клиентах, затем информацию о товарах,
f) любые возможные сочетания записей из таблицы «Клиенты» и записей из таблицы «Заказы».
5.13. Перечислите основные операторы языка определения данных в SQL.
5.14. Какие типы данных поддерживаются в SQL.
5.15. Напишите запрос создания таблицы «Клиенты».
5.16. Перечислите достоинства и недостатки представлений в SQL.
5.17. Какие объекты базы данных позволяют создавать операторы языка определения данных в SQL.
5.18. Как организуется защита данных от неавторизированного доступа в SQL.
Дата добавления: 2016-10-26; просмотров: 1773;