Управление доступа к данным


Каждая СУБД должна предоставлять механизм, гарантирующий, что доступ к базе данных смогут получить только те пользователи, которые имеют на это соответствующее разрешение. Язык 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; просмотров: 1765;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.