Программирование >>  Формирование связанных подзапросов 

1 ... 11 12 13 [ 14 ] 15


В этом запросе STUD SUBJCONSTR - это имя, присвоенное указанному ограничению таблицы.

4.5.5. Ограничение первичн1х ключей

Первичные ключи таблицы - это специальнхе случаи комбинирования ограничений UNIQUE и NOT NULL. Первичные ключи имеют следующие особенности:

таблица может содержать только один первичнхй юч;

внешние ючи по умолчанию сс1лаются на первичнхй ключ таблицы;

первичнхй юч является идентификатором строк таблицы (строки, однако, могут идентифицироваться и другими способами).

Улучшенный вариант создания таблицы STUDENTI с объявленным первичным ключом имеет теперь следующий вид:

CREATE TABLE STUDENT

(STUDENT ID INTKGER PRIMARY KEY, SURNAME CHAR (2) NOT NU,

NAME CHAR (10) NOT NULL, STIPEND INTEGER, KURS INTEGER,

CITY CHAR (1), BIRTHDAY DATE, UNIV ID INTE) ;

..Ъ.&. Составн1е первичн1е ключи

Ограничение PRIMARY KEY может также бхть применено для нескольких полей, составляющих уникальную комбинацию значений - составной первичнхй ключ. Рассмотрим таблицу EXAMMARKS. Очевидно, что ни к полю идентификатора студента (STUDENT ID), ни к полю идентификатора предмета обучения (EXAM ID) по отдельности нельзя предъявить требование уникальности. Однако для того, чтобы в таблице не могли появиться



4.5. Ограничения на множество допустимых значений данн1х 97

разные записи для одинаковых комбинаций значений полей STUDENTID и EXAMID (конкретный студент на конкретном экзамене не может получить более одной оценки), имеет смысл объявить уникальной комбинацию этих полей. Для этого мы можем применить ограничение таблицы 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 (EX ю, STUDENT ID));

4.5.7. Проверка значений полей

Ограничение CHECK позволяет определять условие, которому должно удовлетворять вводимое в поле таблицы значение, прежде чем оно будет принято. Любая попхтка обновить или заменить значение поля такими, для которых предикат, задаваемый ограничением CHECK, имеет значение ложь, будет отвергаться.

Рассмотрим таблицу STUDENT. Значение столбца STIPEND в этой таблице выражается десятичнхм числом. Наложим на значения этого столбца ограничение - величина размера стипендии должна бгть меньше 200.

Соответствующий запрос имеет следующий вид:

CREATE TABLE STUDENT

(STUDENT ID INTEGER PRIMARY KEY, * SURNAME CHAR (2) NOT NULL,

NAME CHAR (10) NOT NULL,

STIPEND INTEGER CHECK (STIPEND < 200),

KURS INTEGER,

CITY CHAR (1),

BIRTHDAY DATE, UNIV ID INTEGER);

5 Зак 444 i



4.5.8. Проверка ограничивающих условий с использованием составных полей

Ограничение CHECK можно использовать в качестве табличного ограничения, то есть при необходимости включить более одного поля в ограничивающее условие.

Предположим, что ограничение на размер стипендии (меньше 200) должно распространяться только на студентов, живущих в Воронеже. Это можно указать в запросе со следующим табличным ограничением CHECK:

CREATE TABLE STUDENT (STUDENT ID INTEGER PRIMARY KEY, SURNAME CHAR(25) NOT NULL,

NAME CHAR (10) NOT NULL,

STIPEND INTEGER,

KURS INTEGER,

CITY CHAR (1),

BIRTHDAY DATE, UNIV ID INTEGER UNIQUE, CHECK (STIPEND < 200 AND CITY = Воронеж)); или в несколько другой записи:

CREATE TABLE STUDENT

(STUDENT ID INTEGER PRIMARY KEY, SURNAME CHAR(25) NOT NULL,

NAME CHAR (10) NOT NULL,

STIPEND INTEGER, KURS INTEGER,

CITY CHAR (1),

BIRTHDAY DATE,

UNIV ID INTEGER UNIQUE, CONSTRAINT STUD CHECK CHECK (STIPEND < 200

AND CITY = pctia));



1 ... 11 12 13 [ 14 ] 15

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика