Проектирование схемы приложения. Эффективное использование синонимов в схеме приложения, страница 7

Кроме того, спецификация столбца в операторе CREATE TABLE может вклю­чать в себя заданное по умолчанию выражение и ограничения целостности для столбца. (Об ограничениях целостности в спецификации столбца подробнее рас­сказывается в следующем разделе.) Заданное по умолчанию выражение столбца — это удобное средство SQL, указывающее значение для оператора INSERT, в кото­ром значение столбца не определяется. В качестве используемого по умолчанию выражения вы можете задать любое выражение, не включающее в себя ссылки на другой столбец или последовательность. Это выражение может быть SQL-функцией Oracle7, например SYSDATE или USER. В столбцах данных в таблице ORDERS предыдущего примера для заполнения даты в операторах INSERT, где не определены даты заказа, поставки и оплаты, использовалась SQL-функция SYSDATE (предполагается, что значение NULL в этом столбце не допускается).

Спецификация ограничений целостности

В главах 2 и 18 поясняются важные преимущества, которые дают в базах данных клиент/сервер ограничения целостности. При планировании новой табли­цы о них не следует забывать. Эти ограничения вы сможете задать при создании таблицы.

SQL позволяет вам задавать для новой таблицы ограничения целостности как в спецификациях столбцов, так и вне их. Приведенный выше пример CREATE TABLE показывает некоторые ограничения целостности, задаваемые в специфи­кациях столбца.

Если Oracle7 позволяет задавать ограничения целостности в спецификациях столбцов и вне их, то каким образом выбрать нужный метод? В большинстве случаев, поскольку это лишь синтаксические возможности SQL, вы можете выби­рать его по своему усмотрению. Конкретный метод задания ограничений целост­ности выбирается лишь в двух ситуациях:

• В соответствующих спецификациях столбца не следует задавать ограничения целостности NOT NULL.

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

Чтобы продемонстрировать это, приведем пример. Следующий оператор CREATE TABLE показывает, как задать вне спецификации каждого столбца несколько ограничений NOT NULL и составное ограничение PRIMARY KEY:

CREATE TABLE item ( id INTEGER,

orderid INTEGER REFERENCES orders ON DELETE CASCADE, stockid INTEGER NOT NULL REFERENCES stock,

quantity INTEGER NOT NULL,

 total DECIMAL(10,2)

 PRIMARY KEY (id, orderid) )

Заметим, что включение ограничений ссылочной целостности по возможности в саму спецификацию столбцов более четко показывают применяемые к каждому столбцу правила целостности.

 Совет

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

Другие возможности

Если взглянуть на полную синтаксическую диаграмму команды CREATE TABLE Oracle7, то вы увидите, что существует и много других возможностей. (Например, в главе 10 поясняется, как с помощью ключевых слов STORAGE и TABLESPACE этой команды задавать для новой таблицы различные параметры памяти.) Если вы разработчик приложения и работаете в тестовой среде, то другие возможности команды CREATE TABLE скорее всего вам не потребуются — ведь ваши таблицы представляют собой лишь прототипы и содержат мало данных. Однако при создании таблиц для рабочей базы данных эти возможности приобре­тают важное значение. Обычно при инсталляции нового приложения администра­тор уделяет внимание вопросам хранения новой таблицы. Это обеспечивает корректность распределения памяти на диске для каждой таблицы. (Подробнее о параметрах памяти рассказывается в главе 10.)

Модификация таблиц

Сколько раз вам приходилось создавать что-то, а потом оказывалось, что это не совсем то, что нужно? Занимаясь сложным процессом создания для приложения новых таблиц, вы часто будет обнаруживать что-то новое и модифицировать структуру таблицы. Oracle7 включает в себя команду ALTER TABLE, с помощью которой вы можете изменить таблицу, не отказываясь от старой версии и не начиная все сначала.