Материал: 2110

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Затем можно приступать к созданию таблиц БД в табличном простран- стве, как показано на рис. 1.9.

Рис. 1.9. Пример создания таблицы

Поочередно создаем таблицы, структура которых представлена в табл. 1.1 – 1.5, по примеру, показанному ниже на рис. 1.10.

Рис. 1.10. Настройка структуры таблицы

10

Рис. 1.11. Создание ключевого поля в таблице

Кроме того, при создании новой таблицы на вкладке Constraints Storage в качестве табличного пространства для хранения индекса выбираем

DB_BOOKS (рис. 1.11).

Те же самые операции можно выполнить программно, используя опе- раторы SQL стандарта, реализованные в Oracle как операторы встроенного языка PL/SQL.

Для выполнения операторов можно запустить утилуту SQL *Plus Worksheet через меню Windows или через утилиту Enterprise Manager Console, выбрав на левой панели соответствующую пиктограмму, как по- казано на рис. 1.12.

11

Рис. 1.12. Пример запуска утилиты SQL * Plus Worksheet

При запуске SQL *Plus Worksheet подключиться к серверу с помощью пользователя System с паролем по умолчанию manager и уровнем доступа SYSDBA, в качестве SERVICE ввести имя экземпляра БД, в данном при- мере это ORCL.

Вводим набор операторов для создания администратора создаваемой

БД.

CREATE USER "ADMIN_BOOKS" PROFILE "DEFAULT" IDENTIFIED BY "worlds" DEFAULT TABLESPACE "USERS"

TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;

GRANT "CONNECT" TO "ADMIN_BOOKS" WITH ADMIN OPTION; GRANT "DBA" TO "ADMIN_BOOKS" WITH ADMIN OPTION; GRANT "EXP_FULL_DATABASE" TO "ADMIN_BOOKS" WITH

ADMIN OPTION;

Пример ввода программного кода показан на рис. 1.13.

Для запуска операторов на исполнение выделяем группу операторов мышкой и нажимаем F5. Если нет ошибок, то на каждый оператор система в нижней половине экрана выдаст сообщения: «Пользователь создан», «Привилегии предоставлены».

Теперь необходимо переподключиться к экземпляру БД под созданной учетной записью, для этого выберите значок «Электрическая вилка» и вве-

12

дите в появившемся окне данные для подключения под новым пользовате- лем.

Рис. 1.13. Пример работы утилиты SQL * Plus Worksheet

Приступаем к созданию табличного пространства программно (знак ; в конце оператора обязателен).

CREATE TABLESPACE "DB_BOOKS" LOGGING

DATAFILE 'C:\ORACLE\ORADATA\ORCL\DB_BOOKS.dbf' SIZE 5M EXTENT

MANAGEMENT LOCAL;

Для запуска оператора на исполнение выделяем его мышкой и нажима- ем F5. Если нет ошибок, то на оператор система в нижней половине экрана выдаст сообщение: «Раздел создан».

Теперь переопределяем ранее созданного пользователя ADMIN_BOOKS на работу только в табличном пространстве DB_BOOKS.

ALTER USER "ADMIN_BOOKS" DEFAULT TABLESPACE

"DB_BOOKS";

Для запуска оператора на исполнение выделяем его мышкой и нажима- ем F5. Если нет ошибок, то на оператор система в нижней половине экрана выдаст сообщение: «Пользователь изменен».

Создаем таблицы, структура которых представлена в табл. 1.1 – 1.5, по примеру представленного кода в утилите SQL *Plus Worksheet:

CREATE TABLE "ADMIN_BOOKS"."AUTHORS" ("CODE_AUTHOR" NUMBER(3) NOT NULL, "NAME_AUTHOR" CHAR(30), "BIRTHDAY" DATE,

13

CONSTRAINT "ID_AUTHOR" PRIMARY KEY("CODE_AUTHOR") USING INDEX TABLESPACE "DB_BOOKS") TABLESPACE "DB_BOOKS";

CREATE TABLE "ADMIN_BOOKS"."DELIVERIES" ("CODE_DELIVERY" NUMBER(4) NOT NULL, "NAME_DELIVERY" CHAR(35), "NAME_COMPANY" CHAR(30) NOT NULL, "ADDRESS" VARCHAR2(100), "PHONE" CHAR(11) NOT NULL, "INN" CHAR(13), CONSTRAINT "ID_DELIVERY" PRIMARY KEY("CODE_DELIVERY") USING INDEX TABLESPACE "DB_BOOKS") TABLESPACE "DB_BOOKS";

CREATE TABLE "ADMIN_BOOKS"."PUBLISHING_HOUSE" ("CODE_PUBLISH" NUMBER(4) NOT NULL, "PUBLISH" CHAR(30) NOT NULL, "CITY" CHAR(15), CONSTRAINT "ID_PUBLISH" PRIMARY KEY("CODE_PUBLISH") USING INDEX TABLESPACE "DB_BOOKS") TABLESPACE "DB_BOOKS";

CREATE TABLE "ADMIN_BOOKS"."BOOKS" ("CODE_BOOK" NUMBER(5) NOT NULL, "TITLE_BOOK" VARCHAR2(100) NOT NULL, "CODE_AUTHOR" NUMBER(3) NOT NULL, "PAGES" NUMBER(4), "CODE_PUBLISH" NUMBER(4) NOT NULL, CONSTRAINT "ID_BOOK_FK" PRIMARY KEY("CODE_BOOK") USING INDEX TABLESPACE "DB_BOOKS", CONSTRAINT "ID_AUTHOR_FK" FOREIGN KEY("CODE_AUTHOR") REFERENCES "ADMIN_BOOKS"."AUTHORS"("CODE_AUTHOR") ON DELETE CASCADE, CONSTRAINT "ID_PUBLISH_FK" FOREIGN KEY("CODE_PUBLISH") REFERENCES "ADMIN_BOOKS"."PUBLISHING_HOUSE"("CODE_PUBLISH") ON DELETE CASCADE) TABLESPACE "DB_BOOKS";

CREATE TABLE "ADMIN_BOOKS"."PURCHASES" ("CODE_BOOK" NUMBER(5) NOT NULL, "DATE_ORDER" DATE NOT NULL, "CODE_DELIVERY" NUMBER(4) NOT NULL, "TYPE_PURCHASE" CHAR(1) NOT NULL, "COST" NUMBER(10,2) NOT NULL, "AMOUNT" NUMBER(4) NOT NULL, "CODE_PURCHASE" NUMBER(5) NOT NULL, CONSTRAINT "ID_PURCHASE" PRIMARY KEY("CODE_PURCHASE") USING INDEX TABLESPACE "DB_BOOKS", CONSTRAINT "ID_BOOK_FK2" FOREIGN KEY("CODE_BOOK") REFERENCES "ADMIN_BOOKS"."BOOKS"("CODE_BOOK"), CONSTRAINT "ID_DELIVERY_FK" FOREIGN KEY("CODE_DELIVERY") REFERENCES "ADMIN_BOOKS"."DELIVERIES"("CODE_DELIVERY")) TABLESPACE "DB_BOOKS";

Не забывайте: сначала создаются справочники, в которых есть только ключевые поля типа PRIMARY, а затем другие таблицы, в которых соз- даются внешние ключи типа FOREIGN KEY.

14