Затем можно приступать к созданию таблиц БД в табличном простран- стве, как показано на рис. 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