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

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

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

Добавлен: 02.04.2021

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

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

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

101

Х отя

в

п р ив ед енном

п римере

имена

в нешнего

и

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

ключ ей

сов п а д а ют

они

не

о бяза т ельно

д олжны

быть

од ина ков ыми

хотя

ч а сто

их

соз на тельно

з а д а ют

од ина ков ыми

ч тобы

соед инение

было

более

на гляд ным

4.6.2. 

С ост авны е

внеш ние

кл ю чи

Н а

п р а ктике

в нешний

ключ

не

обяз а тельно

может

состоять

только

из

од ного

п оля

Под обно

п ерв ич ному

ключ у

в нешний

ключ

может

состоять

из

любого

ч исла

п олей

Внешний

ключ

и

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

ключ

на

который

он

ссыла ется

конеч но

же

д олжны

быть

оп ред елены

на

од ина ков ом

множеств е

п олей

  (

п о

колич еств у

п олей

тип а м

п олей

и

п оряд ку

след ов а ния

п олей

). 

Внешние

ключ и

состоящ ие

из

од ного

п оля

п рименяемые

в

тип ов ых

та блица х

на стоящ его

из д а ния

на иболее

ч а сты

на

п рактике

Ч тобы

сохра нить

п ростоту

обсужд ения

буд ем

гов орить

о

в нешнем

ключ е

ка к

об

од иноч ном

столбце

хотя

в се

ч то

буд ет

из ла га ться

о

п оле

которое

яв ляется

в нешним

ключ ом

сп ра в ед лив о

и

д ля

соста в ных

в нешних

кл юч ей

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

на

груп п е

п олей

4.6.3. 

С м ы сл

внеш него

и

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

кл ю чей

К огд а

п оле

яв ляется

в нешним

ключ ом

оно

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

образ ом

св яз а но

с

та блицей

на

котор ую

э тот

ключ

ссыла ется

К а жд ое

з на ч ение

в

э том

п оле

  (

в нешнем

ключ е

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

п рив яз а но

к

конкр етному

з на ч ению

в

д ругом

п оле

  (

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

ключ е

). 

Зна ч ения

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

ключ а

   

д олжны

быть

уника льными

та к

он

од нов ременно

яв ляется

ключ ом

отношения

Зна ч ения

в нешнего

ключ а

не

о бяза т ельно

д олжны

быть

уника льными

то

есть

в

отношении

может

быть

любое

ч исло

строк

с

од ина ков ыми

з на ч ениями

а трибутов

яв ляющ ихся

в нешним

ключ ом

При

этом

строки

сод ер жа щ ие

од ина ков ые

з на ч ения

в нешнего

ключ а

д олжны

о бяза т ельно

ссыла ться

на

конкретное

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

в

д а нный

момент

в

та блице

з на ч ение

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

ключ а

К роме

того

ни

в

од ной

строке

та блицы

не

д олжно

быть

з на ч ений

в нешнего

ключ а

д ля

которых

в

текущ ий

момент

отсутств уют

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

з на ч ения

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

ключ а

Д ругими

слов а ми

не

д олжно

быть

та к

на з ыв а емых

“в исяч их”

ссылок


background image

102

в нешнего

ключ а

Е сли

ука з а нные

требов а ния

в ып олняются

в

конкретный

момент

сущ еств ов а ния

ба з ы

д а нных

то

гов орят

ч то

д а нные

на ход ятся

в

со гла со в а нно м

состоянии

а

са ма

ба з а

на ход ится

в

состоянии

ссы ло чно й

цело ст но ст и

4.6.4. 

О граничение

FOREIGN

KEY

 (

внеш него

кл ю ча

Д ля

решения

в оп росов

п од д ержа ния

ссылоч ной

целостности

в

  SQL 

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

огранич ение

FOREIGN

KEY

Н а з на ч ение

FOREIGN

KEY

э то

огранич ение

д оп устимых

з на ч ений

п ол я

множеств ом

з на ч ений

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

ключ а

ссылка

на

который

ука з ыв а ется

п ри

оп иса нии

д а нного

огранич ения

FOREIGN

KEY

.

  

Проблемы

обесп еч ения

ссылоч ной

целостности

в оз ника ют

ка к

п ри

в в од е

з на ч ений

п оля

яв ляющ егося

в нешним

ключ ом

та к

и

п ри

мод ифика ции

/

уд а лении

з на ч ений

п оля

на

которое

ссыла ется

э тот

ключ

(

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

ключ а

).

О д но

из

д ейств ий

огра нич ения

FOREIGN

KEY

э то

отклонение

  (

блокиров ка

в в од а

з на ч ений

в нешнего

ключ а

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

в

та блице

с

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

ключ ом

Та кже

э то

огра нич ение

в оз д ейств ует

на

в оз можность

из менять

или

уд а лять

з на ч ения

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

ключ а

.  

О гра нич ение

FOREIGN

KEY

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

в

кома нд а х

CREATE

TABLE

и

ALTER

TABLE

п ри

соз д а нии

или

мод ифика ции

та блицы

которая

сод ержит

п оле

которое

требуется

объяв ить

в нешним

ключ ом

В

кома нд е

ука з ыв а ется

имя

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

ключ а

на

который

имеется

ссылка

в

огра нич ении

FOREIGN

KEY

.  


background image

103

4.6.5. 

В неш ний

кл ю ч

как

ограничение

т абл иц ы

Синта ксис

огра нич ения

FOREIGN

KEY

имеет

след ующ ий

в ид

FOREIGN

KEY

 <

с п и с о к

с т о л бцо в

 >  

REFERENCES

  

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

т а бл и ца

[< 

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

к л ю ч

>]; 

В

э том

п ред ложении

с п и с о к

с т о л бцо в

э то

сп исок

из

од ного

или

более

столбцов

та блицы

которые

буд ут

соз д а ны

или

из менены

кома нд а ми

CREATE

TABLE

или

ALTER

TABLE

 (

д олжны

быть

отд елены

д руг

от

д руга

з а п ятыми

).  

Па р а метр

   

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

т а бл и ца

э то

имя

та блицы

сод ержа щ ей

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

ключ

Э то

в

ч а стности

может

быть

и

та блицей

которая

соз д а ется

или

из меняется

текущ ей

кома нд ой

Па раметр

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

к л ю ч

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

собой

сп исок

столбцов

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

та блицы

которые

соста в ляют

собств енно

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

ключ

О ба

сп иска

столбцов

оп ред еляющ их

в нешний

и

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

ключ и

д олжны

быть

сов местимы

а

именно

сод ержа ть

од ина ков ое

ч исло

столбцов

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

 (1-

й

, 2-

й

, 3-

й

и

т

.

д

.) 

столбцов

сп иска

в нешнего

ключ а

д олжны

иметь

тип ы

д а нных

и

раз меры

сов п а д а ющ ие

с

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

  (1-

м

, 2-

м

, 3-

м

и

т

.

д

.) 

столбца ми

сп иска

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

ключ а

.  

Соз д а д им

та блицу

STUDENT

с

п олем

UNIV

_

ID

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

в

ка ч еств е

в нешнего

кл юч а

ссыла ющ егося

на

та блицу

UNIVERSITY

CREATE

TABLE

STUDENT

STUDENT

_

ID

  

INTEGER

PRIMARY

KEY

 SURNAME   

CHAR

 (

25

), 

 NAME   

CHAR

 (

10

),  

 STIPEND   

INTEGER

 KURS   

INTEGER

 CITY   

CHAR

 (

15

), 

 BIRTHDAY  

DATE

,      

 UNIV

_

ID

    

INTEGER REFERENCES

CONSTRAINT 

UNIV

_

FOR

_

KEY 

FOREIGN

KEY

 (

UNIV

_

ID

REFERENCES

UNIVERSITY

 (

UNIV

_

ID

)); 


background image

104

  

При

п р именении

кома нд ы

ALTER

TABLE

к

ка кой

-

либо

та блице

д ля

з а д а ния

огранич ения

FOREIGN

KEY

з на ч ения

в нешнего

ключ а

э той

та блицы

и

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

ключ а

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

та бл ицы

д олжны

на ход иться

в

состоянии

ссылоч ной

целостности

В

п р отив ном

случ а е

кома нд а

буд ет

отклонена

.  

Синта ксис

кома нд ы

ALTER

TABLE

в

э том

случ а е

имеет

след ующ ий

в ид

ALTER

TABLE

 <

и м я

т а бли цы

>  

ADD

CONSTRAINT 

<

и мя

о гра ни чени я

 >  

FOREIGN

KEY

 (<

с п и с о к

с т о л бцо в

внеш него

к л ю ча

 > ) 

REFERENCES

  

и мя

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

т а бл и цы

[(<

с п и с о к

с т о л бцо в

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

к л ю ча

>)]; 

Н а п ример

кома нд а

ALTER

TABLE 

STUDENT 

ADD

CONSTRAINT 

STUD

_

UNIV

_

FOR

_

KEY

  

FOREIGN

KEY 

 (

UNIV

_

ID

REFERENCES

  

UNIVERSITY 

(

UNIV

_

ID

); 

д оба в ляет

огра нич ение

в нешнего

кл юч а

д ля

та блицы

STUDENT

4.6.6. 

В неш ний

кл ю ч

как

ограничение

ст ол бц ов

  

О гра нич ение

в нешнего

ключ а

может

ука з ыв а ться

не

д ля

в сей

та блицы

ка к

э то

было

п ока з а но

в ыше

а

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

на

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

столбец

та блицы

При

та ком

в а р иа нте

на з ыв а емом

ссы ло чны м

о гр а ни чени ем

ст о лбца

ключ ев ое

слов о

FOREIGN

KEY

фа ктич ески

не

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

Пр осто

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

ключ ев ое

слов о

REFERENCES

и

д а лее

ука з ыв а ется

имя

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

ключ а

п од обно

след ующ ему

п ример у

CREATE

TABLE

STUDENT

STUDENT

_

ID

  

INTEGER

PRIMARY

KEY

 SURNAME   

CHAR

 (25), 

 NAME   

CHAR

 (10),  

 STIPEND   

INTEGER

 KURS   

INTEGER

 CITY   

CHAR

 (15), 

 BIRTHDAY  

DATE

,      

 UNIV

_

ID

 INTEGER REFERENCES 

UNIVERSITY

(

UNIV

_

ID

)); 


background image

105

К ома нд а

оп ред еляет

п оле

STUDENT

.

UNIV

_

ID

ка к

в нешний

ключ

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

в

ка ч еств е

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

ключ а

п оле

UNIVERSITY

.

UNIV

_

ID

яв ляющ ееся

ключ ом

та бл ицы

UNIVERSITY

.  

Э та

форма

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

след ующ ему

огранич ению

та блицы

 STUDENT

FOREIGN

KEY

 (

UNIV

_

ID

REGERENCES

UNIVERSITY

 (

UNIV

_

ID

или

в

д ругой

з а п иси

CONSTRAINT

UNIV

_

FOR

_

KEY

FOREIGN

KEY

 (

UNIV

_

ID

)  

REFERENCES

UNIVERSITY

 (

UNIV

_

ID

). 

Е сли

в

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

та блице

у

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

ключ а

ука з а но

огранич ение

PRIMARY

KEY

то

п р и

ука з а нии

огранич ения

FOREIGN

KEY

на кла д ыв а емого

на

та блицу

или

на

столбцы

м о ж но

не

ука зы в а т ь

спи со к

ст о лбцо в

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

ключа

Е стеств енно

в

случ а е

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

ключ ей

со

многими

п олями

п оряд ок

столбцов

в

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

в нешних

и

п ерв ич ных

ключ а х

д олжен

сов п а д а ть

и

в

любом

случ а е

п р инцип

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

межд у

д в умя

ключ а ми

д олжен

быть

соблюд ен

.  

Н а п ример

если

огра нич ение

PRIMARY

KEY

ра з мещ ено

в

п оле

UNIV

_

ID

та блицы

UNIVERSITY

  

CREATE

TABLE

UNIVERSITY

UNIV

_

ID 

INTEGER

PRIMARY

KEY

,

 UNIV

_

NAME 

CHAR

(

10

), 

 RATING

INTEGER

 CITY

   

CHAR

(

15

)); 

то

в

та блице

STUDENT

п оле

UNIV

_

ID

можно

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

в

ка ч еств е

в нешнего

ключ а

не

ука з ыв а я

в

ссылке

имя

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

ключ а

CREATE

TABLE

STUDENT

(

STUDENT

_

ID

  

INTEGER

PRIMARY

KEY

 SURNAME   

CHAR

 (

25

), 

 NAME   

CHAR

 (

10

),  

 STIPEND   

INTEGER

 KURS   

INTEGER

 CITY   

CHAR

 (

15

), 

 BIRTHDAY  

DATE

,      

 UNIV

_

ID

    

INTEGER

REFERENCES 

UNIVERSITY

); 

Та ка я

в оз можность

в страив а ла сь

в

яз ык

д л я

обесп еч ения

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