SQL в вопросах и задачах
.pdf
|
101 |
Х отя в |
п р ив ед енном п римереимена в нешнего и р од ительского ключ ей |
сов п а д ают, |
они не о бяза т ельно д олжны бытьод ина ков ыми, хотя ч асто их |
соз на тельно з ад ают од ина ков ыми, ч тобы соед инениебыло болеенагляд ным.
4.6.2. |
С ост авны е внеш ние кл ю чи |
Н а |
п р актике в нешний ключ необяз ательно может состоятьтолько из |
од ного п оля. |
Под обно п ерв ич ному ключ у, в нешний ключ может состоятьиз |
||
любого ч исла |
п олей. Внешний ключ и род ительский ключ , на который он |
||
ссылается, |
конеч но же, |
д олжны бытьоп ред елены на од ина ков ом множеств е |
|
п олей (п о |
колич еств у |
п олей, тип а м п олей и п оряд ку след ов а ния п олей). |
Внешние ключ и, состоящ ие |
из од ного п оля – п рименяемые в тип ов ых |
таблица х на стоящ его из д ания, |
на иболееч асты на п рактике. Ч тобы сохра нить |
п ростоту обсужд ения, буд ем гов оритьо в нешнем ключ е, ка к об од иноч ном столбце, хотя в се, ч то буд ет из ла гаться о п оле, котороеяв ляется в нешним ключ ом, сп ра в ед лив о и д ля состав ных в нешних ключ ей, оп ред еленных на груп п еп олей.
4.6.3. С м ы сл внеш негои родит ел ь скогокл ю чей
К огд а п оле яв ляется в нешним ключ ом, оно оп ред еленным образ ом св яз ано с таблицей, на котор ую этот ключ ссыла ется. К ажд ое з нач ение в этом п оле (в нешнем ключ е) неп осред ств енно п рив яз ано к конкр етному з нач ению в д ругом п оле (род ительском ключ е). Зна ч ения род ительского ключ а д олжны бытьуникальными, так он од нов ременно яв ляется ключ ом
отношения. |
Знач ения в нешнего |
ключ а |
не о бяза т ельно |
д олжны быть |
||||
уникальными, то есть в |
отношении |
может быть любое ч исло |
строк с |
|||||
од инаков ыми |
з нач ениями |
атрибутов , |
яв ляющ ихся в нешним ключ ом. При |
|||||
этом строки, |
сод ер жа щ ие од инаков ые з нач ения в нешнего |
ключ а |
д олжны |
|||||
о бяза т ельно |
ссылатьсяна |
конкретное, п рисутств ующ ее д анный момент в |
||||||
таблице, |
з нач ение род ительского |
ключ а. |
К роме того, ни в |
од ной строке |
||||
таблицы нед олжно бытьз на ч ений в нешнего ключ а, д лякоторых в |
текущ ий |
|||||||
момент |
отсутств уют соотв етств ующ ие з на ч ения род ительского |
ключ а. |
||||||
Д ругими |
слов а ми не д олжно быть так |
наз ыв а емых “в исяч их” |
ссылок |
102
в нешнего ключ а. Е сли ука з анные требов а ния в ып олняются в конкретный момент сущ еств ов а ния баз ы д анных, то гов орят, ч то д анные на ход ятся в со гла со ва нно м состоянии, а сама ба з а на ход ится в состоянии ссыло чно й цело ст но ст и .
4.6.4. О граничение FOREIGN KEY (внеш негокл ю ча)
Д ля решения в оп росов |
п од д ержа ния ссылоч ной целостности в SQL |
исп ольз уется огранич ениеFOREIGN KEY. Н а з нач ениеFOREIGN KEY – это |
|
огранич ение д оп устимых |
з нач ений п оля множеств ом з нач ений |
род ительского ключ а , ссылка на который указ ыв аетсяп ри оп иса нии д а нного огранич енияFOREIGN KEY.
Проблемы обесп еч ения ссылоч ной |
целостности в оз ника ют |
как |
п ри |
||
в в од е з нач ений п оля, |
яв ляющ егося |
в нешним ключ ом, так |
и |
п ри |
|
мод ифика ции/уд алении |
з нач ений |
п оля, |
на которое ссыла ется э тот ключ |
||
(род ительского ключ а). О д но из д |
ейств ий огра нич ения FOREIGN KEY – это |
отклонение(блокиров ка) в в од а з нач ений в нешнего ключ а, отсутств ующ их в таблице с род ительским ключ ом. Также это огра нич ение в оз д ейств ует на в оз можностьиз менятьили уд а лятьз на ч ениярод ительского ключ а .
О гра нич ениеFOREIGN KEY исп ольз уетсяв кома нд ах CREATE TABLE и ALTER TABLE п ри соз д ании или мод ификации таблицы, которая сод ержит п оле, котороетребуетсяобъяв итьв нешним ключ ом. В кома нд еуказ ыв ается имя род ительского ключ а, на который имеется ссылка в огра нич ении
FOREIGN KEY.
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)); |
|
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));
|
|
|
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); |
Такаяв оз можностьв страив а ласьв яз ык д ляобесп еч енияисп ольз ов а ния
106
п ерв ич ных ключ ей кач еств ерод ительских.
4.6.7.П оддерж ание ссы л очной ц ел ост ност и и ограничения з начений родит ел ь скогокл ю ча
Под д ер жа ние ссылоч ной целостности требует в ып олнения некоторых огранич ений на з нач ения, которыемогут бытьз ад а ны в п олях, объяв ленных
как в нешний ключ и род ительский ключ . Н а бор |
з на ч ений род ительского |
ключ а д олжен бытьтаким, ч тобы гарантиров а ть, |
ч то кажд ому з нач ению |
в нешнего ключ а в род ительской таблицеобяз ательно соотв етств ов ала од на и только од на строка, ука з анна ясоотв етств ующ им род ительским ключ ом. Э то
оз нач ает, ч то род ительский ключ |
д олжен бытьуни ка льны м и несод ержать |
||||
п устых з нач ений (NULL). След ов ательно, п ри объяв лении в нешнего ключ а |
|||||
необход имо |
убед иться, |
ч то |
в се |
п оля, которые исп ольз уются |
как |
род ительские |
ключ и, |
имеют |
или |
огранич ение PRIMARY KEY |
или |
огранич енияUNIQUE и NOT NULL.
4.6.8.И спол ь з ование первичногокл ю ча в качест ве уникал ь ноговнеш негокл ю ча
Ссылка |
в нешних ключ ей только |
на |
п ерв ич ные ключ и сч итается |
||||
хорошим |
стилем п рогра ммиров ания |
SQL-з ап росов . |
В |
этом |
случ ае |
||
исп ольз уемые в нешние ключ и св яз ыв а ются не п росто |
с |
род ительскими |
|||||
ключ ами, |
на |
которые они ссыла ются, |
а |
с од ной конкретной |
строкой |
род ительской таблицы, в которой буд ет на йд ено соотв етств ующ еез на ч ение
род ительского ключ а. |
Са м п о себе род ительский ключ не обесп еч ив ает |
ника кой информа ции, |
которая бы не была уже п ред ста в лена в о в нешнем |
ключ е. Внешний ключ |
– это не п р осто св яз ьмежд у д в умя ид ентич ными |
з нач ениями столбцов д в ух таблиц, но э то – св яз ьм еж д у д вум я ст р о ка м и д вух т а бли ц.
Так как на з нач ение п ерв ич ного ключ а состоит именно в том, |
ч тобы |
од ноз на ч но ид ентифициров атьстроку, то исп ольз ов а ние ссылки на |
него |
кач еств е в нешнего ключ а яв ляется более логич ным и более од ноз нач ным
в ыбором д ля в нешнего ключ а. |
Внешний ключ , который не имеет никакой |
||
д ругой цели |
кроме св яз ыв ания строк, на п омина ет |
п ерв ич ный ключ , |
|
исп ольз уемый |
исключ ительно |
д ля ид ентифика ции |
строк, и яв ляется |
107
хорошим сред ств ом сохранения нагляд ности и п ростоты структуры баз ы д анных.
4.6.9.О граничения з начений внеш негокл ю ча
Внешний ключ может |
сод ержать только |
те |
з нач ения, которые |
|
фактич ески п ред став лены |
в |
род ительском ключ е, |
или яв ляются п устыми |
|
(NULL). Поп ытка в в ести |
д р угие з нач ения в этот |
ключ д олжна быть |
отклонена, п оэтому объяв лениев нешнего ключ а, как NOT NULL, неяв ляется обяз а тельным.
4.6.10. Дей ст вие ограничений внеш негои родит ел ь ского кл ю чей при испол ь з овании ком анд м одиф икац ии
К ак ужегов орилось, п ри исп ольз ов ании команд INSERT и UPDATE д ля мод ифика ции з нач ений столбца , объяв ленного как внеш ни й ключ, в нов ь
в в од имые |
з нач ения д олжны |
уже быть обяз ательно п ред став лены в |
|||
фактич ески |
п рисутств ующ их |
з нач ениях |
столбца, |
объяв ленного |
|
род ительским ключ ом. Пр и э томможно п омещ атьв эти п оляп устые(NULL) |
|||||
з нач ения, несмотряна то, ч то з нач енияNULL нед оп устимы |
род ительских |
||||
ключ ах. М ожно также уд а лять (DELETE) |
любые строки |
с |
в нешними |
||
ключ ами из таблицы, в которой э ти ключ и объяв лены. |
|
|
|||
При необход имости мод ификации з нач ений р о д и т ельско го |
ключа д ело |
обстоит ина ч е. Исп ольз ов аниекома нд ы INSERT, котор аяосущ еств ляет в в од нов ой з ап иси, не в ыз ыв ает никаких особенностей, п р и которых в оз можно нарушениессылоч ной целостности. О д на ко кома нд а UPDATE, из меняющ ая з нач ение род ительского ключ а и команд а DELETE, уд аляющ ая строку, сод ержащ уютакой ключ , сод ержат в оз можностьнарушениясогласов а нности з нач ений род ительского и ссылающ ихсяна него в нешних ключ ей. Н а п ример,
может в оз никнуть так наз ыв аема я “ви сяча я” ссылка |
в нешнего ключ а |
на |
||||
несущ еств ующ ее |
з нач ение род ительского |
ключ а, |
ч то |
сов ершенно |
не |
|
д оп устимо. Ч тобы |
п ри п рименении |
кома нд |
UPDATE и |
DELETE к п олю, |
||
яв ляющ емуся р од ительским ключ ом, |
не наруша лась целостностьссылки, |
|||||
в оз можны след ующ иев ар ианты д ейств ий. |
|
|
|
|
|
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. То |
есть п ри |
|
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 (экз а менационные оценки).
|
|
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 укажитед ля |
||||||
сформиров анных таблиц в се огр анич ения, в |
том ч исле и огранич ения |
|||||
ссылоч ной целостности. |
|
|
|
|
|