Читать в оригинале

<< Предыдущая Оглавление Следующая >>


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

После того как таблица определена, ее структуру, свойства и ограни­чения можно изменить, используя оператор ALTER. Так, в листинге 2.2 представлен альтернативный способ определения первичного ключа, при котором сначала определяется таблица, а потом ее определение модифи­цируется оператором ALTER. Оператор CREATE TABLE определяет все столбцы таблицы CUSTOMER, но ни один из них не указывается в ка­честве первичного ключа. Затем при помощи оператора ALTER TABLE вводится новое ограничение под названием CustomerPK, которое опреде­ляет столбец CustomerlD как первичный ключ.

Листинг 2.2.

CREATE TABLE CUSTOMER(
CustomerlD                  int                                   NOT NULL,
Name                            char(25)                         NOT NULL,
Street                            char(30)                         NULL,
City                               char(35)                         NULL,
State                             char(2)                           NULL,
ZipPostalCode              char(5)                           NULL,
Country                        varchar(50)                    NULL,
AreaCode                     char(3)                           NULL,
PhoneNumber              char(8)                           NULL,
Email                            varchar(100)                  NULL);
ALTER TABLE CUSTOMER
ADD CONSTRAINT CustomerPK PRIMARY KEY (CustomerlD);
CREATE TABLE ARTIST(
ArtistID                         int                                  NOT NULL,
Name                             char(25)                        NOT NULL,
Nationality varchar(30)                                      NULL,
BirthDate                      numeric(4,0)                  NULL,
DeceasedDate numeric(4,0)                               NULL,
CONSTRAINT ArtistPK PRIMARY KEY (ArtistID));

Имя для ограничения может выбираться произвольно. Однако есть смысл придерживаться некоторым стандартным соглашениям об имено­вании. В этом пособии, например, имена первичных ключей образуются путем присоединения аббревиатуры РК (Primary Key - первичный ключ) к названию таблицы.

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

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

Листинг 2.3.

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

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

 

 



<< Предыдущая Оглавление Следующая >>