Natalia Kolasa Dokumentacja projektu wykonywanego w ramach

Transkrypt

Natalia Kolasa Dokumentacja projektu wykonywanego w ramach
Natalia Kolasa
Dokumentacja projektu wykonywanego w ramach zajęć
BAZY DANYCH I
I. Koncepcje, założenia
1. Temat projektu
Tematem projektu jest stworzenie aplikacji bazodanowej dla pracowników linii lotniczej
z różnych działów:
- dział sprzedaży (sprzedaż biletów, ustalanie zniżek i cen),
-dział kadr (zatrudnianie pracowników),
-dział techniczny (zarządzanie samolotami),
-dział zarządzania (zarządzanie planem lotów).
2. Wymagania użytkownika
Funkcjonalności dotyczące każdego z działów:
1. Dział sprzedaży:
a) Sprzedaż biletów:
-możliwość wyszukania trasy podróży w zależności od podanego miejsca przylotu i odlotu
(można podać miejsce przylotu, miejsce odlotu lub oba),
-możliwość sprawdzenia terminu lotu wybranej trasy w zależności od podanej daty i godziny
(godzina jest opcjonalna), w przypadku podania godziny mają się wyświetlać loty odbywające się
także o godzinę wcześniej i później, np. przy podaniu godziny 17:20 wyświetlą sie wszystkie loty
pomiędzy godziną 16:00 a 18:00,
-możliwość sprzedania biletu na wybrany lot,
-bilet można sprzedać tylko klientowi znajdującemu się w bazie (możliwość wyszukania klienta
w zależności od podanego nazwiska lub dodania nowego, a także możliwość usunięcia istniejącego
klienta (jeśli nie ma żadnych lotów z nim związanych)),
-klient powinien mieć przypisaną informację o zniżce (bilet studencki, bilet normalny, bilet
dla emeryta),
-możliwość wybrania ilości bagażu z zakresu 0-3 (0 domyślnie), rodzaju miejsca (taryfa ekonomiczna,
taryfa klasa I, taryfa biznesowa, miejsce dla niepełnosprawnych)
-możliwość wyświetlenia ceny biletu (cena zależy od trasy (cena wyjściowa), samolotu, rodzaju
miejsca ora zniżki klienta (współczynniki) oraz ilości bagażu i ceny bagażu),
-możliwość wyświetlenia cennika,
-dane klienta to nazwisko, imiona, adres i telefon oraz numer identyfikacyjny (podawany przez klienta
ciąg cyfr - maksymalnie 6 cyfr) oraz zniżka (domyślnie bilet normalny).
b) Ceny:
-możliwość wyświetlenia cennika i aktualizacji wybranej ceny,
1
-cennik:
•
•
•
•
•
•
•
•
Taryfa ekonomiczna
Taryfa klasa I
Taryfa biznes
Miejsce dla niepełnosprawnych
Bilet studencki
Bilet normalny
Bilet dla emeryta
Cena bagażu
2. Dział kadr:
a) Funkcje:
-możliwość wyszykania wszystkich funkcji,
-możliwość wyszukania funkcji, dotyczących podanego stanowiska,
-możliwość usunięcia wybranej funkcji.
b) Stanowiska:
-możliwość wyszukania wszystkich stanowisk,
- możliwość dodania funkcji do wybranego stanowiska,
- możliwość usunięcia wybranego stanowiska,
-możliwość dodania stanowiska poprzez podanie jego nazwy,
-brak możliwości usunięcia stanowiska związanego z jakimś pracownikiem lub istniejącymi
funkcjami.
c) Pracownicy:
-możliwość wyszukania wszystkich pracowników,
-możliwość wyszukania pracownika po nazwisku,
-możliwość usunięcia wybranego pracownika,
-możliwość dodania pracownika,
-brak możliwości usunięcia pracownika, który bierze udział w jakimś locie.
3. Dział techniczny:
a) Samoloty:
-możliwość dodania samolotu z numerem identyfikacyjnym (ciąg znaków nie dłuższy niż 7), ilości
miejsc dla każdego z czterech rodzajów oraz współczynnika ceny (domyślnie 1), większego od 0
i mniejszego od 10,
-możliwość usunięcia samolotu, jeśli nie jest wykorzystywany,
-możliwość wyszukania samolotu o określonym numerze identyfikacyjnym,
-możliwość wyświetlenia wszystkich samolotów.
4. Dział zarządzania:
a) Lotniska:
-możliwość dodania lotniska o podanej nazwie i kraju, w jakim się znajduje,
- możliwość wyszukania lotniska po nazwie lotniska lub kraju,
-możliwość usunięcia wybranego lotniska, jeśli nie odbywają się tam żadne loty,
2
-możliwość zaktualizowania wybranego lotniska.
b) Trasy:
-możliwość dodania trasy poprzez wybranie miejsca odlotu oraz przylotu i podanie lotu oraz ceny,
-możliwość wyszukania trasy o podanym miejscu odlotu lub o podanym miejscu przylotu lub obu,
-możliwość usunięcia wybranej trasy, jeśli nie ma lotów z nią związanych,
-możliwość aktualizowania wybranej trasy,
-możliwość dodania lotu do wybranej trasy wraz z dodaniem pracowników, powiązanych z lotem i ich
funkcji oraz wybraniem dostępnego na lotnisku (z którego ma odbyć się lot) samolotu
-dostępny samolot to taki, który jeszcze nigdzie nie latał, bądź taki, którego ostatni lot odbył się na
wybrane lotnisko.
3. Funkcje
Baza danych ma za zadanie przechowywać informacje dotyczące linii lotniczej. Powinny się
w niej znaleźć tabele dotyczące lotów, pasażerów i pracowników. Podstawowymi funkcjami,
realizowanymi w bazie danych będą:
-dodawanie, usuwanie samolotu, wyszukanie go po numerze identyfikacyjnym, wyszukanie
wszystkich samolotów,
-dodawanie, usuwanie, lotniska, wyszukanie go po nazwie lotniska lub nazwie kraju, zaktualizowanie
danych lotniska,
-dodawanie, usuwanie trasy, wyszukanie jej w zależności od miejsca odlotu, przylotu lub obu,
zaktualizowanie trasy,
-przechowywanie danych określonych cen oraz możliwość aktualizacji ich wartości i ich wyszukania,
-dodawanie lotu, wyszukanie go po dacie lub dacie i godzinie,
-dodawanie do lotu pracowników, pełniących określone dla stanowiska funkcje,
-dodawanie, usuwanie klienta, wyszukanie go po nazwisku,
-łączenie pasażera z wybranym lotem, miejscem i ilością bagażu,
-sprawdzanie czy są wolne miejsca na wybrany lot oraz zmniejszanie ilości wolnych miejsc
w przypadku połączenia pasażera z lotem,
-obliczanie ceny lotu w zależności od trasy, samolotu, miejsca w samolocie, zniżki, ceny bagażu
i ilości bagażu,
-uniemożliwienie usuwania lotnisk związanych z trasą, tras i samolotów związanych z lotem, lotów
i cen związanych z pasażerami,
-dodawanie, usuwanie funkcji, wyszukiwanie jej po nazwie stanowiska, z nią związanego, wyszukanie
wszystkich funkcji, uszeregowanych względem stanowiska,
-dodawanie, usuwanie stanowiska, wyświetlanie wszystkich stanowisk,
-dodawanie, usuwanie pracownika, wyszukanie go po nazwisku, wyszukanie wszystkich pracowników
uszeregowanych względem stanowiska,
-uniemożliwienie usuwania stanowisk związanych z pasażerem lub funkcją oraz pracowników
związanych z lotem,
-sprawdzanie z użyciem widoku jakie samoloty są dostępne na lotnisku w trakcie wybierania lotu
podanego dnia i o podanej godzinie.
3
II. Diagramy
1. Diagram przepływu danych (DFD)
2. Encje oraz ich atrybuty
1
1
Schemat znajduje się w dołączonym pliku Encje i atrybuty.png
4
3. Diagram relacji pomiędzy encjami (ERD)
2
III. Logika
1. Tabele, klucze i indeksy 3
Baza danych zawiera encje:
-Lotniska (opisuje lotnisko, jego nazwę i kraj w jakim się znajduje),
-Samoloty (opisuje samolot, jego numer identyfikacyjny, ilość wolnych miejsc oraz współczynnik
ceny),
-Trasy (opisuje między jakimi lotniskami* odbywa się trasa, jej czas oraz cenę),
* dwie relacje 1:n z tabela Lotniska - FK(idLotniskoO), FK(idLotnikoP)
-Loty (opisuje na jakiej leci trasie* , jaki samolot** został wykorzystany, kiedy i o jakiej godzinie się
odbywa oraz ilość wolnych miejsc każdego z czterech typów),
* relacja 1:n z tabelą Trasy - FK(idTrasa)
** relacja 1:n z tabelą Samoloty - FK(idSamolot)
-Ceny (opisuje ceny z cennika),
-Pasazerowie (opisuje pasażera, jego numer identyfikacyjny, nazwisko, imiona, adres, telefon oraz
jedną z trzech możliwych zniżek),
-Stanowiska (opisuje stanowiska na jakich mogą pracować pracownicy),
-Funkcje (opisuje funkcje, jakie może pełnić pracownik z danego stanowiska*),
* relacja 1:n z tabelą Stanowiska - FK(idStanowisko)
-Pracownicy(opisuje pracownika, jego nazwisko, imiona i pensję oraz stanowisko* na jakim pracuje),
* relacja 1:n z tabelą Stanowiska - FK(idStanowisko)
2
3
Diagram znajduje się w dołączonym pliku ERD.png
Projekt w języku SQL wraz z opisami znajduje się w dołączonym pliku Projekt bazy.sql
5
-Pracownicy_Loty (encja łącząca tabelę Pracownicy i Loty, które znajdują się w relacji n:m, opisuje
pracowników dotyczących danego lotu, spełniających określoną funkcję)
-Pasazerowie_Loty (encja łącząca tabelę Pasazerowie i Loty, które znajdują się w relacji n:m, opisuje
pasażerów lecących danym lotem, cenę* miejsca, ilość bagażu oraz koszt biletu)
* relacja 1:n z tabelą Ceny - FK(idCena)
Baza danych zawiera typy:
Roz(idLot INTEGER, idSamolot VARCHAR, idTrasa INTEGER, data DATE, godzina TIME),
Roz2 (idSamolot VARCHAR, idLotniskoP INTEGER).
Baza danych zawiera funkcje:
SprawdzPoloczenie(DATE),
SprawdzPolozenie(TIME, DATE),
ObliczCene(REAL, INTEGER, INTEGER, INTEGER),
Baza danych zawiera wyzwalacze:
- SprLotnisko (BEFORE DELETE ON Lotniska),
-SprSamolot (BEFORE DELETE ON Samoloty),
-SprTrasa (BEFORE DELETE ON Trasy),
-SprPodwojnaTrasa (BEFORE INSERT OR UPDATE ON Trasy),
-SprCene (BEFORE DELETE ON Ceny),
-SprPazaser (BEFORE DELETE ON Pasazerowie),
-SprLot (BEFORE DELETE ON Loty),
- BrakWolnychMiejsc (BEFORE INSERT ON Pasazerowie_Loty),
-SprStanowisko (BEFORE DELETE ON Stanowiska),
-SprPracownik (BEFORE DELETE ON Pracownicy),
-SprPracownikLot (BEFORE INSERT ON Pracownicy_Loty).
Baza danych zawiera indeksy:
-Funkcje_FKIndex1,
- Pracownicy_FKIndex1,
- Trasy_FKIndex1,
- Trasy_FKIndex2,
- Loty_FKIndex1,
- Loty_FKIndex2,
- Pracownicy_Loty_FKIndex1,
- Pracownicy_Loty_FKIndex2,
- Pasazerowie_Loty_FKIndex1,
- Pasazerowie_Loty_FKIndex2,
- Pasazerowie_Loty_FKIndex3.
Baza danych zawiera widoki:
- VIEW RozSamol AS SELECT * FROM SprawdzPoloczenie(DATE).
6
2. Słowniki
Lotniska
Nazwa atrybutu
Opis atrybutu
Format atrybutu
Ograniczenia
idLotnisko
identyfikator lotniska
SERIAL
PK
kraj
nazwa kraju
VARCHAR(45)
NOT NULL
miasto
nazwa lotniska
VARCHAR(60)
NOT NULL
Samoloty
Nazwa atrybutu
Opis atrybutu
Format atrybutu
Ograniczenia
idSamolot
identyfikator samolotu
VARCHAR(7)
PK
iloscME
ilość miejsc
ekonomicznych
INTEGER
DEFAULT 0
NOT NULL
iloscMK
ilość miejsc w klasie I
INTEGER
DEFAULT 0
NOT NULL
iloscMB
ilość miejsc w biznes
klasie
INTEGER
DEFAULT 0
NOT NULL
iloscMN
ilość miejsc dla
niepełnosprawnych
INTEGER
DEFAULT 0
NOT NULL
wspolCS
współczynnik ceny
dotyczący samolotu
NUMERIC(3,2)
DEFAULT 1
NOT NULL
Trasy
Nazwa atrybutu
Opis atrybutu
Format atrybutu
Ograniczenia
idTrasa
identyfikator trasy
SERIAL
PK
idLotniskoO
identyfikator lotniska
odlotu
INTEGER
NOT NULL
FK Lotniska(idLotnisko)
idLotniskoP
identyfikator lotniska
przylotu
INTEGER
NOT NULL
FK Lotniska(idLotnisko)
idLotniskoP<>idLotniskoO
czas
czas lotu na trasie
NUMERIC(3,0)
NOT NULL
czas > 0
cena
cena trasy
NUMERIC(7,2)
NOT NULL
cena> 0
7
Loty
Nazwa atrybutu
Opis atrybutu
Format atrybutu
Ograniczenia
idLot
identyfikator lotu
SERIAL
PK
idSamolot
identyfikator samolotu
VARCHAR(7)
NOT NULL
FK Samoloty(idSamolot)
idTrasa
identyfikator trasy
INTEGER
NOT NULL
FK Trasy(idTrasa)
data
data lotu
DATE
NOT NULL
godzina
godzina lotu
TIME
NOT NULL
wolneME
ilość wolnych miejsc
ekonomicznych
INTEGER
NOT NULL
wolneMK
ilość wolnych miejsc w
klasie I
INTEGER
NOT NULL
wolneMB
ilość wolnych miejsc w
biznes klasie
INTEGER
NOT NULL
wolne MN
ilość wolnych miejsc
dla niepełnosprawnych
INTEGER
NOT NULL
Ceny
Nazwa atrybutu
Opis atrybutu
Format atrybutu
Ograniczenia
idCena
identyfikator ceny
SERIAL
PK
opis
opis ceny
VARCHAR
NOT NULL
wspolC
współczynnik ceny
NUMERIC(3,2)
DEFAULT 1
NOT NULL
wspolC> 0
Pasazerowie
Nazwa atrybutu
Opis atrybutu
Format atrybutu
Ograniczenia
idPasazer
identyfikator pasażera
NUMERIC(6,0)
PK
nazwisko
nazwisko
VARCHAR(30)
NOT NULL
imiona
imiona
VARCHAR(40)
NOT NULL
adres
adres
VARCHAR
NOT NULL
telefon
telefon
VARCHAR(10)
NOT NULL
znizka
zniżka
CHAR
DEFAULT 'N'
NOT NULL
znizka='E' OR 'S' OR 'N'
8
Stanowiska
Nazwa atrybutu
Opis atrybutu
Format atrybutu
Ograniczenia
idStanowisko
identyfikator stanowiska
SERIAL
PK
nazwa
nazwa stanowiska
VARCHAR
NOT NULL
Funkcje
Nazwa atrybutu
Opis atrybutu
Format atrybutu
Ograniczenia
idFunkcja
identyfikator funkcji
SERIAL
PK
idStanowisko
identyfikator stanowiska
INTEGER
NOT NULL
FK Stanowiska(idStanowisko)
nazwa
nazwa funkcji
VARCHAR
NOT NULL
Pracownicy
Nazwa atrybutu
Opis atrybutu
Format atrybutu
Ograniczenia
idPracownik
identyfikator
pracownika
INTEGER
PK
idStanowisko
identyfikator stanowiska
INTEGER
NOT NULL
FK Stanowiska(idStanowisko)
nazwisko
nazwisko
VARCHAR(30)
NOT NULL
imiona
imiona
VARCHAR(40)
NOT NULL
pensja
pensja
NUMERIC
NOT NULL
Pracownicy_Loty
Nazwa atrybutu
Opis atrybutu Format atrybutu
Ograniczenia
idPracownik
identyfikator
pracownika
INTEGER
NOT NULL
FKPracownicy(idPracownik)
idLot
identyfikator
lotu
INTEGER
NOT NULL
FK Loty(idLot)
funkcja
funkcja
VARCHAR
NOT NULL
PK(idLot,
idPracownik)
9
Pasazerowie_Loty
Nazwa atrybutu
Opis atrybutu
Format atrybutu
Ograniczenia
idPasazer
identyfikator
pasażera
NUMERIC(6,0)
NOT NULL
FK Pasazerowie(idPasazer)
idLot
identyfikator
lotu
INTEGER
NOT NULL
FK Loty(idLot)
idCena
identyfikator
ceny
INTEGER
NOT NULL
FK Ceny(idCeny)
koszt
cena biletu za
lot
NUMERIC(7,2)
NOT NULL
iloscBag
ilość bagaży
INTEGER
DEFAULT 0
NOT NULL
PK(idLot,
idPasazer)
3. Zależności funkcyjne i normalizacja tabel
Pierwsza postać normalna:
Baza znajduje się w pierwszej postaci normalnej, ponieważ każda składowa krotki jest wartością
atomową - wszystkie atrybuty w tabelach są niepodzielne.
Druga postać normalne:
Baza znajduje się w drugiej postaci normalnej, ponieważ spełnia warunek pierwszej postaci normalnej
oraz każda kolumna zależy funkcyjnie od całego klucza głównego.
Trzecia postać normalna:
Baza znajduje się w trzeciej postaci normalnej, ponieważ spełnia warunek drugiej postaci normalnej
oraz każda kolumna zależy funkcyjnie wyłącznie od klucza głównego.
4. Operacje na danych4
IV. Funkcjonalności
1. Interfejsy do prezentacji, edycji i obsługi danych
Przykład interfejsu do edycji i obsługi danych:
4
Kwerendy znajdują się w dołączonym pliku Kwerendy.sql
10
Przykład interfejsu do prezentacji danych:
2. Wizualizacja danych
Raporty generowane przez bazę danych do plików tekstowych o nazwach Trasy.txt oraz Zarobki.txt:
-trasy wraz z lotniskami pomiędzy jakimi się odbywają,
-maksymalne zarobki pracowników z każdego stanowiska,
-minimalne zarobki pracowników z każdego stanowiska,
-stanowiska, gdzie minimalna pensja jest większa niż 3000 zł.
3. Panel sterowania aplikacji
Panel do sterowania aplikacji z zakładkami do każdego z działów i listami rozwijanymi:
11
V. Pozostała dokumentacja
1. Wprowadzanie danych
Dane są wprowadzanie ręcznie poprzez aplikację.
2. Instrukcja obsługi aplikacji
Aplikację trzeba uruchomić poprzez wpisanie w konsoli polecenia:
java -jar Aplikacja.jar
Po uruchomieni aplikacji otworzy się okienko z menu w postaci listy. Każdy z działów stanowi
oddzielną zakładkę. W każdym dziale możliwe jest wybranie z listy rozwijanej interesującego nas
panelu, gdzie będą prezentowane dane, oraz gdzie będą znajdowały się przyciski otwierające nowe
okna, umożliwiające wprowadzanie, aktualizowanie lub usuwanie danych.
3. Dokumentacja techniczna5
5
Pozostała dokumentacja techniczna znajduje się w folderze Dokumentacja techniczna
12