Ограничение первичных ключей — КиберПедия 

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Ограничение первичных ключей

2017-11-22 104
Ограничение первичных ключей 0.00 из 5.00 0 оценок
Заказать работу

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

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

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

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

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

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);

 

Составные первичные ключи

Ограничение 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));

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

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

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

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

CREATE TABLE STUDENT

(STUDENT_ID INTEGER PRIMARY KEY,

SURNAME CHAR (25) NOT NULL,

NAME CHAR (10) NOT NULL,

STIPEND INTEGER CHECK (STIPEND < 200),

KURS INTEGER,

CITY CHAR (15),

BIRTHDAY DATE,

UNIV_ID INTEGER);

 

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

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

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

CREATE TABLE STUDENT

(STUDENT_ID INTEGER PRIMARY KEY,

SURNAME CHAR(25) NOT NOLL,

NAME CHAR (10) NOT NULL,

STIPEND INTEGER,

KURS INTEGER,

CITY CHAR(15),

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 (15),

BIRTHDAY DATE,

UNIV_ID INTEGER UNIQUE,

CONSTRAINT STUD_CHECK CHECK (STIPEND < 200 AND CITY = 'Воронеж'));

Установка значений по умолчанию

В SQL имеется возможность при вставке в таблицу строки, не указывая значений некоторого поля, определять значение этого поля по умолчанию. Наиболее часто используемым значением по умолчанию является NULL. Это значение принимается по умолчанию для любого столбца, для которого не было установлено ограничение NOT NULL.

Значение поля по умолчанию указывается в команде CREATE TABLE с помощью ключевого слова

DEFAULT <значение по умолчанию>.

Строго говоря, опция DEFAULT не имеет ограничительного свойства, так как она не ограничивает значения, вводимые в поле, а просто конкретизирует значение поля в случае, если оно не было задано.

Предположим, что основная масса студентов, информация о которых находится в таблице STUDENT, проживает в Воронеже. Чтобы при задании атрибутов не вводить для большинства студентов название города 'Воронеж', можно установить его как значение поля CITY по умолчанию, определив таблицу STUDENT следующим образом:

CREATE TABLE STUDENT

(STUDENT_ID INTEGER PRIMARY KEY,

SURNAME CHAR (25) NOT NULL,

NAME CHAR (10) NOT NULL,

STIPEND INTEGER CHECK (STIPEND < 200),

KURS INTEGER,


Поделиться с друзьями:

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

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



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.009 с.