Чтение онлайн

на главную - закладки

Жанры

Информационные системы

Петров Владимир Николаевич

Шрифт:

• Первичный ключ может быть также задан в конце описания таблицы после определений всех полей. Для этого также используется ключевая фраза PRIMARY KEY, после которой в круглых скобках указывается имя поля, составляющего первичный ключ:

CREATE TABLE имя_таблицы (

имя_поля_1 тип_данных NOT NULL,

имя_поля_2 тип_данных,

...

имя_поля_N тип_данных NOT NULL,

PRIMARY KEY (имя_поля_1))

Второй

способ особенно удобен для задания составных первичных ключей. В этом случае в скобках следует перечислить через запятую все поля, составляющие первичный ключ:

CREATE TABLE имя_таблицы (

имя_поля_1 тип_данных NOT NULL,

имя_поля_2 тип_данных,

имя_поля_3 тип_данных NOT NULL,

...

имя_поля_N тип_данных NOT NULL,

PRIMARY KEY (имя_поля_1, имя_поля_3))

Примечание.

При использовании составного первичного ключа ограничение NOT NULL должно быть задано для всех полей, входящих в его состав.

Ограничение UNIQUE

Ограничение UNIQUE похоже на ограничение первичного ключа, так как при наличии этого ограничения для некоторого поля все содержащиеся в нем значения должны быть уникальными. Однако в отличие от первичного ключа ограничение UNIQUE допускает наличие в поле пустых значений (если, конечно, для этого поля не установлено ограничение NOT NULL).

Ограничение UNIQUE задается при создании таблицы с помощью ключевого слова UNIQUE, указываемого при описании поля:

CREATE TABLE имя_таблицы (

имя_поля_1 тип_данных NOT NULL PRIMARY KEY,

имя_поля_2 тип_данных UNIQUE,

имя_поля_3 тип_данных NOT NULL,

...

имя_поля_N тип_данных NOT NULL UNIQUE)

Можно также задать ограничение UNIQUE не для одного поля, а для группы полей. Объявление группы полей уникальной – не то же самое, что объявление уникальными нескольких отдельных полей, так как уникальной обязана быть именно комбинация значений, а не просто индивидуальные значения. То есть значение каждого поля, входящего в группу, не обязательно должно быть уникальным, а комбинация значений полей всегда должна быть уникальной.

Ограничение UNIQUE для группы полей, так же как и составной первичных ключ, задается после описания всех полей таблицы:

 

CREATE TABLE имя_таблицы (

имя_поля_1 тип_данных NOT NULL PRIMARY KEY,

имя_поля_2 тип_данных,

имя_поля_3 тип_данных NOT NULL,

...

имя_поля_N тип_данных NOT NULL UNIQUE,

UNIQUE (имя_поля_2, имя_поля_3))

Ограничение внешнего ключа

Ограничение внешнего ключа лежит в основе поддержания ссылочной целостности

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

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

Внешний ключ не обязательно должен состоять только из одного поля. Подобно первичному ключу внешний ключ может состоять из любого числа полей, которые обрабатываются как единый объект. Поля родительского ключа, на который ссылается составной внешний ключ, должны следовать в том же порядке, что и во внешнем ключе.

Когда поле таблицы является внешним ключом, оно определенным образом связано с таблицей, на которую этот ключ ссылается. Это фактически означает, что каждое значение во внешнем ключе непосредственно привязано к значению в родительском ключе.

В качестве иллюстрации использования ограничения внешнего ключа возьмем пример из предыдущей главы – базу данных по учету сотрудников некоторой организации (рис. 5.1). Эта база данных состоит из трех таблиц:

• СОТРУДНИКИ – содержит информацию о профессиональных данных сотрудников;

• ФИЗИЧЕСКИЕ ЛИЦА – содержит информацию о личных данных сотрудников;

• ДОЛЖНОСТИ – содержит информацию о должностях организации.

Основной таблицей в этой базе данных является таблица СОТРУДНИКИ, которая ссылается на две другие таблицы и, соответственно, должна иметь два внешних ключа. В качестве родительских ключей в таблицах ФИЗИЧЕСКИЕ ЛИЦА и ДОЛЖНОСТИ используются первичные ключи.

Ограничение внешнего ключа (FOREIGN KEY) может быть задано либо в операторе CREATE TABLE, либо в операторе ALTER TABLE. Синтаксис ограничения FOREIGN KEY имеет следующий вид:

FOREIGN KEY имя_внешнего_ключа (список полей внешнего ключа)

REFERENCES имя_родительской_таблицы (список полей родительского ключа)

Рис. 5.1. База данных сотрудников организации.


Первый список полей – это список из одного или нескольких полей таблицы, разделенных запятыми. Второй список полей – это список полей, которые будут составлять родительский ключ. Списки полей, указываемые в качестве внешнего и родительского ключей, должны быть совместимы:

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

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

Рассмотрим пример создания базы данных со связанными таблицами:

CREATE TABLE Физические_лица (

Код_физического_лица INTEGER NOT NULL PRIMARY KEY,

Имя VARCHAR(25) NOT NULL,

Фамилия VARCHAR(25) NOT NULL,

Поделиться:
Популярные книги

Жребий некроманта 2

Решетов Евгений Валерьевич
2. Жребий некроманта
Фантастика:
боевая фантастика
6.87
рейтинг книги
Жребий некроманта 2

Предатель. Вернуть любимую

Дали Мила
4. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Предатель. Вернуть любимую

Бывший муж

Рузанова Ольга
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Бывший муж

Мама для дракончика или Жена к вылуплению

Максонова Мария
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Мама для дракончика или Жена к вылуплению

Жандарм 5

Семин Никита
5. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Жандарм 5

Менталист. Эмансипация

Еслер Андрей
1. Выиграть у времени
Фантастика:
альтернативная история
7.52
рейтинг книги
Менталист. Эмансипация

Кодекс Охотника. Книга XXIV

Винокуров Юрий
24. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXIV

Лорд Системы 14

Токсик Саша
14. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 14

Смерть может танцевать 4

Вальтер Макс
4. Безликий
Фантастика:
боевая фантастика
5.85
рейтинг книги
Смерть может танцевать 4

Идеальный мир для Лекаря 2

Сапфир Олег
2. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 2

Черный Маг Императора 8

Герда Александр
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 8

Не отпускаю

Шагаева Наталья
Любовные романы:
современные любовные романы
эро литература
8.44
рейтинг книги
Не отпускаю

Идеальный мир для Лекаря 8

Сапфир Олег
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Идеальный мир для Лекаря 8

Темный Патриарх Светлого Рода 3

Лисицин Евгений
3. Темный Патриарх Светлого Рода
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Темный Патриарх Светлого Рода 3