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

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

Жанры

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

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

Шрифт:

• Первичный ключ может быть также задан в конце описания таблицы после определений всех полей. Для этого также используется ключевая фраза 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,

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

Толян и его команда

Иванов Дмитрий
6. Девяностые
Фантастика:
попаданцы
альтернативная история
7.17
рейтинг книги
Толян и его команда

Эволюционер из трущоб. Том 3

Панарин Антон
3. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
6.00
рейтинг книги
Эволюционер из трущоб. Том 3

Боярышня Дуняша 2

Меллер Юлия Викторовна
2. Боярышня
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Боярышня Дуняша 2

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

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

На границе империй. Том 4

INDIGO
4. Фортуна дама переменчивая
Фантастика:
космическая фантастика
6.00
рейтинг книги
На границе империй. Том 4

Кадры решают все

Злотников Роман Валерьевич
2. Элита элит
Фантастика:
боевая фантастика
попаданцы
альтернативная история
8.09
рейтинг книги
Кадры решают все

Наследник

Майерс Александр
3. Династия
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Наследник

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

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

Тайны затерянных звезд. Том 1

Лекс Эл
1. Тайны затерянных звезд
Фантастика:
боевая фантастика
космическая фантастика
фэнтези
5.00
рейтинг книги
Тайны затерянных звезд. Том 1

Кодекс Крови. Книга VIII

Борзых М.
8. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга VIII

Имперец. Земли Итреи

Игнатов Михаил Павлович
11. Путь
Фантастика:
героическая фантастика
боевая фантастика
5.25
рейтинг книги
Имперец. Земли Итреи

Законы Рода. Том 13

Андрей Мельник
13. Граф Берестьев
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 13

ИФТФ им. Галушкевича. Трилогия

Кьяза
Фантастика:
фэнтези
юмористическая фантастика
5.00
рейтинг книги
ИФТФ им. Галушкевича. Трилогия

Сын Тишайшего 2

Яманов Александр
2. Царь Федя
Фантастика:
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Сын Тишайшего 2