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

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

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

Добавлен: 02.04.2021

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

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

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

106

п ерв ич ных

ключ ей

в

ка ч еств е

род ительских

4.6.7. 

П оддерж ание

ссы л очной

ц ел ост ност и

и

ограничения

з начений

родит ел ь ского

кл ю ча

  

Под д ер жа ние

ссылоч ной

целостности

требует

в ып ол нения

некоторых

огранич ений

на

з на ч ения

которые

могут

быть

з а д а ны

в

п олях

объяв ленных

ка к

в нешний

ключ

и

род ительский

ключ

Н а бор

з на ч ений

род ительского

ключ а

д олжен

быть

та ким

ч тобы

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

ч то

ка жд ому

з на ч ению

в нешнего

ключ а

в

род ительской

та бл ице

обяз а тельно

соотв етств ов а ла

од на

и

только

од на

строка

ука з а нна я

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

род ительским

ключ ом

Э то

оз на ч а ет

ч то

род ительский

ключ

д олжен

быть

уни ка льны м

и

не

сод ержа ть

п устых

з на ч ений

  (

NULL

). 

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

п ри

объяв лении

в нешнего

ключ а

необход имо

убед иться

ч то

в се

п оля

которые

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

ка к

р од ительские

ключ и

имеют

или

огранич ение

PRIMARY

KEY

или

огранич ения

UNIQUE

и

NOT

NULL

.  

4.6.8. 

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

первичного

кл ю ча

в

качестве

уникал ь ного

внеш него

кл ю ча

  

Ссылка

в нешних

ключ ей

только

на

п ерв ич ные

ключ и

сч ита ется

хорошим

стилем

п рогра ммиров а ния

  SQL-

з а п росов

В

э том

случ а е

исп ользуемые

в нешние

кл юч и

св яз ыв а ются

не

п росто

с

род ительскими

ключ а ми

на

которые

они

ссыла ются

а

с

од ной

конкретной

строкой

род ительской

та бл ицы

в

которой

буд ет

на йд ено

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

з на ч ение

род ительского

ключ а

Са м

п о

себе

род ительский

ключ

не

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

ника кой

информа ции

которая

бы

не

была

уже

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

в о

в нешнем

ключ е

Внешний

ключ

э то

не

п р осто

св яз ь

межд у

д в умя

ид ентич ными

з на ч ениями

столбцов

д в ух

та блиц

но

э то

св яз ь

м еж д у

д в ум я

ст р о ка м и

д в ух

т а бли ц

Та к

ка к

на з на ч ение

п ерв ич ного

ключ а

состоит

именно

в

том

ч тобы

од ноз на ч но

ид ентифициров а ть

строку

то

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

ссылки

на

него

в

ка ч еств е

в нешнего

ключ а

яв ляется

более

логич ным

и

более

од ноз на ч ным

в ыбором

д ля

в нешнего

ключ а

Внешний

кл юч

который

не

имеет

ника кой

д ругой

цели

кроме

св яз ыв а ния

строк

на п омина ет

п ерв ич ный

ключ

исп ользуемый

исключ ительно

д ля

ид ентифика ции

строк

и

яв ляется


background image

107

хорошим

сред ств ом

сохранения

на гляд ности

и

п ростоты

структуры

ба з ы

д а нных

.  

4.6.9. 

О граничения

з начений

внеш него

кл ю ча

  

Внешний

ключ

может

сод ержа ть

только

те

з на ч ения

которые

фа ктич ески

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

в

род ительском

ключ е

или

яв ляются

п устыми

(

NULL

). 

Поп ытка

в в ести

д р угие

з на ч ения

в

э тот

ключ

д олжна

быть

отклонена

п оэ тому

объяв ление

в нешнего

ключ а

ка к

NOT

NULL

не

яв ляется

обяз а тельным

.   

4.6.10. 

Д ей ст вие

ограничений

внеш него

и

родит ел ь ского

кл ю чей

при

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

ком анд

м одиф икац ии

  

К а к

уже

гов орилось

п ри

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

кома нд

INSERT

и

UPDATE

д ля

мод ифика ции

з на ч ений

столбца

объяв ленного

ка к

в неш ни й

ключ

в нов ь

в в од имые

з на ч ения

д олжны

уже

быть

обяз а тельно

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

в

фа ктич ески

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

з на ч ениях

столбца

объяв ленного

род ительским

ключ ом

Пр и

э том

можно

п омещ а ть

в

э ти

п оля

п устые

 (

NULL

з на ч ения

несмотря

на

то

ч то

з на ч ения

NULL

не

д оп устимы

в

род ительских

ключ а х

М ожно

та кже

уд а лять

  (

DELETE

любые

строки

с

в нешними

ключ а ми

из

та блицы

в

которой

э ти

ключ и

объяв лены

При

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

мод ифика ции

з на ч ений

р о д и т ельско го

ключа

д ело

обстоит

ина ч е

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

кома нд ы

INSERT

котор а я

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

в в од

нов ой

з а п иси

не

в ыз ыв а ет

ника ких

особенностей

п р и

которых

в оз можно

на р ушение

ссылоч ной

целостности

О д на ко

кома нд а

UPDATE

из меняющ а я

з на ч ение

род ительского

ключ а

и

кома нд а

DELETE

уд а ляющ а я

строку

сод ержа щ ую

та кой

ключ

сод ержа т

в оз можность

на р ушения

согла сов а нности

з на ч ений

род ительского

и

ссыла ющ ихся

на

него

в нешних

ключ ей

Н а п ример

может

в оз никнуть

та к

на з ыв а ема я

в и сяча я

ссылка

в нешнего

ключ а

на

несущ еств ующ ее

з на ч ение

род ительского

ключ а

ч то

сов ершенно

не

д оп устимо

Ч тобы

п ри

п рименении

кома нд

UPDATE

и

DELETE

к

п олю

яв ляющ емуся

р од ительским

ключ ом

не

на р уша ла сь

целостность

ссылки

в оз можны

след ующ ие

в а р иа нты

д ейств ий


background image

108

Л юбые

из менения

з на ч ений

род ительского

ключ а

за пр ещ а ют ся

и

п р и

п оп ытке

их

сов ершения

отв ер га ются

  (

огранич ение

NO

ACTION

или

RESTRICT

). 

Э та

сп ецифика ция

д ейств ия

п рименяется

п о

умолч а нию

Из менения

з на ч ений

р од ительского

ключ а

р а зр еш а ют ся

но

п р и

э том

а в тома тич ески

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

ко р р екци я

в сех

з на ч ений

в нешних

ключ ей

ссыла ющ ихся

на

мод ифицируемое

з на ч ение

род ительского

ключ а

Э то

на з ыв а ется

ка ска д ны м

и зм енени ем

 (

огранич ение

 CASCADE

). 

Из менения

з на ч ений

р од ительского

ключ а

р а зр еш а ют ся

но

п р и

э том

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

з на ч ения

в нешнего

ключ а

а в тома тич ески

уд а ляют ся

то

есть

з а меняются

з на ч ением

NULL 

(

огранич ение

 SET

NULL

). 

Из менения

з на ч ений

р од ительского

ключ а

р а зр еш а ют ся

но

п р и

э том

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

з на ч ения

в нешнего

ключ а

а в тома тич ески

за м еняют ся

з на ч ением

п о

умолч а нию

 (

огранич ение

 SET

DEFAULT

). 

При

оп иса нии

в нешнего

ключ а

д олжно

ука з ыв а ться

ка кой

из

п рив ед енных

в а р иа нтов

д ейств ий

след ует

п рименять

п рич ем

в

общ ем

случ а е

э то

д олжно

быть

ука з а но

раз д ельно

д ля

ка жд ой

из

кома нд

UPDATE

и

DELETE

В

ка ч еств е

п ример а

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

огра нич ений

на кла д ыв а емых

на

оп ерации

мод ифика ции

род ительских

ключ ей

можно

п рив ести

след ующ ий

з а п рос

CREATE

TABLE

NEW

_

EXAM

_

MARKS

STUDENT

_

ID

  

INTEGER

NOT

NULL

 SUBJ

_

ID

    

INTEGER

NOT

NULL

 MARK

    

INTEGER

 DATA

    

DATE

CONSTRAINT

EXAM

_

PR

_

KEY

PRIMARY

KEY

(

STUDENT

_

ID

SUBJ

_

ID

), 

CONSTRAINT 

SUBJ

_

ID

_

FOR

_

KEY

FOREIGN

KEY

 (

SUBJ

_

ID

)  

REFERENCES

SUBJECT

CONSTRAINT 

STUDENT

_

ID

_

FOR

_

KEY

FOREIGN

KEY 

(

STUDENT

_

ID

REFERENCES

STUDENT

   ON

UPDATE

CASCADE

ON

DELETE

NO

ACTION

); 

В

э том

п римере

п ри

п оп ытке

из менения

з на ч ения

п оля

STUDENT

_

ID

та блицы

STUDENT

буд ет

а в тома тич ески

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

ка ска д на я

корректиров ка

э тих

з на ч ений

в

та блице

EXAM

_

MARKS

То

есть

п ри


background image

109

из менении

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

студ ента

STUDENT

_

ID

в

та блице

STUDENT

сохра нятся

в се

ссылки

на

его

оценки

О д на ко

люба я

п оп ытка

уд а ления

(

DELETE

з а п иси

о

студ енте

из

та блицы

STUDENT

буд ет

отв ерга ться

есл и

в

та блице

EXAM

_

MARKS

сущ еств уют

з а п иси

об

оценка х

д а нного

студ ента

.  

УП Р АЖ НЕ НИ Я

101.

Соз д а йте

та блицу

с

именем

SUBJECT

_

1

с

теми

же

п олями

ч то

в

та блице

SUBJECT

  (

п ред мет

обуч ения

). 

Поле

SUBJ

_

ID

яв ляется

п ерв ич ным

ключ ом

102.

Соз д а йте

та блицу

с

именем

SUBJ

_

LECT

_

1

  (

уч ебные

д исцип лины

п реп од а в а телей

), 

с

п олями

LECTURER

_

ID

(

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

п реп од а в а теля

и

SUBJ

_

ID

 (

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

п реп од а в а емой

д исцип лины

). 

Пер в ич ным

ключ ом

  (

соста в ным

та блицы

яв ляется

п а р а

а трибутов

LECTURER

_

ID

и

SUBJ

_

ID

кроме

того

п оле

LECTURER

_

ID

яв ляется

в нешним

ключ ом

ссыла ющ имся

на

та блицу

LECTURER

_

1

а на логич ную

та блице

LECTURER

  (

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

), 

а

п оле

SUBJ

_

ID

яв ляется

в нешним

ключ ом

ссыла ющ имся

на

та блицу

SUBJECT

_

1

а на логич ную

та блице

SUBJECT

.  

103.

Соз д а йте

та блицу

с

именем

SUBJ

_

LECT

_

1

ка к

в

п ред ыд ущ ем

з а д а нии

но

д оба в ьте

д ля

в сех

ее

в нешних

ключ ей

режим

обесп еч ения

ссылоч ной

целостности

з а п рещ а ющ ий

обнов ление

и

уд а ление

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

р од ительских

ключ ей

104.

Соз д а йте

та блицу

с

именем

LECTURER

_

1

с

теми

же

п ол ями

ч то

в

та блице

LECTURER

Пер в ич ным

ключ ом

та блицы

яв ляется

а трибут

LECTURER

_

ID

кроме

того

п оле

UNIV

_

ID

яв ляется

в нешним

ключ ом

ссыла ющ имся

на

та блицу

UNIVERSITY

_

1

  (

а на лог

UNIVERSITY

). 

Д ля

э того

п оля

уста нов ите

ка ска д ные

режимы

обесп еч ения

целостности

д ля

кома нд

UPDATE

и

 DELETE

105.

Соз д а йте

та блицу

с

именем

UNIVERSITY

_

1

с

теми

же

п олями

ч то

в

та блице

UNIVERSITY

(

унив ерситеты

). 

Поле

UNIV

_

ID

яв ляется

п ерв ич ным

ключ ом

106.

Соз д а йте

та блицу

с

именем

EXAM

_

MARKS

_

1

О на

д олжна

сод ержа ть

та кие

же

п оля

ч то

и

та блица

EXAM

_

MARKS

  (

э кз а мена ционные

оценки

). 


background image

110

К омбина ция

п олей

EXAM_ID

STUDENT

_

ID

и

SUBJ

_

ID

яв ляется

п ерв ич ным

ключ ом

К роме

того

п ол я

STUDENT

_

ID

и

SUBJ

_

ID

яв ляются

в нешним

ключ а ми

ссыла ющ имися

соотв етств енно

на

та блицы

STUDENT

_

1

и

SUBJECT

_

1

Д ля

э тих

п олей

уста нов ите

режим

ка ска д ного

обесп еч ения

ссылоч ной

целостности

п ри

оп ерации

обнов ления

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

п ерв ич ных

ключ ей

и

режим

блокиров ки

п ри

п оп ытке

уд а ления

род ительского

ключ а

п ри

на лич ии

ссылки

на

него

107.

Соз д а йте

та блицу

с

именем

STUDENT

_

1

О на

д олжна

сод ержа ть

та кие

же

п оля

ч то

и

та блица

STUDENT

и

нов ое

п оле

SENIOR

_

STUDENT

(

ста р оста

), 

з на ч ением

которого

д олжен

быть

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

студ ента

яв ляющ егося

ста р остой

груп п ы

в

которой

уч ится

д а нный

студ ент

У ка жите

необход имые

д ля

э того

огранич ения

ссылоч ной

целостности

.  

108.

Соз д а йте

та блицу

STUDENT

_

2

а на логич ную

та блице

STUDENT

в

которой

п оле

UNIV

_

ID

 (

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

унив ерситета

яв ляется

в нешним

ключ ом

ссыла ющ имся

на

та блицу

UNIVERSITY

_

1

и

та ким

образ ом

ч тобы

п р и

уд а лении

из

та блицы

UNIVERSITY

_

1

строки

с

информа цией

о

ка ком

-

либо

унив ерситете

в

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

з а п исях

та блицы

STUDENT

_

2

п оле

UNIV

_

ID

оч ищ а лось

 (

з а мещ а лось

на

NULL

). 

109.

С

п омощ ью

кома нд ы

CREATE

TABLE

соз д а йте

з а п росы

д ля

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

та блиц

уч ебной

ба з ы

д а нных

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

в

раз д еле

1.7, 

с

ука з а нием

п ерв ич ных

ключ ей

но

без

ука з а ния

огра нич ений

в нешних

ключ ей

За тем

с

п омощ ью

кома нд ы

ALTER

TABLE

ука жите

д ля

сформиров а нных

та блиц

в се

огр а нич ения

в

том

ч исле

и

огранич ения

ссылоч ной

целостности