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

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

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

Добавлен: 02.04.2021

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

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

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

5. 

Пр едста влен и я

(VIEW)

5.1. 

П редставл ения

им енованны е

з апросы

Д о

сих

п ор

реч ь

шла

о

та блица х

обыч но

на з ыв а емых

ба з ов ыми

та блица ми

Э то

та блицы

которые

сод ержа т

д а нные

О д на ко

имеется

и

д ругой

в ид

та бл иц

на з ыв а емый

VIEW

или

ПРЕДСТАВЛЕНИЯ

Та блицы–

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

не

сод ержа т

ника ких

собств енных

д а нных

Фа ктич ески

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

эт о

им енов а нна я

т а бли ца

со д ер ж и м о е

ко т о р о й

являет ся

р езульт а т о м

за пр о са

за д а нно го

пр и

о пи са ни и

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

Прич ем

д а нный

з а п рос

в ып олняется

в сякий

раз

когд а

та блица

-

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

ста нов ится

объектом

кома нд ы

  SQL. 

Выв од

з а п роса

п ри

э том

в

ка жд ый

момент

ста нов ится

сод ержа нием

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

Пред ста в ления

п оз в оляют

огранич ив а ть

ч исло

столбцов

из

которых

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

в ыбирает

или

в

которые

в в од ит

д а нные

огранич ив а ть

ч исло

строк

из

которых

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

в ыбира ет

или

в

которые

в в од ит

д а нные

;  

в ыв од ить

д оп олнительные

столбцы

п реобраз ов а нные

из

д ругих

столбцов

ба з ов ой

та блицы

в ыв од ить

груп п ы

стр ок

та блицы

Б ла год а р я

э тому

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

д а ют

в оз можность

гибкой

на стройки

в ыв од имой

из

та блиц

информа ции

в

соотв етств ии

с

требов а ниями

конкретных

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

п оз в оляют

обесп еч ив а ть

з а щ иту

информа ции

на

уров не

строк

и

столбцов

уп рощ а ют

формиров а ние

сложных

отч етов

и

в ыход ных

форм

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

оп ред еляется

с

п омощ ью

кома нд ы

CREATE

VIEW

(

СОЗДАТЬ

ПРЕДСТАВЛЕНИЕ

). 

Н а п ример

CREATE

VIEW

   

MOSC

_

STUD 

AS

  

SELECT

 * 

FROM

STUDENT

WHERE

CITY

 = 

М о ск

ва


background image

112

Д а нные

из

ба з ов ой

та блицы

п ред ъяв ляемые

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

в

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

з а в исят

от

услов ия

  (

п ред ика та

), 

оп иса нного

в

SELECT-

з а п росе

п ри

оп ред елении

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

В

соз д а нную

в

результа те

п р ив ед енного

в ыше

з а п роса

та блицу

-

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

MOSC

_

STUD

п ер ед а ются

д а нные

из

ба з ов ой

та блицы

STUDENT

но

не

в се

а

только

з а п иси

о

студ ента х

д ля

которых

з на ч ение

п оля

CITY

ра в но

М о ск

ва

К

та блице

MOSC

_

STUD

можно

теп ерь

обращ а ться

с

п омощ ью

з а п росов

та к

же

ка к

и

к

л юбой

д ругой

та блице

ба з ы

д а нных

Н а п ример

з а п рос

д ля

п росмотра

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

MOSC

_

STUD

имеет

в ид

SELECT

 * 

FROM

MOSC

_

STUD

5.2. 

П редставл ения

т абл иц

Ра з лич а ют

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

та блиц

и

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

столбцов

В

п ростейшем

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

та блиц

в ыбираются

в се

строки

и

столбцы

ба з ов ой

та блицы

CREATE

VIEW

   

NEW

_

STUD

_

TAB 

AS

  

SELECT

 * 

FROM

STUDENT

Та кое

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

п о

сути

э кв ив а лентно

п рименению

синонима

но

яв ляется

менее

э ффектив ным

п оэ тому

п рименяется

ред ко

5.3. 

П редставл ения

стол бц ов

В

п ростейшем

в ид е

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

столбцов

в ыбирает

в се

строки

и

столбцы

п од обно

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

та бл иц

кроме

того

в

ка ч еств е

имен

столбцов

п рименяются

п сев д онимы

Н а п ример

CREATE

VIEW

   

NEW

_

STUDENT

(NEW

_

STUDENT

_

ID

NEW

_

SURNAME

NEW

_

NAME

NEW

_

STIPEND

,  

  

NEW

_

KURS

NEW

_

CITY

NEW

_

BIRTHDAY

NEW

_

UNIV

_

ID

AS

  

SELECT

STUDENT

_

ID

SURNAME

NAME

STIPEND

,  


background image

113

KURS

CITY

BIRTHDAY

UNIV

_

ID

FROM

STUDENT

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

столбцов

яв ляется

п ростым

сп особом

орга низ а ции

общ ей

та блицы

д ля

груп п ы

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

или

п рикла д ных

з а д а ч

которые

исп ользуют

собств енные

имена

п олей

и

та блицы

5.4. 

М одиф иц ирование

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

  

Д а нные

п ред ъяв ляемые

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

ч ерез

   

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

могут

из меняться

с

п омощ ью

кома нд

мод ифика ции

 DML, 

но

п ри

этом

фа ктич еска я

мод ифика ция

д а нных

буд ет

осущ еств ляться

не

в

са мой

в иртуа льной

та бл ице

-

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

а

буд ет

п ерена п рав лена

к

соотв етств ующ ей

ба з ов ой

та блице

Н а п ример

з а п рос

на

обнов ление

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

NEW

_

STUDENT 

UPDATE 

NEW

_

STUDENT 

SET

CITY

 = 

М о ск

ва

WHERE

STUDENT

_

ID

 = 

1004

э кв ив а лентен

в ып олнению

кома нд ы

UPDATE

на д

ба з ов ой

та блицей

STUDENT

След ует

од на ко

обратить

в нима ние

на

то

ч то

в

общ ем

случ а е

из

-

з а

того

ч то

обыч но

в

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

отобража ются

д а нные

из

ба з ов ой

та блицы

в

пр ео бр а зо ва нно м

или

усеченно м

в ид е

п рименение

кома нд

мод ифика ции

к

та блица м

-

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

имеет

некоторые

особенности

рассма трив а емые

ниже

5.5. 

М аскирую щ ие

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

5.5.1. 

П редставл ения

м аскирую щ ие

ст ол бц ы

Д а нный

в ид

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

огранич ив а ет

ч исло

столбцов

ба з ов ой

та блицы

к

которым

в оз можен

д оступ

Н а п ример

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

  

CREATE

VIEW

  

STUD 

AS

  

SELECT

STUDENT

_

ID

SURNAME

CITY

FROM

STUDENT

;  

д а ет

д оступ

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

к

п олям

STUDENT

_

ID

SURNAME

CITY

ба з ов ой


background image

114

та блицы

STUDENT

п олностью

скрыв а я

от

него

ка к

сод ержимое

та к

и

са м

фа кт

на лич ия

в

ба з ов ой

та блице

п олей

NAME

STIPEND

KURS

BIRTHDAY

и

UNIV

_

ID

5.5.2. 

О перац ии

м одиф икац ии

в

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

м аскирую щ их

ст ол бц ы

Пред ста в ления

ка к

уже

отмеч а лось

в ыше

могут

из меняться

с

п омощ ью

кома нд

мод ифика ции

  DML, 

но

п ри

этом

мод ифика ция

д а нных

буд ет

осущ еств ляться

не

в

са мой

та блице

-

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

а

в

соотв етств ующ ей

ба з ов ой

та блице

В

св яз и

с

э тим

с

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

ма скирующ ими

столбцы

функции

в ста в ки

и

уд а ления

работа ют

несколько

ина ч е

ч ем

с

обыч ными

та бл ица ми

О п ератор

INSERT

п римененный

к

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

фа ктич ески

осущ еств ляет

в ста в ку

строки

в

соотв етств ующ ую

ба з ов ую

та блицу

п р ич ем

в о

в се

столбцы

э той

та блицы

неза в исимо

от

того

в ид ны

они

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

ч ерез

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

или

скрыты

от

него

В

св яз и

с

э тим

в

столбца х

не

в ключ енных

в

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

уста на в лив а ется

NULL

-

значение

или

з на ч ение

п о

умолч а нию

Е сли

не

в ключ енный

в

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

столбец

имеет

оп цию

NOT

NULL

то

генерируется

сообщ ение

об

ошибке

Л юбое

п рименение

оп ер а тора

DELETE

уд а ляет

строки

ба з ов ой

та блицы

неза в исимо

от

их

з на ч ений

5.5.3. 

П редставл ения

м аскирую щ ие

строки

Пред ста в ления

могут

та кже

огр а нич ив а ть

д оступ

к

строка м

О хв а тыв а емые

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

строки

ба з ов ой

та блицы

з а д а ются

услов ием

(

п ред ика том

в

конструкции

WHERE

п р и

оп иса нии

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

Д оступ

ч ерез

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

в оз можен

только

к

строка м

уд ов летв оряющ им

услов ию

Н а п ример

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

CREATE

VIEW 

MOSC

_

STUD 

AS

  

SELECT

 * 

FROM

STUDENT 

WHERE

CITY

 = 

М о ск

ва


background image

115

п ока з ыв а ет

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

только

те

строки

та блицы

STUDENT

д ля

которых

з на ч ение

п оля

CITY

рав но

М о сква

5.5.4. 

О перац ии

м одиф икац ии

в

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

м аскирую щ их

строки

К а жд а я

в ключ енна я

в

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

строка

д оступ на

д ля

в ыв од а

обнов ления

и

уд а ления

Л юба я

д оп устима я

д ля

основ ной

та блицы

строка

в ста в ляется

в

ба з ов ую

та блицу

неза в исимо

от

ее

в ключ ения

в

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

При

этом

может

в оз никнуть

п роблема

состоящ а я

в

том

ч то

з на ч ения

в в ед енные

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

в

ба з ов ую

та бл ицу

ч ерез

  

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

з на ч ений

буд ут

отсутств ов а ть

в

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

оста в а ясь

п ри

этом

в

ба з ов ой

та блице

Ра ссмотрим

та кой

случ а й

CREATE

VIEW

  

HIGH

_

RATING

 AS

SELECT

 * 

FROM

UNIVERSITY

WHERE

RATING

 = 

300

Э то

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

яв ляется

обнов ляемым

О но

п росто

огранич ив а ет

д оступ

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

к

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

столбца м

и

строка м

в

та блице

UNIVERSITY

Пред п оложим

необход имо

в ста в ить

с

п омощ ью

кома нд ы

INSERT

след ующ ую

строку

INSERT

INTO

HIGH

_

RATING

VALUES

 (

180

Н о вы й

ун и вер си тет

200

Во р о н еж

); 

К ома нд а

  INSERT

д оп устима

в

э том

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

С

п омощ ью

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

HIGH

_

RATING

строка

буд ет

в ста в лена

в

ба з ов ую

та блицу

UNIVERSITY

О д на ко

п осле

п ояв ления

э той

строки

в

ба з ов ой

та блице

и з

са м о го

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

о на

и счезнет

п оскольку

з на ч ение

п оля

RATING

не

рав но

  300, 

и

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

э та

строка

не

уд ов летв оряет

услов ию

п ред ложения

WHERE

д ля

отбора

строк

в

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

Д ля

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

та кое

исч ез нов ение

только

ч то

в в ед енной

строки

яв ляется

неожид а нным

Д ейств ительно

не

п онятно

п оч ему

п осле

в в од а

строки

в

та блицу

ее

нельзя

ув ид еть

и

на п ример

тут

же

уд а лить

Тем

более

ч то

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

в ообщ е

может

не

з на ть

р а бота ет

он

в

д а нный

момент

с

ба з ов ой

та блицей

или

с

та блицей

-

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

.  

А на логич на я

ситуа ция

в оз никнет

если

в

ка кой

-

либо

сущ еств ующ ей