Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Answers v.0.6.docx
Скачиваний:
6
Добавлен:
26.09.2019
Размер:
244.13 Кб
Скачать

7. Подмножество языка ddl: операторы create, alter, drop. Представления, их значение; обновляемые представления.

Оператор Create служит для создания любого типа объектов, из которых состоит БД, в том числе таблиц.

Create Table <имя_таблицы>(

<поле1> <тип1> [<ограничения>],

[<поле2> <тип2> [<ограничения>],…]);

Возможные ограничения в таблицах:

  • Not Null — знач. атрибута не мб неопред.;

  • Unique — уникальный ключ; знач. полей уник.;

  • Primary Key — первичный ключ; поле явл. ПК;

  • Check — домен; условие, которому должны удовлетворять значения атрибута;

  • Default — присвоение значения «по умолчанию».

При создании таблицы можно сразу задать и ограничения декларативной и ссылочной целостности (если они касаются только одного атрибута). Если ключ должен быть составным, для его создания нужно применять команду Alter Table.

Create Table Dealers1(

D_ID Number,

Name Varchar2(30),

Percent Number (4,2),

Comments Varchar2(50) Default 'no comments');

Оператор Alter служит для изменения структуры любых объектов, из которых состоит БД.

Alter Table <имя_таблицы> Add <поле> <тип> [ограничения]; — добавление атрибута в таблицу.

Alter Table <имя_таблицы> Drop Column <поле>; — удаление атрибута таблицы.

Оператор Drop служит для удаления объектов из базы данных. Синтаксис удаления любого типа объекта из базы данных, в том числе таблицы, выглядит следующим образом:

Drop <тип_объекта> <имя_объекта>;

Таблица успешно удалится только в том случае, если на нее не ссылаются внешние ключи других таблиц. Если внешние ключи существуют, но нужно удалить таблицу, можно удалить все внешние ключи, ссылающиеся на удаляемую таблицу, после чего удалить ее. То же самое можно сделать с помощью параметра cascade constraints:

Drop Table Dealers cascade constraints;

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

Представления — это таблицы, чье содержание выбирается или получается из других таблиц.

Они работают в запросах и операторах DML точно также как и основные таблицы, но не содержат никаких собственных данных. Представления подобны окнам, через которые вы просматриваете инфу, которая фактически хранится в базовой таблице.

Create View Londonstaff as

Select * from Salespeople

Where City = 'London';

Обновляемые представления — получ. из одной таблицы исключ. некоторых строк и / или столбцов.

8. Подмножество языка dcl: операторы grant, revoke. Системные привилегии, привилегии на объекты, роли.

Сервер БД позволяет админу контролировать какие операции доступны каждому пользователю. Т. е. можно полностью контролир. доступ всех юзеров к инфе, а также разрешать и запрещать вып. к.-л. действий.

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

Объектная привилегия (object privilege) разрешает выполнение определенной операции над конкретным объектом (#, таблицей). Название каждой привилегии совпадает с названием оператора, который она разрешает выполнять пользователю над конкретным объектом. #: Select, Delete, Update, ….

Системная привилегия (system privilege) разрешает выполнение операций над всем классом объектов (объектами какого-то типа), принадлежащими конкретному пользователю, или вообще над всеми объектами какого-то типа во всей базе данных.

Предоставление и изъятие привилегий осущ. с помощью операторов DCL Grant (предоставлять, дарить) и Revoke (аннулировать, отзывать, лишать). Оба могут исп. для привилегий обоих видов.

Синтаксис Grant для объектных привилегий:

Grant <привилегия> on <объект> to <обладатель_привилегии>[with Grant Option]; 

Синтаксис Grant для системных привилегий: 

Grant <привилегия> to <обладатель_привилегии>[with Admin Option];

По умолчанию пользователь, получивший привилегию, не может передать ее другому пользователю. Право передачи регулируется наличием необязательного параметра with Grant Option для объектных и with Admin Option для системных привилегий. Пользователь, получивший привилегию с указанием данной опции, имеет право передавать привилегию далее.

Синтаксис Revoke для объектных привилегий: 

Revoke <привилегия> on <объект> from <обладатель_привилегии>

[cascade constraints];

Параметр cascade constraints имеет то же значение, что и в операторе Drop Table — если Grant отменяет привилегию References (разрешение создавать внешние ключи), то наличие параметра cascade constraints удалит все внешние ключи, созданные благодаря наличию данной привилегии.

Синтаксис Revoke для системных привилегий:

Revoke <привилегия> from <обладатель_привилегий>;

Специальная привилегия All используется, когда нужно предоставить все возмож. привилегии на объект.

Роль — именованный набор привилегий.

В БД, состоящей из 100 или более таблиц при появлении нового пользователя, которому нужно предоставить привилегии к разным объектам, администратор должен выполнить довольно большой объем работы и проконтролировать, что выданы все необходимые привилегии. Если пользователей много, раздача привилегий лишь командами Grant и Revoke может занять очень много времени и усилий. Похожая проблема возникает при появлении нового объект.

Эти проблемы решаются с помощью ролей. Обычно поступают так: сначала выделяют категории пользователей, которые должны иметь различные привилегии доступа к объектам БД. Для каждой из выделенных категорий пользователей формируется набор привилегий и объединяется в роль. Далее роль предоставляется всем пользователям, относящимся к к.-л. категории. Выдача или изъятие роли, независимо от кол-ва привилегий в ней, осуществляется с помощью тех же операторов Grant и Revoke.

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

Create Role student; — создание роли.

Grant select on TimeTable, Books to student; — выдача привилегий роли student.

GRANT student to PetrovAV, IvanovAA; — назначение роли student для пользователей. При включении привилегии в роль все, обладающие ей, получат включенную привилегию.

Revoke Select on Teachers from student; — при изъятии привилегии из роли все, облад. ей, перестанут владеть изъятой привилегией.

Встроенные роли:

Connect — роль, включ. привилегии, дающие возможность организации соединения (сессии) с БД.

Resource — роль, включ. привилегии, дающие возможность создавать любые объекты.

Public — роль, которой обладают все пользователи. При необходимости разрешить действия всем юзерам, нужно включить привилегию в роль Public.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]