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

CREATE TABLE sales.orders

 ( id INTEGER PRIMARY KEY,

customerid INTEGER NOT NULL REFERENCES customer,

 orderdate DATE DEFAULT SYSDATE NOT NULL,

 shipdate DATE DEFAULT SYSDATE,

 paiddate DATE DEFAULT SYSDATE,

 status CHAR(1) DEFAULT 'F' CHECK (status IN ('F', 'B')) )

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

Примечание

Для использования команды CREATETABLE вы долж­ны иметь системные полномочия CREATETABLE (для создания таблиц в своей схеме) или CREATEANYTABLE (для создания таблиц в своей или другой схеме).

Имя таблицы может быть любым литералом длиной до 30 символов (или байт), однако начинаться оно должно с буквы. Кроме того, имя не должно вступать в конфликт с зарезервированными словами Oracle. Например, большинство таблиц в данной книге имеют единственное число (например, ITEM, а не ITEMS), однако таблица заказов называется ORDERS, так как ORDER — это зарезервированное слово Oracle7 (оно используется в операторе SQL ORDER BY).

Если это необходимо, в качестве имени таблицы (или любого другого объекта базы данных) можно использовать и зарезервированное слово Oracle, но при этом в операторе CREATE TABLE оно должно заключаться в двойные кавычки:

CREATE TABLE "order"

Однако большинство программистов избегают применения для имен объектов зарезервированных слов Oracle, так как это вызывает трудности при работе с SQL — все ссылки на такую таблицу должны содержать ее имя в кавычках SELECT * FROM "order" INSERT INTO "order"...

Отсюда видно, что зарезервированные слова в именах таблиц и других объектов лучше не использовать. Наконец, нужно убедиться, что имя таблицы уникально среди имен объектов данной схемы. Например, в схеме SALES не может быть двух таблиц ORDERS.

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

Спецификация столбцов и типов данных

Первое, что нужно принимать во внимание при создании новой таблицы — это ее столбцы. Столбцы определяют структуру строк содержащихся в таблице дан­ных. Как можно задать различные части спецификации столбца, показывает при­веденный в предыдущем разделе пример оператора CREATE TABLE.

Чтобы задать столбец таблицы в команде CREATE TABLE, укажите список разделенных запятыми спецификаций. Спецификация каждого столбца может со­стоять из нескольких частей. Здесь как минимум требуется задать имя столбца и тип его данных. Именем столбца может быть литерал дайной до 30 символов (или байт). Имя должно начинаться с алфавитного символа и не совпадать с зарезерви­рованными словами Oracle. Типом данных столбца может быть любой тип данных Oracle, включая CHAR, VARCHAR2. NUMBER, DATE, LONG, RAW, LONG RAW и ROWID. (Подробная информация о типах данных Oracle приведена в таблице 2.1 г.тавы2.)

Совет

Для удобства вы можете также задавать тип данных столбца, используя большинство типов данных ANSI, IBMBD2 или IBMSQL/DS. В приведенном выше приме­ре тип данных для столбцов ID и CUSTOMERID задавал­ся как INTEGER. Если вы выберите задание типа данных столбца, используя не тип Oracle, то Oracle7 автоматически преобразует эту спецификацию типа в эквивалентную спецификацию типа данных Oracle. В этом примере Oracle7 автоматически конвертирует тип ANSIINTEGER в спецификацию типа данных ORACLENUMBER(38).