2.1.2 Определение первичных и альтернативных ключей с помощью оператора ALTERПосле того как таблица определена, ее структуру, свойства и ограничения можно изменить, используя оператор ALTER. Так, в листинге 2.2 представлен альтернативный способ определения первичного ключа, при котором сначала определяется таблица, а потом ее определение модифицируется оператором ALTER. Оператор CREATE TABLE определяет все столбцы таблицы CUSTOMER, но ни один из них не указывается в качестве первичного ключа. Затем при помощи оператора ALTER TABLE вводится новое ограничение под названием CustomerPK, которое определяет столбец CustomerlD как первичный ключ. Листинг 2.2. CREATE TABLE CUSTOMER( Имя для ограничения может выбираться произвольно. Однако есть смысл придерживаться некоторым стандартным соглашениям об именовании. В этом пособии, например, имена первичных ключей образуются путем присоединения аббревиатуры РК (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.
|