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: 2. Dział kadr: a) Funkcje: Taryfa ekonomiczna Taryfa klasa I Taryfa biznes Miejsce dla niepełnosprawnych Bilet studencki Bilet normalny Bilet dla emeryta Cena bagażu -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 Diagram znajduje się w dołączonym pliku ERD.png 3 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, idsamolot VARCHAR, idtrasa, data DATE, godzina TIME), Roz2 (idsamolot VARCHAR, idlotniskop ). Baza danych zawiera funkcje: SprawdzPoloczenie(DATE), SprawdzPolozenie(TIME, DATE), ObliczCene(REAL,,, ), 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 idlotnisko identyfikator lotniska SERIAL PK kraj nazwa kraju VARCHAR(45) miasto nazwa lotniska VARCHAR(60) Samoloty idsamolot identyfikator samolotu VARCHAR(7) PK iloscme ilość miejsc ekonomicznych DEFAULT 0 iloscmk ilość miejsc w klasie I DEFAULT 0 iloscmb iloscmn wspolcs ilość miejsc w biznes klasie ilość miejsc dla niepełnosprawnych współczynnik ceny dotyczący samolotu DEFAULT 0 DEFAULT 0 NUMERIC(3,2) DEFAULT 1 Trasy idtrasa identyfikator trasy SERIAL PK idlotniskoo idlotniskop identyfikator lotniska odlotu identyfikator lotniska przylotu czas czas lotu na trasie NUMERIC(3,0) czas > 0 cena cena trasy NUMERIC(7,2) cena> 0 FK Lotniska(idLotnisko) FK Lotniska(idLotnisko) idlotniskop<>idlotniskoo 7
Loty idlot identyfikator lotu SERIAL PK idsamolot identyfikator samolotu VARCHAR(7) FK Samoloty(idSamolot) idtrasa identyfikator trasy FK Trasy(idTrasa) data data lotu DATE godzina godzina lotu TIME wolneme wolnemk wolnemb wolne MN ilość wolnych miejsc ekonomicznych ilość wolnych miejsc w klasie I ilość wolnych miejsc w biznes klasie ilość wolnych miejsc dla niepełnosprawnych Ceny idcena identyfikator ceny SERIAL PK opis opis ceny VARCHAR wspolc współczynnik ceny NUMERIC(3,2) DEFAULT 1 wspolc> 0 Pasazerowie idpasazer identyfikator pasażera NUMERIC(6,0) PK nazwisko nazwisko VARCHAR(30) imiona imiona VARCHAR(40) adres adres VARCHAR telefon telefon VARCHAR(10) znizka zniżka CHAR DEFAULT 'N' znizka='e' OR 'S' OR 'N' 8
Stanowiska idstanowisko identyfikator stanowiska SERIAL PK nazwa nazwa stanowiska VARCHAR Funkcje idfunkcja identyfikator funkcji SERIAL PK idstanowisko identyfikator stanowiska FK Stanowiska(idStanowisko) nazwa nazwa funkcji VARCHAR Pracownicy idpracownik identyfikator pracownika idstanowisko identyfikator stanowiska FK Stanowiska(idStanowisko) nazwisko nazwisko VARCHAR(30) imiona imiona VARCHAR(40) pensja pensja NUMERIC PK Pracownicy_Loty idpracownik idlot identyfikator pracownika identyfikator lotu FKPracownicy(idPracownik) FK Loty(idLot) funkcja funkcja VARCHAR PK(idLot, idpracownik) 9
Pasazerowie_Loty idpasazer idlot idcena koszt identyfikator pasażera identyfikator lotu identyfikator ceny cena biletu za lot NUMERIC(6,0) NUMERIC(7,2) FK Pasazerowie(idPasazer) FK Loty(idLot) FK Ceny(idCeny) iloscbag ilość bagaży DEFAULT 0 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 danych 4 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 techniczna 5 5 Pozostała dokumentacja techniczna znajduje się w folderze Dokumentacja techniczna 12