Базы данных

Определение первичных и альтернативных ключей с помощью оператора alter

Оба способа определения первичных ключей для таблиц CUSTOMER (листинг 2.1 и листинг 2.2) являются правильными. Различие состоит в том, что во втором листинге разработчик указал явно имя органичения первичного ключа. Ограничению первичного ключа таблицы CUSTOMER (листинг 2.1) также будет дано имя, но выберет его уже СУБД, что очень часто затрудняет задачи администрирования данных. Поэтому второй метод более предпочтителен.

Определение таблицы ARTISTв листинге 2.2 демонстрирует еще один способ определения первичного ключа. Здесь ограничение определяется в теле оператора CREATE, после того как определены все столбцы. Используя этот подход, разработчик может присваивать имена ограничениям в момент создания таблиц, не прибегая к использованию оператора ALTER.

Листинг2.3.

CREATE TABLE CUSTOMER.ARTIST_INT(

ArtistID int NOT NULL, CustomerID int NOT NULL, CONSTRAINT CustomerArtistPK

PRIMARY KEY (ArtistID, CustomerlD), CONSTRAINT Customer_Artist_Int_ArtistFK

FOREIGN KEY (ArtistID)

REFERENCES ARTIST (ArtistID)

ON DELETE CASCADE, CONSTRAINT Customer_Artist_Int_CustomerFK

FOREIGN KEY (CustomerlD)

REFERENCES CUSTOMER (CustomerlD)

ON DELETE CASCADE);

Композитный ключ определяется путем перечисления имен атрибутов в скобках. Первичный ключ таблицы CUSTOMER_ARTIST_INT представляет собой сочетание {ArtistID, CustomerlD}. Композитный первичный ключ не может быть определен с помощью того метода, который представлен в листинге 2.1.

Посредством оператора ALTERможно также определять внешние ключи (см. листинг 2.3). Ограничение Customer_Artist_Int_ArtistFK указывает, что столбец ArtistID является внешний ключом, который указывает на столбец ARTIST.ArtistID. Аббревиатура FK означает внешний ключ (foreign key). В определении внешнего ключа можно указать процедуру обеспечения ссылочной целостности при удалении: ON DELETE CASCADE.

предыдущаяследующая