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

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

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

Добавлен: 02.04.2021

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

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

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

116

з а п иси

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

HIGH

_

RATING

из менить

з на ч ение

п оля

RATING

на

з на ч ение

отл ич ное

от

 300.  

Под обные

п роблемы

можно

устранить

п утем

в ключ ения

в

оп ред еление

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

оп ции

WITH

CHECK

OPTION

Э та

оп ция

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

услов ие

WHERE

д ля

з а п р оса

на

оп ера ции

обнов ления

и

в ста в ки

в

оп иса ние

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

Н а п ример

CREATE

VIEW

HIGH

_

RATUNG

 AS

SELECT

 * 

FROM

UNIVERSITY

WHERE

RATING

 = 

300

  

WITH

CHECK

OPTION

В

э том

случ а е

в ышеуп омянутые

оп ера ции

в ста в ки

строки

или

коррекции

п оля

RATING

буд ет

отклонены

О п ция

WITH

CHECK

OPTION

п омещ а ется

в

оп ред еление

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

а

не

в

кома нд у

DML

та к

ч то

в се

кома нд ы

мод ифика ции

в

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

буд ут

п ров еряться

Рекоменд уется

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

э ту

оп цию

в о

в сех

случ а ях

когд а

нет

п рич ины

раз реша ть

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

п омещ а ть

в

та блицу

з на ч ения

которые

в

нем

са мом

не

могут

быть

в ид ны

5.5.5. 

О перац ии

м одиф икац ии

в

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

м аскирую щ их

строки

и

стол бц ы

  

Ра ссмотренна я

в ыше

п роблема

в оз ника ет

и

п ри

в ста в ке

строк

в

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

с

п ред ика том

исп ользующ им

п оля

ба з ов ой

та блицы

не

п рисутств ующ ие

в

са мом

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

Н а п р имер

ра ссмотрим

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

  

CREATE

VIEW

  

MOSC

_

STUD

 AS

SELECT

STUDENT

_

ID

SURNAME

STIPEND

FROM

STUDENT

WHERE

CITY

 = 

М о ск

ва

Вид но

ч то

в

д а нное

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

не

в ключ ено

п оле

CITY

та блицы

STUDENT

Ч то

буд ет

п роисход ить

п ри

п оп ытка х

в ста в ки

строки

в

э то


background image

117

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

Та к

ка к

мы

не

можем

ука з а ть

з на ч ение

CITY

в

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

ка к

з на ч ение

п о

умолч а нию

  (

в в ид у

отсутств ия

в

нем

э того

п оля

), 

то

э тим

з на ч ением

буд ет

NULL

и

оно

буд ет

в в ед ено

в

п оле

CITY

ба з ов ой

та блицы

STUDENT

 (

сч ита ем

ч то

д ля

э того

п оля

оп ция

NOT

NULL

не

исп ользуется

). 

Та к

ка к

в

э том

случ а е

з на ч ение

п оля

CITY

ба з ов ой

та блицы

STUDENT

не

буд ет

рав няться

з на ч ению

М о ск

ва

в ста в ляема я

стр ока

буд ет

исключ ена

из

са мого

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

и

п оэ тому

не

буд ет

в ид на

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

Прич ем

та к

буд ет

п р оисход ить

д ля

любо й

в ста в ляемой

в

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

MOSC

_

STUD

строки

Д ругими

слов а ми

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

в ообщ е

не

сможет

в ид еть

строки

в в од имые

им

в

э то

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

Д а нна я

п роблема

не

реша ется

и

в

случ а е

если

в

оп р ед еление

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

буд ет

д оба в лена

оп ция

 WITH

CHECK

OPTION

  

CREATE

VIEW

  

MOSC

_

STUD

 AS

SELECT

STUDENT

_

ID

SURNAME

STIPEND

FROM

STUDENT

WHERE

CITY

 = 

М о ск

ва

WITH

CHECK

OPTION

Та ким

образ ом

в

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

ука з а нными

сп особа ми

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

можно

мод ифициров а ть

з на ч ения

п олей

или

уд а лять

строки

но

нельзя

в ст а в лят ь

строки

Исход я

из

э того

рекоменд уется

д а же

в

тех

случ а ях

когд а

э того

не

требуется

п о

соображениям

п олез ности

  (

и

д а же

безоп а сности

информа ции

п ри

оп ред елении

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

в ключ а ть

в

него

в се

п оля

на

которые

имеется

ссылка

в

п ред ика те

Е сли

э ти

п оля

не

д олжны

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

в

в ыв од е

та блицы

в сегд а

можно

исключ ить

их

уже

в

з а п росе

к

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

Д ругими

слов а ми

можно

было

бы

оп ред елить

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

MOSC

_

STUD

  

п од обно

след ующ ему

CREATE

VIEW

  

MOSC

_

STUD 

AS 

SELECT

 * 

FROM

STUDENT 

WHERE

CITY

 = 

М о ск

ва

WITH

CHECK

OPTION

Э та

кома нд а

з а п олнит

в

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

п оле

CITY

од ина ков ыми

з на ч ениями

которые

можно

п росто

исключ ить

из

в ыв од а

с

п омощ ью

д ругого

з а п роса

уже

к

э тому

сформиров а нному

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

ука з а в

в

з а п росе

только

п оля

необход имые

д ля

в ыв од а

.  


background image

118

SELECT

STUDENT

_

ID

SURNAME

STIPEND

FROM

MOSC

_

STUD

5.6. 

Агрегированны е

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

Соз д а ние

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

с

исп ользов а нием

а грегиров а нных

функций

и

п ред ложения

GROUP

BY

яв ляется

уд обным

инстр ументом

д ля

неп рерыв ной

обработки

и

интер п рета ции

из в лека емой

информа ции

Пред п оложим

необход имо

след ить

з а

колич еств ом

студ ентов

сд а ющ их

э кз а мены

колич еств ом

сд а нных

э кз а менов

колич еств ом

сд а нных

п ред метов

сред ним

ба ллом

п о

ка жд ому

п ред мету

Д ля

э того

можно

сформиров а ть

след ующ ее

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

CREATE

VIEW

  

TOTALDAY

 AS

SELECT

EXAM

_

DATE

COUNT

(

DISTINCT

SUBJ

_

ID

AS

SUBJ

_

CNT

,  

COUNT

(

STUDENT

_

ID

AS

STUD_CNT

,     

COUNT

(

MARK

) AS

MARK

_

CNT

,  

AVG

(

MARK

)

 AS

MARK

_

AVG

SUM

(

MARK

)

 AS

MARK

_

SUM

FROM

EXAM

_

MARKS

GROUP

BY

EXAM

_

DATE

Теп ерь

требуемую

информа цию

можно

ув ид еть

с

п омощ ью

п ростого

з а п роса

к

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

SELECT

 * 

FROM

TOTALDAY

5.7. 

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

основанны е

на

нескол ь ких

т абл иц ах

  

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

ч а сто

исп ользуются

д ля

объед инения

нескольких

та блиц

(

ба з ов ых

и

/

или

д ругих

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

в

од ну

большую

в ир туа льную

та блицу

Та кое

решение

имеет

ряд

п р еимущ еств

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

объед иняющ ее

несколько

та блиц

может

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

ка к

п ромежуточ ный

ма кет

п ри

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

сложных

отч етов

скрыв а ющ ий

д ета ли

объед инения

большого

колич еств а

исход ных

та блиц

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

объед иненные

п оисков ые

и

ба з ов ые

та блицы


background image

119

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

на илуч шие

услов ия

д ля

транз а кций

п оз в оляют

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

комп а ктные

схемы

код ов

устраняя

необход имость

на п иса ния

д ля

ка жд ого

отч ета

д линных

объед иняющ их

п роцед ур

п оз в оляет

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

п ри

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

отч етов

более

на д ежный

мод ульный

п од ход

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

объед иненные

и

п ров еренные

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

уменьша ют

в ероятность

ошибок

св яз а нных

с

неп олным

в ып олнением

услов ий

объед инения

М ожно

на п ример

соз д а ть

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

которое

п ока з ыв а ет

имена

и

на з в а ния

сд а нных

п ред метов

д ля

ка жд ого

студ ента

CREATE

VIEW

  

STUD

_

SUBJ

 AS

SELECT

A

.

STUDENT

_

ID

C

.

SUBJ

_

ID

A

.

SURNAME

C

.

SUBJ

_

NAME

FROM

STUDENT

A

EXAM

_

MARKS

B

SUBJECT

C

WHERE

A

.

STUDENT

_

ID

 = 

B

.

STUDENT

_

ID

AND

B

.

SUBJ

_

ID

 = 

C

.

SUBJ

_

ID

Теп ерь

в се

п ред меты

студ ента

или

в сех

студ ентов

д ля

ка жд ого

п ред мета

можно

в ыбра ть

с

п омощ ью

п ростого

з а п роса

Н а п р имер

ч тобы

ув ид еть

в се

п ред меты

сд а нные

студ ентом

Ива н о вы м

п од а ется

з а п рос

:  

SELECT

 SUBJ

_

NAME  

FROM

STUD

_

SUBJ

WHERE

SURNAME

 = 

Ива н о в

5.8. 

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

и

подз апросы

При

соз д а нии

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

могут

та кже

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

и

п од з а п р осы

в ключ а я

св яз а нные

п од з а п росы

Пред п оложим

п ред усма трив а ется

п ремия

д ля

тех

студ ентов

которые

имеют

са мый

в ысокий

ба лл

на

любую

з а д а нную

д а ту

Пол уч ить

  

та кую

информа цию

можно

с

п омощ ью

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

CREATE

VIEW

ELITE

_

STUD

AS

SELECT

B

.

EXAM

_

DATE

A

.

STUDENT

_

ID

A

.

SURNAME

FROM 

STUDENT

A

EXAM

_

MARKS

B

WHERE 

A

.

STUDENT

_

ID

 = 

B

.

STUDENT

_

ID

AND 

B

.

MARK

 = 

SELECT MAX

 (

MARK


background image

120

 FROM 

EXAM

_

MARKS

 WHERE 

C

.

EXAM

_

DATE

 = 

B

.

EXAM

_

DATE

); 

Е сли

с

д ругой

стороны

п ремия

буд ет

на з на ч а ться

только

студ енту

который

имел

са мый

в ысокий

ба лл

и

не

меньше

  10-

ти

ра з

то

необход имо

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

д р угое

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

основ а нное

на

п ер в ом

CREATE

VIEW

  

BONUS

AS SELECT DISTINCT

STUDENT

_

ID

SURNAME

FROM

ELITE

_

STUD

A

WHERE 

10

 < = 

SELECT COUNT

(*)

 FROM 

ELITE

_

STUD

B

 WHERE

A

.

STUDENT

_

ID

 = 

B

.

STUDENT

_

ID

); 

Из в леч ение

из

э той

та блицы

з а п исей

о

студ ента х

которые

буд ут

п олуч а ть

п ремию

в ып олняется

п ростым

з а п росом

SELECT 

*

 FROM BONUS

5.9. 

О граничения

прим енения

операт ора

SELECT

дл я

соз дания

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

Имеются

некоторые

в ид ы

з а п росов

не

д оп устимые

в

оп ред елениях

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

О д иноч ное

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

д олжно

основ ыв а ться

на

од иноч ном

з а п росе

п оэ тому

UNION

и

UNION

ALL

в

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

не

раз реша ются

Пред ложение

ORDER

BY

та кже

никогд а

не

исп ол ьзуется

в

оп ред елении

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

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

яв ляется

реляционной

та блицей

-

отношением

п оэ тому

его

строки

п о

оп ред елению

яв ляются

неуп оряд оч енными

5.10. 

Удал ение

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

Синта ксис

уд а ления

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

из

ба з ы

д а нных

п од обен

синта ксису

уд а ления

ба з ов ых

та бл иц

DROP

VIEW 

<

и м я

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