Изучаем sql


Глава 13. Индексы и ограничения Создание ограничений



Pdf көрінісі
бет222/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   218   219   220   221   222   223   224   225   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

252
Глава 13. Индексы и ограничения
Создание ограничений
Обычно ограничения создают одновременно с ассоциированной табли
цей посредством выражения 
create
table
. Для иллюстрации приведем
пример из сценария формирования схемы для БД, используемой в ка
честве примера к этой книге:
CREATE TABLE product
(product_cd VARCHAR(10) NOT NULL,
name VARCHAR(50) NOT NULL,
product_type_cd VARCHAR (10) NOT NULL,
date_offered DATE,
date_retired DATE,
CONSTRAINT fk_product_type_cd FOREIGN KEY (product_type_cd)
REFERENCES product_type (product_type_cd),
CONSTRAINT pk_product PRIMARY KEY (product_cd)
);
Таблица 
product
включает два ограничения: первое определяет столбец
product_cd
как первичный ключ таблицы, а второе – столбец 
product_
type_cd
как внешний ключ к таблице 
product_type
. Альтернативный ва
риант: таблицу 
product
можно было создать без ограничений, а ограни
чения первичного и внешнего ключей добавить позже посредством вы
ражений 
alter
table
:
ALTER TABLE product
ADD CONSTRAINT pk_product PRIMARY KEY (product_cd);
ALTER TABLE product
ADD CONSTRAINT fk_product_type_cd FOREIGN KEY (product_type_cd)
REFERENCES product_type (product_type_cd);
Если требуется убрать ограничения первичного или внешнего ключей,
можно опять воспользоваться выражением 
alter
table
, только в этом
случае задается 
drop
, а не 
add
:
ALTER TABLE product
DROP PRIMARY KEY;
ALTER TABLE product
DROP FOREIGN KEY fk_product_type_cd;
Ограничение первичного ключа обычно не удаляется, а ограничения
внешнего ключа иногда отменяются во время определенных операций
обслуживания, а потом устанавливаются вновь.
Ограничения и индексы
Как было показано в этой главе ранее, иногда создание ограничений
включает автоматическое формирование индекса. Однако серверы БД
ведут себя поразному в зависимости от связи между ограничениями
и индексами. В табл. 13.1 показаны связи между ограничениями и ин
дексами в MySQL, SQL Server и Oracle Database.


Ограничения
253
Таблица 13.1. Формирование ограничений
Следовательно, MySQL формирует новый индекс, чтобы реализовать
ограничения первичного ключа, внешнего ключа и уникальности. SQL
Server формирует новый индекс для ограничений первичного ключа
и уникальности, а для ограничений внешнего ключа – 
нет
. Oracle Da
tabase использует такой же подход, как и SQL Server, за тем исключе
нием, что Oracle для введения в действие ограничений первичного клю
ча и уникальности будет использовать существующий индекс (если
есть подходящий). Хотя ни SQL Server, ни Oracle Database не формиру
ют индекс для ограничения внешнего ключа, документация обоих сер
веров рекомендует создавать индекс для каждого внешнего ключа.


Достарыңызбен бөлісу:
1   ...   218   219   220   221   222   223   224   225   ...   261




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет