Файл: Тема концепция управления данными в современных информационных системах Цель лекции.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 24.11.2023

Просмотров: 236

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


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

Несмотря на то, что поля таблицы, по определению, упорядо­чены, это совсем не означает, что их вывод должен быть только в том же порядке. Конечно, звездочка (*) покажет все поля в их естественном порядке, но, если указать поля отдельно, можно получить их в требуемой последовательности.

Например, запрос

SELECT SFAM, SNUM, STIP FROM STUDENTS;

будет производить в новой последовательности вывод, показан­ный ниже:


SFAM

SNUM

STIP

Поляков

3412

25.50

Огарева

3413

17.00

Гриценко

3414

0.00

Котенко

3415

0.00

Нагорный

3416

25.50


При работе с данными очень часто возникает потребность в удалении избыточных данных. Это реализуется с использованием DISTINCT - аргумент, который обеспечивает возможность уст­ранять повторяющиеся значения из предложения SELECT.

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

SELECT SNUM FROM USP;

предоставит следующий вывод, однако в нем есть записи - дуб­ликаты:

SNUM

3412 3413 3414 3412 3416

Для получения списка результатов без дубликатов в данном случае целесообразно воспользоваться следующим:

SELECT DISTINCT SNUM FROM USP;

в результате чего будет получено: SNUM

3412 3413 3414 3416

Другими словами, DISTINCT просматривает значения, кото­рые были выведены ранее, и не дает им дублироваться в списке. Это - полезный способ избежать избыточности данных, однако стоит внимательно следить за его применением, т.к. можно скрыть некоторую нужную информацию. Например, если в таб­лице студентов появятся однофамильцы, то использование DISTINCT может привести к тому, что о существовании одно­фамильцев пользователь знать не будет.


Следуетиметь в виду, что DISTINCT может указываться только один раз в данном предложении SELECT. Если предложе­ние выбирает многочисленные поля, DISTINCT опускает записи, где все выбранные поля идентичны. Если вместо DISTINCT ука­зать ALL, то это будет иметь противоположный эффект и дубли­рование строк вывода сохранится.

ТЕМА 8. Язык SQL: команды языка управления данными
Цель лекции: изучить команды языка управления данными

Ключевые слова: привилегия, роль, полномочия, объект, системная привилегия, объектная привилегия, команда, синтаксис, пользователь, атрибут, параметр, отмена, передача, назначение, пароль.
План лекции

1. Подмножество языка DСL. Понятие привилегии. Типы привилегий

2. Выдача и изъятие привилегий при помощи GRANT и REVOKE

3. Использование ролей
1. Типы привилегий.

Каждый пользователь в базе данных Oracle имеет множество привилегий. Привилегии – это те действия, которые может выполнять пользователь (вход в систему – минимальная привилегия). Привилегии могут меняться с течением времени: новые привилегии могут добавляться, старые – отменяться. Существует несколько типов привилегий, соответствующих определенным типам операций.

Объектная привилегия (object privileges) – означает, что пользователь имеет привилегию выполнить данную команду только для определенного объекта базы данных. Привилегии должны различаться для различных объектов. Объектные привилегии связаны как с пользователями, так и с таблицами. Привилегия дается отдельному пользователю для отдельной таблицы либо для представления. Следует помнить, что пользователь, создавший таблицу, является ее владельцем. Это означает, что пользователь имеет все привилегии на таблицу и может назначать привилегии для работы с ней для других пользователей. Пользователь может назначить следующие объектные привилегии:


SELECT

пользователь с этой привилегией может выполнять запросы для таблицы, представления, последовательности

INSERT

пользователь с этой привилегией имеет право добавлять строки в таблицу или обновляемое представление

UPDATE

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

DELETE

пользователь с этой привилегией может удалить строки из таблицы или обновляемого представления

ALTER

Позволяет изменять только структуру таблицы или последовательности, привилегии Alter на все другие объекты базы данных считаются системными

INDEX

Позволяет создавать индекс для ранее описанной таблицы

EXECUTE

Позволяет выполнять хранимую процедуру или функцию

REFERENCES

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



Привилегии, которые не определяются в терминах отдельных объектов, а применяются к целым классам объектов, называют системными привилегиями (system privileges) или авторским правом на базу данных (database authorities). Системные привилегии включают в себя право создавать объекты базы данных. Обычно принято различать три типа базовых систем привилегий, которые называют:


Тип

Описание

Перечень системных привилегий, назначаемых с помощью базового типа

CONNECT

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

CREATE SESSION

RESOURCE

Предоставляет право создавать таблицы и индексы

CREATE CLUSTER

CREATE DATABASE LINK

CREATE PROCEDURE

CREATE ROLLBACK SEGMENT

CREATE SEQUENCE

CREATE SYNONYM

CREATE TABLE

CREATE TABLESPACE

CREATE VIEW

DBA

(Database Administrator) – разрешает пользователю выполнять действия администратора базы данных, т.е. распоряжаться ею как своей собственной. Как правило, эту привилегию имеет пользователь (один или несколько) с функцией администрирования базы данных.

AUDIT SYSTEM

CREATE PUBLIC DATABASE LINK

CREATE PUBLIC SYNONYM

CREATE ROLE

CREATE USER



2.Команды управления данными предназначены для того, чтобы управлять доступом пользователей к базе данных. Команды управления данными включают в себя применяемые для предоставления и отмены полномочий команды GRANT и REVOKE, а также команду SET ROLE, которая разрешает или запрещает роли для текущего сеанса.

Команда GRANT

Назначает системные привилегии, роли и объектные привилегии пользователям и ролям.

Условия:

Чтобы назначить системную привилегию, необходимо либо иметь эту привилегию, причем она должна быть назначена с опцией WITH ADMIN OPTION, либо иметь системную привилегию GRANT ANY PRIVILEGE. Чтобы назначить роль, необходимо либо иметь эту роль, причем она должна быть назначена с опцией WITH ADMIN OPTION, либо иметь системную привилегию GRANT ANY ROLE.

Чтобы назначить привилегию на объект, необходимо либо иметь этот объект в своей схеме, либо иметь эту привилегию, причем она должна быть назначена с опцией GRANT OPTION.

Синтаксис (системная привилегия):




Ключевые слова и параметры:

system_priv — назначаемая системная привилегия

user — пользователь

role — назначаемая роль

PUBLIC — привилегия или роль передается всем пользователям

WITH ADMIN OPTION — если предоставлены системные полномочия или роли, то параметр позволяет пользователю передать полномочие или роль другим пользователям или ролям.

Синтаксис (объектная привилегия):



Ключевые слова и параметры:

object_priv — назначаемая объектная привилегия

column - специфицирует столбец таблицы или представления, по которому назначаются привилегии. Можно специфицировать столбцы только при назначении привилегии INSERT, REFERENCES или UPDATE. Если не указаны столбцы, то привилегия назначается по всем столбцам таблицы или представления

ON - идентифицирует объект, по которому назначаются привилегии. Если не указано имя схемы (schema), то считается, что объект находится в схеме того пользователя, который назначает привилегии

user — пользователь

role — назначаемая роль

PUBLIC — привилегия или роль передается всем пользователям

WITH ADMIN OPTION — если предоставлены системные полномочия или роли, то параметр позволяет пользователю передать полномочие или роль другим пользователям или ролям.

Пример 1. Предположим, пользователь Р1 является владельцем таблицы student и нужно передать пользователю Р2 право на формулирование запросов к этой таблице:

GRANT SELECT ON student TO P2;

Пример 2. Пользователь Р1, являющийся владельцем таблицы student, может разрешить пользователю Р2 вводить строки в нее:

GRANT INSERT ON student TO P2;

Пример 3. Передача привилегий не ограничивается передачей единственной привилегии единственному пользователю с помощью одной команды GRANT. Допустимы списки привилегий и/или пользователей с элементами, разделенными запятыми:

GRANT SELECT, INSERT ON student TO P2;

GRANT SELECT, INSERT ON student TO P2, Р3;

Пример 4. Можно разрешить пользователю изменять значения любого или всех столбцов таблицы:

GRANT UPDATE ON student TO P2;

GRANT UPDATE (fam,ball) ON student TO P2;

Пример 5. Если необходимо предоставить кому-то все полномочия на конкретный объект, используется ключевое слово ALL:

GRANT ALL ON student ТО Р2;

Пример 6. Когда передаются привилегии с атрибутом PUBLIC, который относится к пользователям, а не к привилегиям, то все пользователи получают их автоматически. Чаще всего это применяется для привилегии SELECT для определенных таблиц или представлений, которые нужно предоставить каждому пользователю для рассмотрения. Разрешить каждому пользователю просматривать таблицу student можно следующей командой:


GRANT SELECT ON student TO PUBLIC;

Пример 7. Иногда создатель таблицы хочет, чтобы другие пользователи имели право передавать привилегии на эту таблицу. Это можно сделать с помощью предложения WITH GRANT OPTION. Если пользователь Р1 желает, чтобы пользователь Р2 имел право передавать полномочия на работу с таблицей student другим пользователям, то он должен передать пользователю Р2 привилегию на выполнение соответствующих команд:

GRANT SELECT, INSERT ON student ТО Р2 WITH GRANT OPTION;

Пример 8. Владелец роли MY_ROLE хочет предоставить право на использование данной роли пользователю P2:

GRANT my_role ТО Р2;

Команда REVOKE

Отзывает системные привилегии, роли и объектные привилегии от пользователей и ролей. Ключевое слово ALL позволяет отменить все объектные привилегии.

Команда REVOKE может отзывать лишь те привилегии и роли, которые были назначены непосредственно командой GRANT. Команда REVOKE не может выполнять следующие операции:

  • отзывать привилегии или роли, которые не были назначены "отзываемому";

  • отзывать роли, которые были назначены через операционную систему;

  • отзывать привилегии или роли, которые были назначены "отзываемому" через роли.

Условия:

Пользователь должен иметь все отзываемые привилегии и роли, причем они должны быть назначены с опцией ADMIN OPTION. Кроме того, можно отозвать любую роль, если имеете системную привилегию GRANT ANY ROLE.

Синтаксис (отзыв системной привилегии):



Ключевые слова и параметры:

system_priv - отзываемая системная привилегия

role - отзываемая роль

user – пользователь

PUBLIC - отзывает системные привилегии или роли от всех пользователей

FROM - идентифицирует пользователей или роли, от которых отзываются системные привилегии и роли.

Синтаксис (отзыв объектной привилегии):



Ключевые слова и параметры:

object_priv - отзываемая объектная (ые) привилегия (и)

role - отзываемая роль

user – пользователь

ALL PRIVILEGES - отзывает все привилегии на объект, которые были назначены пользователю или роли

ON - идентифицирует объект, для которого отзываются привилегии. Если не указано имя схемы (schema) объекта, то ORACLE считает, что объект находится в схеме того пользователя, который отзывает привилегии