Файл: МУ к курсовй работе по базам данных.pdf

Добавлен: 15.11.2018

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

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

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

 

 

21 

 

Kod_porta_ybut       INTEGER NOT NULL , 

 

kod_zakazchika       INTEGER NOT NULL , 

 

Kod_sud              INTEGER NOT NULL , 

 

Obsh_summa_po_dogovory NUMBER NULL , 

 

Kod_porta_prib       INTEGER NOT NULL); 

 

Таблица  «Timn_Dogovor»  соответствует  сущности  ИЛМ  «Договор  на 

перевозку груза». 
 

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

 

CREATE UNIQUE INDEX XPKДоговор_на_перевозку_груза ON Timn_Dogovor 
(Nomer_dog   ASC); 

 

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

 

ALTER TABLE Timn_Dogovor 
 

ADD CONSTRAINT  XPKДоговор_на_перевозку_груза PRIMARY KEY 

(Nomer_dog); 

 
 

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

 

ALTER TABLE Timn_Dogovor 
 

ADD (CONSTRAINT timn_4 FOREIGN KEY (kod_zakazchika) REFERENCES 

Timn_Zakazchik (kod_zakazchika)); 
 
 
ALTER TABLE Timn_Dogovor 
 

ADD (CONSTRAINT timn_7 FOREIGN KEY (Kod_sud) REFERENCES Timn_Sudno 

(Kod_sud)); 

 
 

ALTER TABLE Timn_Dogovor 
 

ADD (CONSTRAINT timn_9 FOREIGN KEY (Kod_porta_ybut) REFERENCES 

Timn_Port (Kod_porta)); 
 
 
ALTER TABLE Timn_Dogovor 
 

ADD (CONSTRAINT Timn_10 FOREIGN KEY (Kod_porta_prib) REFERENCES 

Timn_Port (Kod_porta)); 
 

 

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

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

CREATE TABLE Timn_Gruz 

naimen               VARCHAR2(40) NOT NULL , 

 

ed_izm               VARCHAR2(10) NOT NULL , 

 

kod_gr               INTEGER NOT NULL); 

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


background image

 

 

22 

 

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

 

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

 

 

23 

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

 

 

24 

 

 

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

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

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

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

 
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

 

 

25 

 

 

Рисунок 2.5. 

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

платы за перевозку: 

 
2.4.2.1 Создание представления на основе предыдущего запроса. 
 

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

 
2.4.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.