Баксараев
Андрей
Oracle Server
Структура объектов БД на сервере Oracle для практических занятий с
объектами Forms ,
Reports и Graphics.
1. Постановка задачи. Структура объектов БД
Пусть в некой организации ведется учет сотрудников по
принадлежности их какому либо отделу , каждый сотрудник имеет штатную должность и
соответствующий ей оклад. Помимо отдела и должности сотрудника характеризует его Имя, Дата рождения, Адрес , Телефон и
Количество детей.
Для организации такого учета нам необходимо создать:
Таблицы:
OTD - Описание отделов
SOTR -
Описание сотрудников отдела
DOL - Описание должностей сотрудников
Таблицы связаны между собой :

2. Командный файл
Для создания структуры
необходимо выполнить в SQL*PLUS следующие команды
PROMPT Создание таблицы DOL
CREATE TABLE dol(
dol_id NUMBER(10,0) NOT NULL,
name_d VARCHAR2(20) NOT NULL,
oklad NUMBER(9,2) NULL
)
/
PROMPT Создание таблицы SOTR
CREATE TABLE sotr(
sotr_id NUMBER(10,0) NOT NULL,
name_s VARCHAR2(50) NOT NULL,
dt DATE NOT NULL,
dol_dol_id
NUMBER(10,0) NULL,
otd_otd_id
NUMBER(10,0) NULL,
adres VARCHAR2(100) NULL,
tel
VARCHAR2(10) NULL,
kol_det NUMBER(2,0) NULL
)
/
PROMPT Создание таблицы OTD
CREATE TABLE otd(
otd_id NUMBER(10,0) NOT NULL,
name VARCHAR2(20) NULL
)
/
PROMPT Добавим Ограничение на Первичный ключ в таблицу DOL
ALTER TABLE DOL ADD (
CONSTRAINT DOL_PK
PRIMARY KEY (DOL_ID)
USING INDEX
PCTFREE 10
)
/
PROMPT Добавим Ограничение на Первичный ключ в таблицу OTD
ALTER TABLE OTD ADD (
CONSTRAINT OTD_PK
PRIMARY
KEY (OTD_ID)
USING INDEX
PCTFREE 10
)
/
PROMPT Добавим Ограничение на Первичный ключ в таблицу SOTR
ALTER TABLE SOTR ADD (
CONSTRAINT SOTR_PK
PRIMARY KEY (SOTR_ID)
USING INDEX
PCTFREE 10
)
/
PROMPT Добавим Ограничение на Внешний ключ в таблицу SOTR
ALTER TABLE SOTR ADD (
CONSTRAINT SOTR_DOL_FK
FOREIGN KEY (DOL_DOL_ID)
REFERENCES DOL ( DOL_ID)
)
/
PROMPT Добавим Ограничение на Внешний ключ в таблицу SOTR
ALTER TABLE SOTR ADD (
CONSTRAINT SOTR_OTD_FK
FOREIGN KEY (OTD_OTD_ID)
REFERENCES OTD (
OTD_ID)
)
/
PROMPT Добавим уникальный ключ на таблицу 'SOTR'
ALTER TABLE SOTR
ADD
(CONSTRAINT SOTR_SOTR_UK_UK UNIQUE
(DT, NAME_S))
/
PROMPT Добавим уникальный ключ на таблицу 'OTD'
ALTER TABLE OTD
ADD
(CONSTRAINT OTD_OTD_UK_UK UNIQUE (NAME))
/
PROMPT Создадим индекс на Внешний ключ таблицы SOTR
CREATE INDEX SOTR_DOL_FK_I ON SOTR ( dol_dol_id )
PCTFREE 10
/
PROMPT Создадим индекс на Внешний ключ таблицы Table SOTR
CREATE INDEX SOTR_OTD_FK_I ON SOTR ( otd_otd_id )
PCTFREE 10
/
PROMPT Создадим последовательность для первичного ключа
таблицы DOL
CREATE SEQUENCE dol_seq
INCREMENT BY 1
START
WITH 1
MINVALUE
1
NOMAXVALUE
NOCYCLE
NOCACHE
NOORDER
/
PROMPT Создадим последовательность для первичного ключа
таблицы OTD
CREATE SEQUENCE otd_seq
INCREMENT BY 1
START
WITH 1
MINVALUE
1
NOMAXVALUE
NOCYCLE
NOCACHE
NOORDER
/
PROMPT Создадим последовательность для первичного ключа
таблицы SOTR
CREATE SEQUENCE sotr_seq
INCREMENT BY 1
START
WITH 1
MINVALUE
1
NOMAXVALUE
NOCYCLE
NOCACHE
NOORDER
/
PROMPT Заполним таблицы начальными данными
insert into otd (otd_id,name) values
(otd_seq.nextval,'Отдел 1');
insert into otd (otd_id,name) values
(otd_seq.nextval,'Отдел 2');
insert into otd (otd_id,name) values
(otd_seq.nextval,'Отдел 3');
insert into dol (dol_id,name_d,oklad) values
(dol_seq.nextval,'Менеджер',2000000);
insert into dol (dol_id,name_d,oklad) values
(dol_seq.nextval,'Клерк',1000000);
insert into dol (dol_id,name_d,oklad) values
(dol_seq.nextval,'Уборщица',200000);
insert into sotr (sotr_id,name_s,dt,otd_otd_id,dol_dol_id,adres,tel,kol_det)
values
(sotr_seq.nextval,'Иванов',to_date('01.02.1965','dd.mm.yyyy'),1,1,'Н.Новгород','12-34-56',1);
insert into sotr (sotr_id,name_s,dt,otd_otd_id,dol_dol_id,adres,tel,kol_det)
values
(sotr_seq.nextval,'Петров',to_date('15.04.1969','dd.mm.yyyy'),1,2,'Н.Новгород','45-64-35',0);
insert into sotr (sotr_id,name_s,dt,otd_otd_id,dol_dol_id,adres,tel,kol_det)
values
(sotr_seq.nextval,'Сидоров',to_date('07.03.1970','dd.mm.yyyy'),2,3,'Москва','142-44-55',6);
insert into sotr (sotr_id,name_s,dt,otd_otd_id,dol_dol_id,adres,tel,kol_det)
values
(sotr_seq.nextval,'Пластинин',to_date('01.08.1973','dd.mm.yyyy'),2,1,'Н.Новгород','75-84-35',2);
insert into sotr (sotr_id,name_s,dt,otd_otd_id,dol_dol_id,adres,tel,kol_det)
values
(sotr_seq.nextval,'Костерина',to_date('01.09.1975','dd.mm.yyyy'),2,3,'Н.Новгород','66-88-22',0);
insert into sotr (sotr_id,name_s,dt,otd_otd_id,dol_dol_id,adres,tel,kol_det)
values
(sotr_seq.nextval,'Павлов',to_date('04.11.1960','dd.mm.yyyy'),1,3,'Н.Новгород','33-44-35',1);
insert into sotr (sotr_id,name_s,dt,otd_otd_id,dol_dol_id,adres,tel,kol_det)
values
(sotr_seq.nextval,'Аляпкин',to_date('25.02.1965','dd.mm.yyyy'),2,1,'Санкт
Петербург','234-54-47',6);
insert into sotr (sotr_id,name_s,dt,otd_otd_id,dol_dol_id,adres,tel,kol_det)
values
(sotr_seq.nextval,'Пугачев',to_date('01.12.1979','dd.mm.yyyy'),2,2,'Саратов','87-47-12',1);
insert into sotr (sotr_id,name_s,dt,otd_otd_id,dol_dol_id,adres,tel,kol_det)
values
(sotr_seq.nextval,'Разин',to_date('02.01.1977','dd.mm.yyyy'),2,2,'Москва','342-65-42',0);
insert into sotr (sotr_id,name_s,dt,otd_otd_id,dol_dol_id,adres,tel,kol_det)
values
(sotr_seq.nextval,'Степаненко',to_date('09.10.1955','dd.mm.yyyy'),1,3,'Киев','12-78-45',2);
insert into sotr (sotr_id,name_s,dt,otd_otd_id,dol_dol_id,adres,tel,kol_det) values
(sotr_seq.nextval,'Аляпкин',to_date('10.10.1978','dd.mm.yyyy'),2,3,'Тверь','254-45-64',1);
commit;