ВУЗ: Северный (Арктический) федеральный университет имени М.В. Ломоносова
Категория: Методичка
Дисциплина: Базы данных
Добавлен: 15.11.2018
Просмотров: 1688
Скачиваний: 5
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» соответствует сущности ИЛМ «Груз».
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;
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»
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;
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.