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

Обратите внимание, что столбец CONSTRAINT_TYPE (под заголовком "С") показывает различные типы ограничений: "Р" означает ограничение PRIMARY KEY. "U" — ограничение UNIQUE. "R" — ограничение ссылочной целостности. а "С" — ограничение CHECK и ограничение NOT NULL (точнее определить последние ограничения можно по столбцу SEARCH_CONDITION).

Удаление столбцов

Так как команда Oracle7 ALTER TABLE не включает в себя возможности удаления столбца таблицы, то, если вам требуется именно это, все ее преимущества "бледнеют". Примите во внимание побочные эффекты (потерю доступности дан­ных и массу лишней работы), и если желание удалить столбец у вас не пропало, выполните следующие шаги:

1. Если вы работаете в рабочей базе данных, уже доступной для пользователей приложений, завершите те приложения, которым необходим доступ к данной таблице.

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

3. Для копирования данных из старой таблицы в новую используйте оператор INSERT с подзапросом:

INSERT INTO newtable SELECT соl1, col2, col3 FROM oldtable

4.   Переименуйте старую и новую версии таблицы:

      RENAME oldtable ТО oldtabletemporary

      RENAME newtable TO oldtable

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

6. Заново создайте необходимые представления и процедуры, зависящие от уда­ленного столбца. Если они не ссылаются явно на удаленную версию, то будут без проблем работать с новой таблицей.

Проверив корректность работы приложения, использующего новую версию таблицы, вы можете удалить старую версию и освободить место на диске.

Удаление таблиц

Если вы хотите полностью удалить таблицу из схемы приложения, то можете сделать это с помощью командыSQL DROP TABLE. Использование этой команды демонстрируют следующие операторы:

DROP TABLE item

DROP TABLE orders CASCASE CONSTRAINTS

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

  Примечание

Чтобы удалить таблицу с помощью команды DROPTABLE, вы должны быть владельцем таблицы или иметь системные полномочия DROPANYTABLE.

Управление представлениями

Завершив разработку таблиц в схеме приложения, вы можете создать на их основе различные представления, применение которых в схеме приложения может быть вызвано многими причинам. (См. выше раздел "Эффективное использование представлений при проектировании схемы").

Создание представлений

Чтобы создать для приложения новое представление, используйте командуSQL CREATE VIEW. Правила присваивания представлениям имен идентичны прави­лам присваивания имен таблицам. (См. выше раздел "Создание таблиц", где об этом рассказывается подробнее.)

При создании нового представления вы можете задать в команде CREATE VIEW несколько параметров, включая:

·   Определение запроса представления

·   Псевдонимы и имена столбцов в представлении

·   Ограничения целостности для представления

Каждый из них описывается в следующих разделах.

Примечание

Для создания представления вы должны иметь системные  полномочия CREATEVIEWили CREATEANYVIEW.                                       Д

Спецификация запроса представления

Основным, что нужно принимать во внимание при создании нового представ­ления, является определение запроса представления. Запрос представления точно описывает, какие табличные данные он будет представлять. Представление может быть простым, как. например, следующее, в котором маскируется имя таблицы:

CREATE V!EW inventory AS

SELECT • FROM stock

При работе пользователей с представлением INVENTORY оно будет выглядеть точно также, как если бы они работали с таблицей STOCK. Следующие примеры иллюстрируют аналогичную работу операторов SELECT и INSERT для представ­ления INVENTORY и таблицы STOCK.