Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

SQL в вопросах и задачах

.pdf
Скачиваний:
34
Добавлен:
21.05.2015
Размер:
917.91 Кб
Скачать

 

131

п ред став лениях,

д аже если сами эти п ред став ления обнов ляемые. Так как

в нешние ключ и

не п рименяются в п ред став лениях, то и п рив илегия

REFERENCES никогд а неисп ольз уетсяп ри соз д а нии п ред ста в лений.

6.6.1.О граничение привил егии SELECT дл я определ енны х ст ол бц ов

Пред п оложим, необход имо

обесп еч ить п ольз ов ателю PETROV

в оз можностьд оступ а только к столбца м STUDENT_ID и SURNAME таблицы

STUDENT. Э то можно сд ела ть,

п оместив имена этих столбцов в

п ред став ление

 

CREATE VIEW STUDENT_VIEW AS SELECT STUDENT_ID, SURNAME FROM STUDENT;

и п ред остав ить п ольз ов ателю PETROV п рив илегию SELECT в соз д анном п ред став лении, а нев са мой таблицеSTUDENT:

GRANT SELECT ON STUDENT_VIEW TO PETROV;

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

6.6.2. О граничение привил егий дл я определ енны х ст рок

Пред став ления п оз в оляют огра нич ить (фильтров ать)

п р ив илегии

д ля

оп ред еленных

строк таблицы. Д ля

э того

естеств енно

исп ольз ов ать в

п ред став лении

п ред ика т, который оп ред елит,

какие строки

в ключ ены

в

п ред став ление. Ч тобы п ред остав итьп ольз ов ателюPETROV п р ив илегию в ид а

UPDATE в таблице UNIVERSITY

д ля в сех з ап исей

о

М осков ских

унив ерситета х, можно соз д атьслед ующ ееп ред став ление:

 

 

 

CREATE VIEW MOSC_UNIVERSITY AS

SELECT * FROM UNIVERSITY

WHERE CITY = ‘М о сква

WITH CHECK OPTION;

 

 

132

 

 

Затем можно

п еред ать

п рив илегию UPDATE

в

этой та блице

п ольз ов ателюPETROV:

 

 

 

GRANT UPDATE ON MOSC_UNIVERSITY TO PETROV;

 

В отлич иеот п рив илегии UPDATE д ляоп ред еленных столбцов , которая

расп ространена на

в се строки

та блицы UNIVERSITY,

д анна я п рив илегия

относится только

к строка м,

д ля которых з нач ение п оля CITY рав но

М о сква ’. Пред ложение WITH CHECK OPTION п ред охраняет п ольз ов ателя

PETROV от з амены з нач енияп оляCITY на любоез нач ение,

кромез на ч ения

М о сква ’.

 

 

 

 

6.6.3.П редост авл ение дост упа т ол ь кок из вл еченны м данны м

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

CREATE VIEW DATETOTALS AS

SELECT EXAM_DATE, COUNT (*) AS KOL, SUM (MARK) AS SUMMA, AVG (MARK) AS TOT

FROM EXAM_MARKS GROUP BY EXAM_DATE;

Теп ерьможно п еред атьп ольз ов а телю PETROV п рив илегию SELECT в соз д а нномп ред ста в лении DATETOTALS с п омощ ьюз а п роса :

GRANT SELECT ON DATETOTALS TO PETROV;

133

6.6.4.И спол ь з ование предст авл ений в качест ве ал ь т ернат ивы ограничения м

Пред став ленияс WITH CHECK OPTION могут исп ольз ов атьсяв кач еств е альтернатив ы огра нич ениям. Н а п р имер, необход имо уд остов ериться, ч то в се з нач ения п оля CITY в та блице STUDENT ра в ны наз в аниям конкретных город ов . Д ляэтого можно уста нов итьогра нич ениеCHECK неп осред ств енно на столбец CITY. О д нако п оз жеего из менениебуд ет з атр уд нено. В кач еств е альтернатив ы можно соз д атьп ред став ление, исключ ающ ее неп ра в ильные з нач енияCITY:

CREATE VIEW CURCITYES AS SELECT *

FROM STUDENT

WHERE CITY IN (‘М о сква ’, ‘Во р о н еж ’)

WITH CHECK OPTION;

Теп ерь, в место того, ч тобы п ред остав лятьп ольз ов ателям п рив илегии

обнов ления в

таблице STUDENT, можно

п ред остав ить соотв етств ующ ие

п рив илегии

в

п ред став лении

CURCITYES.

Преимущ еств о та кого п од ход а

состоит в

том, ч то п ри необход имости

из менения можно

уд алить это

п ред став ление,

соз д а тьнов ое,

и п ред остав итьв

этом нов ом п р ед ста в лении

п рив илегии

п ольз ов ателям.

Та кая оп ерация

в ып олняется

п рощ е, ч ем

из менение огр анич ений в та блице. Н ед остатком э того метод а

яв ляется то,

ч то в ла д елец

та блицы STUDENT также д олжен исп ольз ов ать это нов ое

п ред став ление, инач еего собств енныекоманд ы такженебуд ут п риняты.

6.7. Д ругие т ипы привил егий

Д о сих п ор не рассмотрены в оп росы уста нов ки целого ряд а д ругих п рив илегий, а именно:

К то имеет п р ав о соз д а в атьта блицы?

К то имеет п р ав о из менять, уд алять, или огранич ив а тьтаблицы?

Д олжны ли п ра в а соз д ания баз ов ых та блиц отлич атьсяот п рав соз д ания

 

п ред ста в лений?

Д олжен ли сущ еств ов ать супер по льзо ва т ель, то есть п ольз ов атель,

 

 

 

134

 

 

 

 

отв еч ающ ий з а

п од д ержание баз ы д а нных

и,

след ов ательно, имеющ ий

наибольшие,

или п олные п р ив илегии,

которые не п ред остав ляются

обыч ному п ольз ов ателю?

 

 

 

 

 

Прив илегии,

которые не оп ред еляются в

термина х

сп ециа льных

объектов

д анных,

наз ыв а ются пр и ви леги ям и

си ст ем ы , или

пр а в а м и ба зы

д а нны х.

Э ти п рив илегии в ключ ают

себя п ра в о соз д ав атьобъекты д а нных,

отлич а ющ иеся

от

баз ов ых таблиц

(обыч но

соз д ав аемых

несколькими

п ольз ов ателями)

и п ред ста в лений

(обыч но

соз д ав а емых

большинств ом

п ольз ов ателей).

Прив илегии системы д ля соз д а ния п ред став лений д олжны

д оп олнять, а нез а менятьп рив илегии объекта,

которыестанд а рт тр ебует от

соз д а телей п ред став лений (оп исаны ранее).

К роме того, в любой системе

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

груп п ы п р ив илегий.

Та кого род а

п ольз ов ателем яв ляется так наз ыв аемый

а д м и ни ст р а т о р ба зы

д а нны х, или

DBA (DataBase Administrator).

6.8. Т ипичны е привил егии сист ем ы

При общ емп од ход еимеетсятри ба з ов ых п рив илегии системы:

CONNECT (Подключить),

RESOURCE (Ресурс) и

DBA (Администратор Базы Данных).

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

Прив илегияRESOURCE состоит из п ра в а соз д ав атьбаз ов ыетаблицы.

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

135

6.9. С оз дание и удал ение пол ь з оват ел ей

В

большинств е реализ а ций

SQL нов ого п ольз ов ателя

соз д ает

п ольз ов атель с п рив илегией DBA,

то есть а д министра тор баз ы

д а нных,

который

ав томатич ески п ред остав ляет нов ому п ольз ов ателю п р ив илегию

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

GRANT CONNECT TO PETROV IDENTIFIED BY PETROVPASSWORD’;

п рив ед ет к соз д аниюп ольз ов ателяс именемPETROV, п ред остав ит ему п рав о

регистриров а ться в

ба з е

д а нных,

и

наз нач ает

ему

п ароль

PETROVPASSWORD”.

После

этого,

так

как

PETROV

уже яв ляется

з арегистриров анным п ольз ов ателем,

он (или п ольз ов атель DBA)

может

исп ольз ов ать э ту

же команд у

д ля

из менения д анного

п а роля

PETROVPASSWORD”.

 

 

 

 

 

 

 

К огд а п ольз ов атель A п ред остав ляет п рив илегию CONNECT д ругому п ольз ов ателюB, гов орят, ч то п ольз ов а тельA со зд а ет ” п ольз ов ателяB. При этом п ольз ов атель A обяз ательно д олжен иметь п р ив илегию DBA. Е сли

п ольз ов атель B

буд ет соз д а в ать

баз ов ые

таблицы (а

не только

п ред став ления),

ему также д олжна

быть

п ред остав лена

п рив илегия

RESOURCE. Н о п ри э томв оз никает д ругаяп роблема . Пр и п оп ыткеуд а ления п ольз ов ателем A п р ив илегии CONNECT п ольз ов ателя B, который ужеимеет соз д а нныеим таблицы, эта кома нд а уд а ления п рив илегии буд ет отклонена ,

п оскольку ее д ейств ие остав ит эти та блицы без

в лад ельца, ч то

не

д оп ускается. Поэ тому, п режд еч ем уд а литьп рив илегию CONNECT ка кому-

либо п ольз ов ателю, снач а ла необход имо уд а лить из

ба з ы д анных

в се

соз д а нные этим п ольз ов ателем таблицы. Прив илегию RESOURCE уд а лять отд ельно не требуется, д остаточ но уд алить CONNECT, ч тобы уд а лить п ольз ов ателя.

УП Р АЖ НЕ НИ Я

116.

Перед айте п ольз ов ателю PETROV п рав о на из менение в баз е д анных

з нач ений оценок д ляз ап исей о студ ентах.

117.

Перед айте п ольз ов ателю SIDOROV п р а в о п еред ав ать д ругим

136

п ольз ов ателямп рав а на осущ еств лениез ап росов к та блицеEXAM_MARKS.

118. О тменитеп рив илегию INSERT п о отношению к таблицеSTUDENT у

п ольз ов ателя

IVANOV и у

в сех

д ругих п ольз ов ателей, которым

п рив илегия, в

св ою оч еред ь,

была

п ред остав лена этим п ольз ов а телем

IVANOV.

 

 

 

119. Перед айтеп ольз ов ателю SIDOROV п рав о в ып олнятьоп ерации в став ки или обнов ления д ля таблицы UNIVERSITY, но только д ля з ап исей об унив ерситетах, з нач ениярейтингов которых лежат в д иа п аз онеот 300 д о

400.

120. Ра з решите п ольз ов ателю PETROV д ела ть з а п росы к та блице EXAM_MARKS, но з ап ретитеему из менятьв этой та блицез нач енияоценок студ ентам, имеющ имнеуд ов летв орительные(=2) оценки.

6.10. С оз дание синоним ов (SYNONYM)

К ажд ый раз п ри

ссылке к баз ов ой таблице или п ред став лению,

не

яв ляющ имися собств енностью п ольз ов ателя, требуется установ ить

в

кач еств е п рефикса к

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

система несможет оп ред елитьместона хожд ениетаблицы, так ка к у раз ных п ольз ов ателей могут оказ а ться таблицы с од инаков ыми именами. Исп ольз ов а ние д линных имен с п рефикса ми может ока з аться неуд обным. Поэтому большинств о реа лиз а ций SQL п оз в оляют соз д ав а ть д ля таблиц синонимы (ч то неяв ляетсяста нд артомANSI). Си но ни м – это альтернатив ное

имя таблицы.

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

собств енником,

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

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

С п омощ ью кома нд ы CREATE SYNONYM п ольз ов ательIVANOV может д ля таблицы с именем PETROV.STUDENT соз д а ть синоним с именем CLIENTS след ующ имобраз ом.

CREATE SYNONYM CLIENTS FOR PETROV.STUDENT;

137

Теп ерьп ольз ов ательIVANOV может исп ольз ов атьтаблицу с именем CLIENTS в кома нд еточ но та к же, как имяPETROV.STUDENT.

К ак уже гов орилось, п рефикс п ольз ов а теля –

э то фактич ески

ч а сть

имени любой таблицы.

Всякий раз ,

когд а

п ольз ов атель не указ ыв ает

собств енное имя в месте с

именем св оей

та блицы, SQL п о умолч а нию

п од ста в ляет

ид ентификатор

п ольз ов а теля

в

кач еств е п рефикса

имени

таблицы. След ов ательно,

д в а

од инаков ых имени таблицы, но св яз а нные с

раз лич ными

в лад ельцами,

ста нов ятся неид ентич ными и, след ов ательно,

не

п рив од ят к

какой-либо

п утанице в

з ап росах.

Та ким обра з ом,

д в а

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

если п ред став ление п росто исп ольз ует CHECK

OPTION как

з аменитель

огранич енияCHECK в баз ов ой таблице. М ожно такжесоз д ав ать собств енные

синонимы

п ольз ов а теля, имена

котор ых

буд ут

такими

же,

как и

п ерв онач альные имена

таблиц. Н ап р имер,

п ольз ов атель PETROV

может

оп ред елитьимяSTUDENT как св ой синонимд лятаблицы IVANOV.STUDENT

с п омощ ьюз ап р оса :

 

 

 

 

 

 

 

 

 

CREATE SYNONYM STUDENT FOR IVANOV.STUDENT;

 

 

 

 

С точ ки з ренияSQL, теп ерьимеютсяд в а ра з ных имени од ной та блицы:

IVANOV.STUDENT

и

PETROV.STUDENT.

О д нако

ка жд ый

из

этих

п ольз ов ателей может

обращ аться к д а нной

таблице,

исп ольз уя имя

STUDENT.

SQL,

ка к

гов орилось в ыше,

сам

д обав ит

к

этому

имени

нед остающ иеимена п ольз ов ателей

кач еств еп рефиксов .

 

 

 

 

138

6.11.С иноним ы общ егопол ь з ования

(PUBLIC)

Е сли п ланируется

исп ольз ов ать та блицу STUDENT большим ч ислом

п ольз ов ателей, уд обнее,

ч тобы в сеп ольз ов атели ссыла лиськ ней с п омощ ью

од ного и того же имени. Э то д аст в оз можность, на п ример, исп ольз ов ать

указ а нное имя без огранич ений в п риклад ных п рогра мма х.

Ч тобы соз д ать

ед иноеимяд ляв сех п ольз ов ателей, соз д аетсяобщ ий синоним.

 

Н а п ример, если в сеп ольз ов а тели буд ут в ыз ыв атьтаблицу STUDENT с

д анными о студ ентах,

можно п р исв оить ей о бщи й синоним STUDENT

след ующ имобраз ом:

 

 

CREATE PUBLIC SYNONYM STUDENT FOR STUDENT;

 

О бщ ие синонимы

основ ном соз д аются в лад ельцами

объектов или

п ольз ов ателями с п рив илегиями ад министратора баз ы д анных (п ольз ов а тель

DBA). Д р угим п ольз ов ателям

п р и этом д олжны

быть п ред остав лены

соотв етств ующ ие п р ив илегии в

таблице STUDENT,

ч тобы она была им

д оступ на. Д ажеесли имяяв ляетсяобщ им, сама таблица общ ей неяв ляется.

6.12. Удал ение синоним ов

О бщ иеи д ругиесинонимы могут уд алятьсякома нд ой DROP SYNONYM. Синонимы могут уд алятьсятолько их в лад ельца ми, кр омеобщ их синонимов ,

которые

могут уд а ляться соотв етств ующ ими п рив илегиров а нными

п ольз ов ателями (обыч но это п ольз ов атели DBA). Ч тобы уд алить,

на п ример,

синоним

CLIENTS, когд а в место него уже п ояв ился общ ий

синоним

STUDENT, п ольз ов ательможет в в ести кома нд у

 

DROP SYNONYM CLIENTS;

139

7. Упр а влен и етр а н за кци ями

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

д анных не в сегд а

могут наход иться в согласов а нном состоянии. В случ ае

в оз никнов ения

ка ких-либо

сбое ,

когд а

логич ески

св яз анная

п ослед ов ательностьз ап р осов

не д ов ед ена

д о конца, в оз можно

нарушение

целостности д анных в баз е. Д ляобесп еч енияцелостности д анных логич ески

св яз анные

п ослед ов а тельности

з ап росов ,

нед елимые

с точ ки

з рения

в оз д ейств ия на баз у

д а нных, объед иняют

так

наз ыв аемые т р а нза кци и .

Зап росы,

состав ляющ ие

транз а кцию,

д олжны

или

в ып олняться в се

п олностью –

с п ерв ого

д о п ослед него, и

тогд а

транз акция з ав ер шается

команд ой

COMMIT, или,

если в

силу

каких-либо в нешних

п р ич ин это

оказ ыв ается нев оз можным, в несенные з а п росами

транз акции

из менения в

баз е д а нных

д олжны

аннулиров аться кома нд ой

ROLLBACK.

Во

в тором

случ а е баз а

д анных

в оз в ращ ается в

целостное состояние на

момент,

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

Н ов а я транз а кция нач инается п осле кажд ой кома нд ы

COMMIT или

ROLLBACK.

 

 

 

В большинств е реализ а ций можно установ ить п араметр, наз ыв аемый

AUTOCOMMIT.

О н буд ет

а в томатич ески з ап омина ть в се

в ып олняемые

д ейств ия над

д а нными.

Д ейств ия, которые п рив ед ут к

ошибке п ри

нез а в ершенной транз акции, в сегд а буд ут а в томатич ески “откатаны” обра тно.

Имеется в оз можностьуста нов ки режима AUTOCOMMIT а в томатич ески п ри р егистрации. Е сли сеанс п ольз ов а теляз ав ерша етсяав а рийно, на п ример, п роиз ошел сбой системы или в ып олнена п ер ез агруз ка п ольз ов ателя, то текущ ая транз акция в ып олнит а в томатич еский откат из менений. Э то – од на из в оз можностей уп ра в ления в ып олнением д иа логов ой обработки з ап росов п утем ра з д еления кома нд на большое колич еств о ра з лич ных тр анз акций. О д иноч ная транз а кция не д олжна сод ержатьслишком много несв яз анных команд , на п рактикеона ч а сто состоит из ед инств енной команд ы. Х орошее п рав ило, которому можно след ов ать– это соз д ав атьтранз а кции из од ной команд ы или нескольких близ ко св яз анных команд .

Н а п ример, требуетсяуд а литьсв ед енияо студ ентеп о фамилии ‘Ива н о в’ из баз ы д анных. Прежд е, ч емсв ед енияиз таблицы STUDENT буд ут уд а лены,

140

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

UPDATE EXAM_MARKS

SET STUDENT_ID = NULL

WHERE STUDENT_ID = 1004;

DELETE FROM STUDENT

WHERE STUDENT_ID = 1004;

Е сли в оз никает п роблема с уд а лением з ап иси о студ ентес фа милией ‘Ива н о в’ (в оз можно, имеетсяд ругой в нешний ключ , ссылающ ийсяна него, о котором небыло из в естно, и, соотв етств енно, неуч тено п ри уд алении), можно было бы отменитьв сесд ела нныеиз менения, п о кра йней мере, д о тех п ор, п ока п роблема небуд ет решена . Д ляэ того п рив ед еннуюгр уп п у команд след ует обрабатыв ать как од иноч ную тра нз акцию, п ред усматрив ая ее з ав ершениес п омощ ью команд ы COMMIT или ROLLBACK – в з ав исимости от рез ультата.

УП Р АЖ НЕ НИ Я

121. Вы п еред али п ра в о SELECT в таблице EXAM_MARKS п ольз ов ателю IVANOV. Вв ед итекома нд у так, ч тобы в ы могли ссылатьсяк э той таблице, как к EXAM_MARKS, неисп ольз уяимяIVANOV в кач еств еп рефикса .

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

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