Баксараев Андрей

 

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;