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