Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
базы данных.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
214 Кб
Скачать
☆

22 Ограничение foreign key.

Ограничение внешнего ключа - это основной механизм для поддержания ссылочной целостности между таблицами реляционной БД. Столбец дочерней таблицы, определенный в качестве внешнего ключа в параметре FOREIGN KEY, применяется для ссылки на столбец родительской таблицы, являющийся в ней первичным ключом. Имя родительской таблицы и столбцы ее первичного ключа указываются в предложении REFERENCES. Данные в столбцах, определенных в качестве внешнего ключа, могут принимать только такие же значения, какие находятся в связанных с ним столбцах первичного ключа родительской таблицы. Совпадение имен столбцов для связи дочерней и родительской таблиц необязательно. Единственным требованием остается соответствие столбцов по типу и размеру данных.

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

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

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

Ограничение ссылочной целостности задает требование, согласно которому для каждой записи в дочерней таблице должна иметься запись в родительской таблице. При этом изменение значения столбца связи в записи родительской таблицы при наличии дочерней записи блокируется, равно как и удаление родительской записи (запрет каскадного изменения и удаления), что гарантируется параметрами ON DELETE NO ACTION и ON UPDATE NO ACTION, принятыми по умолчанию. Для разрешения каскадного воздействия следует использовать параметры ON DELETE CASCADE и ON UPDATE CASCADE.

В начало

23 Создание, изменение и удаление таблиц средствами -sql.

•

CREATE TABLE создает новую таблицу.

Синтаксис:

CREATE TABLE таблица (поле_1 тип [(размер)]

[NOT NULL] [индекс_1] [, поле_2 тип [(размер)]

[NOT NULL] [индекс_2] [, ...]] [, CONSTRAINT составнойИндекс [, ...]])

Ниже перечислены аргументы инструкции CREATE TABLE:

Элемент                Описание

таблица                Имя создаваемой таблицы.

поле_1, поле_2        Имена одного или нескольких полей, создаваемых в новой таблице. Таблица должна содержать хотя бы одно поле.

тип                        Тип данных поля в новой таблице.

Размер        Размер поля в символах (только для текстовых и двоичных полей).

индекс_1, индекс_2        Предложение CONSTRAINT, предназначенное для создания простого индекса. Для получения более подробных сведений смотрите описание предложения CONSTRAINT.

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

•

CREATE INDEX создает новый индекс для существующей таблицы.

Синтаксис:

CREATE [ UNIQUE ] INDEX индекс

ON таблица (поле [ASC|DESC][, поле [ASC|DESC], ...])

[WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]

Ниже перечислены аргументы инструкции CREATE INDEX:

Элемент        Описание

индекс        Имя создаваемого индекса.

таблица        Имя существующей таблицы, для которой создается индекс.

поле        Имена одного или нескольких полей, включаемых в индекс. Для создания простого индекса (состоящего из одного поля) введите имя поля в круглых скобках сразу после имени таблицы. Для создания составного индекса (состоящего из нескольких полей) перечислите имена всех этих полей. Для расположения элементов индекса в убывающем порядке используйте зарезервированное слово DESC; в противном случае будет принят порядок по возрастанию.

В начало