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

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

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

Добавлен: 02.04.2021

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

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

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

91 

оп иса ния

столбца

  (

з а п ятой

). 

О гранич ения

на

та блицу

раз мещ а ются

в

конце

оп ред еления

та блицы

п осле

оп ред еления

п ослед него

столбца

К ома нд а

CREATE

TABLE

имеет

след ующ ий

синта ксис

расширенный

в ключ ением

огранич ений

CREATE

TABLE

 <

и м я

т а бли цы

(

<

и м я

ст о лбца

> <

т и п

д а нны х

> <

о гр а ни чени я

на

ст о лбец

>, 

<

и м я

ст о лбца

> <

т и п

д а нны х

> <

о г р а ни чени я

на

ст о лбец

>,

<

о гр а ни чени я

на

т а бли цу

> (<

и м я

ст о лбца

>[,<

и м я

ст о лбца

>

])

); 

Поля

з а д а нные

в

круглых

скобка х

п осле

оп иса ния

огранич ений

та блицы

это

п оля

на

которые

э ти

огранич ения

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

О гранич ения

на

столбцы

п рименяются

к

тем

столбца м

з а

которыми

они

оп иса ны

4.5.1. 

О граничение

NOT

NULL

Ч тобы

з а п ретить

в оз можность

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

в

п оле

NULL-

з на ч ений

можно

п ри

соз д а нии

та блицы

кома нд ой

CREATE

TABLE

ука з а ть

д ля

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

столбца

ключ ев ое

слов о

NOT

NULL

Э то

огранич ение

п рименимо

только

к

столбца м

та блицы

К а к

уже

гов орилось

в ыше

NULL

э то

сп ециа льный

ма р кер

обоз на ч а ющ ий

тот

фа кт

ч то

п оле

п усто

Н о

он

п олез ен

не

в сегд а

Пер в ич ные

ключ и

на п ример

в

п ринцип е

не

д олжны

сод ержа ть

NULL-

з на ч ений

  (

быть

п устыми

), 

п оскольку

э то

на р ушило

бы

требов а ние

уника льности

п ер в ич ного

ключ а

(

более

строго

функциона л ьную

з а в исимость

а трибутов

та блицы

от

п ерв ич ного

ключ а

). 

Во

многих

д ругих

случ а ях

та кже

необход имо

ч тобы

п оля

о бяза т ельно

сод ержа ли

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

з на ч ения

Е сли

ключ ев ое

слов о

NOT

NULL

раз мещ а ется

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

п осле

тип а

д а нных

 (

в ключ а я

р а з мер

столбца

то

любые

п оп ытки

оста в ить

з на ч ение

п оля

п устым

  (

в в ести

в

п оле

NULL-

з на ч ение

буд ут

отв ергнуты

системой

Н а п ример

д ля

того

ч тобы

в

оп ред елении

та блицы

STUDENT

з а п ретить

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

NULL-

з на ч ений

д л я

столбцов

STUDENT

_

ID

SURNAME

и

NAME

можно

з а п иса ть

след ующ ее

CREATE

TABLE

STUDENT

(

STUDENT

_

ID

INTEGER

NOT

NULL


background image

92 

 SURNAME 

CHAR

 (25) 

NOT

NULL

 NAME   

CHAR

 (10) 

NOT

NULL

,  

 STIPEND 

INTEGER

 KURS   

INTEGER

 CITY   

CHAR

 (15), 

 BIRTHDAY 

DATE

,      

 UNIV

_

ID 

INTEGER

); 

Ва жно

п омнить

ч то

если

д ля

столбца

ука з а но

NOT

NULL

то

п ри

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

кома нд ы

INSERT

обяз а тельно

д олжно

быть

ука з а но

конкретное

з на ч ение

в в од имое

в

э то

п оле

При

отсутств ии

огранич ения

NOT

NULL

в

столбце

з на ч ение

может

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

если

только

не

ука з а но

з на ч ение

столбца

п о

умолч а нию

  (

DEFAULT

). 

Если

п р и

соз д а нии

та блицы

огранич ение

NOT

NULL

не

было

ука з а но

то

его

можно

ука з а ть

п оз же

исп ользуя

кома нд у

ALTER

TABLE

О д на ко

д ля

того

ч тобы

д ля

в нов ь

в в од имого

с

п омощ ью

кома нд ы

ALTER

TABLE

столбца

можно

было

з а д а ть

огранич ение

NOT

NULL

та блица

в

которую

д оба в ляется

столбец

д олжна

быть

п устой

.  

4.5.2. 

Уникал ь ност ь

как

ограничение

на

ст ол бец

Иногд а

тр ебуется

ч тобы

в се

з на ч ения

в в ед енные

в

столбец

отлич а лись

д руг

от

д руга

Н а п р имер

э того

требуют

п ер в ич ные

ключ и

Е сли

п ри

соз д а нии

та блицы

д ля

столбца

ука з ыв а ется

огранич ение

UNIQUE

то

ба з а

д а нных

отв ерга ет

любую

п оп ытку

в в ести

в

э то

п оле

ка кой

-

либо

строки

з на ч ение

уже

сод ержа щ ееся

в

том

же

п оле

д ругой

строки

Э то

огранич ение

п рименимо

только

к

тем

п олям

которые

был и

объяв лены

NOT

NULL

М ожно

п ред ложить

след ующ ее

оп ред еление

та блицы

STUDENT

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

огранич ение

UNIQUE

CREATE

TABLE

STUDENT

(

STUDENT

_

ID

  

INTEGER

NOT

NULL

UNIQUE

 SURNAME   

CHAR

 (25) 

NOT

NULL

 NAME   

CHAR

 (10) 

NOT

NULL

,  

 STIPEND   

INTEGER

 KURS   

INTEGER

 CITY   

CHAR

 (15), 


background image

93 

 BIRTHDAY  

DATE

,      

 UNIV

_

ID 

INTEGER

); 

О бъяв ляя

п оле

STUDENT

_

ID

уника льным

можно

быть

ув еренным

ч то

в

та блице

не

п ояв ится

з а п исей

д ля

д в ух

студ ентов

с

од ина ков ыми

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

Столбцы

отлич ные

от

п ерв ич ного

ключ а

д ля

которых

требуется

п од д ержа ть

уника льность

з на ч ений

на з ыв а ются

в оз можными

ключ а ми

или

уника льными

ключ а ми

  (

CANDIDATE

KEYS 

или

  UNIQUE

KEYS

). 

4.5.3. 

Уникал ь ност ь

как

ограничение

т абл иц ы

  

М ожно

сд ела ть

уника л ьными

груп п у

п олей

ука з а в

UNIQUE

в

ка ч еств е

огранич ений

т а бли цы

При

объед инении

п олей

в

груп п у

в а жен

п оряд ок

в

котором

они

ука з ыв а ются

О гранич ение

на

та блицу

UNIQUE

яв ляется

п олез ным

если

требуется

п од д ержив а ть

уника льность

груп п ы

п олей

Н а п ример

если

в

на шей

ба з е

д а нных

не

д оп уска ется

ч тобы

студ ент

сд а в а л

в

од ин

д ень

больше

од ного

э кз а мена

то

можно

в

та блице

объяв ить

уника льной

комбина цию

з на ч ений

п олей

STUDENT

_

ID

и

EXAM

_

DATE

Д ля

э того

след ует

соз д а ть

та блицу

EXAM

_

MARKS

та ким

сп особом

CREATE

TABLE

EXAM

_

MARKS

(

EXAM

_

ID 

INTEGER NOT

NULL

STUDENT

_

ID 

INTEGER NOT

NULL

SUBJ_ID 

INTEGER NOT

NULL

MARK 

CHAR

 (

1

),  

EXAM_DATE  

DATE NOT

NULL

,      

UNIQUE

  (

STUDENT

_

ID

EXAM_DATE

)); 

О братите

в нима ние

ч то

оба

п оля

в

огра нич ении

та блицы

UNIQUE

в се

ещ е

исп ользуют

огра нич ение

столбца

NOT

NULL

Е сли

бы

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

огранич ение

столбца

UNIQUE

д л я

п оля

STUDENT

_

ID

то

та кое

огранич ение

та блицы

было

бы

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

Е сли

з на ч ения

п оля

STUDENT

_

ID

д олжно

быть

раз лич ным

д ля

ка жд ой

строки

в

та блице

EXAM

_

MARKS

э то

можно

сд ела ть

объяв ив

UNIQUE

ка к

огранич ение

са мого

п оля

STUDENT

_

ID

В

э том

сл уч а е

не

буд ет

и

д в ух

строк

с

ид ентич ной

комбина цией

з на ч ений

п олей

STUDENT

_

ID

EXAM_DATE


background image

94 

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

ука з а ние

UNIQUE

ка к

огра нич ение

та блицы

на иболее

п олез но

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

в

случ а ях

когд а

не

требуется

уника льность

инд ив ид уа льных

п олей

ка к

э то

имеет

место

на

са мом

д еле

в

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

п римере

4.5.4. 

П рисвоение

им ен

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

О гра нич ениям

та блиц

можно

п рисв а ив а ть

уника льные

имена

Преимущ еств о

яв ного

з а д а ния

имени

огранич ения

состоит

в

том

ч то

в

э том

случ а е

п ри

в ыд а ч е

системой

сообщ ения

о

на р ушении

уста нов ленного

огранич ения

буд ет

ука з а но

его

имя

ч то

уп рощ а ет

обна р ужение

ошибок

.  

Д ля

п рисв оения

имени

огранич ению

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

несколько

из мененный

синта ксис

кома нд

CREATE

TABLE

и

ALTER

TABLE

.  

Прив ед енный

в ыше

п ример

з а п роса

из меняется

след ующ им

образ ом

CREATE

TABLE

EXAM

_

MARKS

(

EXAM

_

ID 

INTEGER NOT

NULL

STUDENT

_

ID 

INTEGER NOT

NULL

SUBJ_ID 

INTEGER NOT

NULL

MARK 

CHAR

 (

1

),  

EXAM_DATE  

DATE NOT

NULL

,      

CONSTRAINT

STUD

_

SUBJ

_

CONSTR

  

UNIQUE

 (

STUDENT

_

ID

EXAM_DATE

); 

В

э том

з а п росе

STUD

_

SUBJ

_

CONSTR

э то

имя

п рисв оенное

ука з а нному

огранич ению

та блицы

.  

4.5.5. 

О граничение

первичны х

кл ю чей

П ер в и чны е

ключи

т а бли цы

э то

сп ециа льные

случ а и

комбиниров а ния

огранич ений

UNIQUE

и

NOT

NULL

Перв ич ные

ключ и

имеют

след ующ ие

особенности

та блица

может

сод ержа ть

только

од ин

п ер в ич ный

ключ

в нешние

ключ и

п о

умолч а нию

ссыла ются

на

п ерв ич ный

ключ

та блицы

п ерв ич ный

ключ

яв ляется

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

строк

та блицы

  (

строки

од на ко

могут

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

и

д ругими

сп особа ми

). 


background image

95 

У луч шенный

в а р иа нт

соз д а ния

та блицы

STUDENT1

с

объяв ленным

п ерв ич ным

ключ ом

имеет

теп ер ь

след ующ ий

в ид

CREATE

TABLE

STUDENT

(

STUDENT

_

ID

INTEGER

PRIMARY

KEY

 SURNAME   

CHAR

 (25) 

NOT

NULL

 NAME   

CHAR

 (10) 

NOT

NULL

,  

 STIPEND   

INTEGER

 KURS   

INTEGER

 CITY   

CHAR

 (15), 

 BIRTHDAY  

DATE

,      

 UNIV

_

ID 

INTEGER

); 

4.5.6. 

С ост авны е

первичны е

кл ю чи

  

О гра нич ение

PRIMARY

KEY

может

та кже

быть

п р именено

д ля

нескольких

п олей

соста в ляющ их

уника льную

комбина цию

з на ч ений

со ст а в но й

п ерв ич ный

ключ

Ра ссмотрим

та блицу

EXAM

_

MARKS

О ч ев ид но

ч то

ни

к

п олю

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

студ ента

  (

STUDENT

_

ID

), 

ни

к

п ол ю

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

п ред мета

обуч ения

  (

EXAM

_

ID

п о

отд ельности

нельзя

п ред ъяв ить

требов а ние

уника льности

О д на ко

д ля

того

ч тобы

в

та блице

не

могли

п ояв иться

раз ные

з а п иси

д ля

од ина ков ых

комбина ций

з на ч ений

п олей

  

STUDENT

_

ID

и

EXAM

_

ID

  (

конкретный

студ ент

на

конкр етном

э кз а мене

не

может

п олуч ить

более

од ной

оценки

), 

имеет

смысл

объяв ить

уника льной

комбина цию

э тих

п олей

Д л я

э того

мы

можем

п рименить

огранич ение

та блицы

PRIMARY

KEY

объяв ив

п а р у

EXAM

_

ID

и

STUDENT

_

ID

п ерв ич ным

ключ ом

та блицы

CREATE

TABLE 

NEW

_

EXAM

_

MARKS

(

STUDENT

_

ID 

INTEGER NOT

NULL

 SUBJ

_

ID 

INTEGER NOT

NULL

 MARK   

INTEGER

 DATA   

DATE

,

CONSTRAINT 

EX

_

PR

_

KEY

PRIMARY KEY

(

EXAM

_

ID

STUDENT

_

ID

));