Файл: МУ к Курсовой по БД.pdf

Добавлен: 15.11.2018

Просмотров: 1908

Скачиваний: 8

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

 

21 

Таблица «Timn_Gruz» разработана для хранения перечня грузов, которые 

может перевозить компания водным путем. 
 
CREATE TABLE Timn_Gruz 

naimen               VARCHAR2(40) NOT NULL , 

 

ed_izm               VARCHAR2(10) NOT NULL , 

 

kod_gr               INTEGER NOT NULL); 
 
Таблица «Timn_Gruz» соответствует сущности ИЛМ «Груз». 

 

Создание уникального индекса под первичный ключ. 

 
CREATE UNIQUE INDEX XPKГруз ON Timn_Gruz 
(kod_gr   ASC); 

 
Команда для создания первичного ключа. 

 
ALTER TABLE Timn_Gruz 
 

ADD CONSTRAINT  XPKГруз PRIMARY KEY (kod_gr); 

 

Создание  уникального  индекса  для  предотвращения  повторений 

наименований груза. 

 

ALTER TABLE Timn_Gruz 
 

ADD CONSTRAINT  TimnГруз UNIQUE (naimen); 
 
И  таким  образом  провести  анализ  и  корректировку  по  всем  исходным 

текстам команд. 
 

Кроме  этого,  создать  последовательность  для  заполнения  суррогатных 

первичных ключей. 

Пример: 

 
CREATE SEQUENCE timn_seq 
START WITH 1 
INCREMENT BY 1; 
 
 

 

 

 

 


background image

 

 

22 

T imn_D o g o vo r

Nomer_dog: INTEGER NOT NULL

Data_oform: DATE NOT NULL
Data_vixoda: DATE NOT NULL
Data_prix_v_punkt_nazn: DATE NOT NULL
Data_zakr: DATE NULL
Predstav_zakazchika: VARCHAR2(40) NOT NULL
Kod_porta_ybut: INTEGER NOT NULL (FK)
Kod_porta_prib: INTEGER NOT NULL (FK)
kod_zakazchika: INTEGER NOT NULL (FK)
Kod_sud: INTEGER NOT NULL (FK)
Obsh_summa_po_dogovory: NUMBER NULL

T imn_Po z_d o g o vo ra

Nomer_dog: INTEGER NOT NULL (FK)
kod_gr: INTEGER NOT NULL (FK)
Kol_vo: INTEGER NOT NULL
Kod_tar: INTEGER NOT NULL (FK)

T imn_Gruz

kod_gr: INTEGER NOT NULL

naimen: VARCHAR2(40) NOT NULL
ed_izm: VARCHAR2(10) NOT NULL

T imn_T ip _s

Kod_tipa: INTEGER NOT NULL

Name_tipa: VARCHAR2(45) NOT NULL

T imn_Za ka zchik

kod_zakazchika: INTEGER NOT NULL

naimen: VARCHAR2(50) NOT NULL
urid_adres: VARCHAR2(100) NOT NULL
kontak_lico: VARCHAR2(50) NOT NULL
kontak_telefon: VARCHAR2(20) NOT NULL

T imn_Po rt

Kod_porta: INTEGER NOT NULL

Name_porta: VARCHAR2(40) NOT NULL

T imn_T a rif

Kod_tar: INTEGER NOT NULL

Tsena_za_ed: DECIMAL(19,4) NOT NULL
Ed_izm: VARCHAR2(10) NOT NULL
Data_yst: DATE NOT NULL

T imn_Sud no

Kod_sud: INTEGER NOT NULL

Name_sud: VARCHAR2(50) NOT NULL
Kod_tipa: INTEGER NOT NULL (FK)

 

Рисунок 2.2 - Физическая модель данных 

 

 

2.3  Ввод тестовых данных

 

 
Для проверки работы базы данных необходимо ввести тестовые данные. 

Ниже приведены таблицы с данными. 

 

 

 
 

Рисунок 2.3 – Основная таблица «Timn_dogovor» 


background image

 

 

23 

 

 

Рисунок 2.4 – Справочная таблица «Timn_TP_S» 

 
И т.д.  
 
 
2.4  Учет перевозок водным путем 

 
В  данной  курсовой  работе  для  реализации  темы  были  разработаны 

следующие запросы: 

 
1. Расчет стоимости перевозки груза, согласно тарифу: 
 
select timn_dogovor.nomer_dog, 
sum(kol_vo*tsena_za_ed) as summa_gr 
from timn_dogovor, timn_poz_dogovora, 
timn_gruz, timn_tarif 
where timn_dogovor.nomer_dog=timn_poz_dogovora.nomer_dog and 
timn_poz_dogovora.kod_gr=timn_gruz.kod_gr and  
timn_poz_dogovora.kod_tar=timn_tarif.kod_tar 
group by timn_dogovor.nomer_dog; 
 
 


background image

 

 

24 

 

 

Рисунок 2.5. 

 
2. Обновление столбца суммы в таблице "Timn_Dogovor" с учетом платы 

за перевозку: 

 
2.1. Создание представления на основе предыдущего запроса. 
 
SQL.sql: Выполнение завершено успешно [0,043c] 
TIMN_TIMN_VIEW: Запрос открыт за 0,493c [0,016c выполнение, 0,477c 

выборка] 

 
2.2.  
update timn_dogovor 
set Obsh_summa_po_dogovory= 
(select summa_gr+150000 
from timn_view 
where timn_view.nomer_dog=timn_dogovor.nomer_dog); 
 

 

Рисунок 2.6. 


background image

 

 

25 

 

 

 

Рисунок 2.7. 

 
3. Закрытые договора: 
 
select timn_dogovor.nomer_dog, timn_zakazchik.naimen 
from TIMN_DOGOVOR, TIMN_ZAKAZCHIK 
where  timn_dogovor.kod_zakazchika=  timn_zakazchik.kod_zakazchika  AND 

data_zakr is null; 

 
 

 

Рисунок 2.8. 

 
 
4. Действующие договора: 
 
select timn_dogovor.nomer_dog, timn_zakazchik.naimen 
from TIMN_DOGOVOR, TIMN_ZAKAZCHIK 
where  timn_dogovor.kod_zakazchika=  timn_zakazchik.kod_zakazchika  AND 

data_zakr is not null; 

 

 

Рисунок 2.8.