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