Strona główna:
- Geeks & Dragons database
Połączone strony:
- Wrażenia z realizacji projektu,
- Pliki projektu i konfiguracja,
- Struktura i mechanika bazy danych,
- Dokumentacja kodu źródłowego.
Projekt Geeks & Dragons database dotyczy kompleksowego systemu obsługi danych dla sklepu z grami nieelektronicznymi.
Tę stronę traktować można jako główną dokumentację projektu. Ze względu na obszerność niektórych wątków, pewne kwestie - m. in. strukturalne - będą opisane szczegółowo na podstronach, do których odnośniki znajdują się w odpowiednich miejscach na tej stronie.
Projekt został stworzony w ramach kursu Bazy Danych 2023 na Wydziale Matematyki Politechniki Wrocławskiej. Miał pokazać umiejętności projektowania wysokiej jakości baz oraz analizy znajdujących się w nich danych. Chodziło przy tym o to, aby osiągnąć wysoki poziom automatyzacji.
Oferowana funkcjonalność dotyczy generowania fikcyjnego stanu bazy danych w konkretnym momencie historii (z zachowaniem logiki relacji) oraz analizy tego stanu. Nie jest to pełny system obsługi, łącznie z wprowadzaniem na bieżąco produktów, klientów itp.
Baza posiada dane o
- pracownikach,
- asortymencie,
- odbytych turniejach, w tym zawodnikach i wynikach,
- terminarzu nadchodzących spotkań,
- informacjach finansowych,
- wypożyczeniach i sprzedaży.
Dobrze naśladują one rzeczywistość, ale znajdujemy równocześnie pewne uproszczenia. Jest to bowiem jedynie model, a nie prawdziwe dane.
Pełny projekt składa się zaś z następujących części:
- projekt i utworzenie schematu,
- skryptowe wypełnienie bazy,
- analiza danych,
- raport,
- dokumentacja.
Punkt (1) i (5) zawierają się w dokumentacji, czyli tak jak wspomniano - tym pliku oraz jego podstronach. Punkty (2, 3, 4) są automatycznie przeprowadzane przez zaimplementowaną bibliotekę i opisane dokumentacji. Dodatkowo, część punktu (1), polegająca na tworzeniu bazy kodem SQL, jest elementem funkcjonalności tej biblioteki.
Gotowy raport jest dostępny w repozytorium i może być wyświetlony przez odpowiednie użycie głównego skryptu. Można też wygenerować nowy.
Projekt dotyczył wielu płaszczyzn i integracji licznych technologii.
To co twórcy uważają, za najtrudniejsze w realizacji, znajduje się na podstronie o wrażeniach z realizacji projektu.
Lista plików wraz z opisem ich zawartości dostępna jest na podstronie o plikach projektu i konfiguracji. Są tam też instrukcje na temat ewentualnej konfiguracji związanej z połączeniem, sposobem generowania, albo szablonem raportu.
W osobnym dokumencie o strukturze i mechanice bazy danych przede wszystkim obejrzeć można schemat bazy, wraz z nazwami atrybutów, ich typami oraz oznaczeniami kluczy.
Dalej, opisane są tam metody konstrukcji tabel (razem z wyjaśnieniem rodzajów danych w poszczególnych kolumnach), założenia techniczne oraz lista zależności funkcyjnych. Wszystko w punktach - tabela po tabeli.
Na końcu znajdujemy też formalne wyjaśnienie, że struktura spełnia standard EKNF.
Poniżej przedstawiony jest w krokach sposób użycia poszczególnych części aplikacji. Kroki (1-3) są przygotowawcze i dość oczywiste. Praca z właściwym skryptem i jego opcjami opisana jest w punkcie (4).
Można zmienić serwer, na którym działać ma projekt, jeżeli obecnie jest inny od domyślnego. Instrukcje na ten temat należy odszukać na podstronie dotyczącej m.in. zaawansowanej konfiguracji i w przedstawiony tam sposób zmodyfikować plik ustawień połączenia.
Aby używać skryptów projektu, należy przede wszystkim zainstalować na urządzeniu Pythona 3.9. Używany będzie także terminal - dla systemu Windows korzystać należy z GitBash, instalowanego razem z systemem Git.
Co bardzo istotne, do wygenerowania raportu w formacie PDF potrzebny będzie program wkhtmltopdf.
Instrukcje instalacji dostępne są na podanych stronach internetowych.
Dodatkowo, należy upewnić się, iż ścieżka w pliku config/pdf.gener.json
rzeczywiście prowadzi do pliku wykonywalnego wkhtmltopdf. W przeciwnym razie (jeżeli mamy narzędzie zainstalowane na niestandardowej ścieżce), można ją zmienić w tymże pliku konfiguracyjnym.
Repozytorium można pobrać bezpośrednio przez wywołanie w terminalu Bash
git clone https://github.com/o-Mateo-o/geeks-and-dragons-db.git
cd geeks-and-dragons-db
Jeżeli cały projekt jest już na urządzeniu, możesz pominąć ten krok i otworzyć w folderze projektu terminal Bash.
Aby przygotować się do użycia, należy uruchomić wirtualne środowisko ze wskazaną wersją Pythona oraz zainstalować zależności. W prosty sposób robimy to specjalnym skryptem przygotowawczym:
source setup.sh
Jeżeli Python jest zainstalowany na niestandardowej ścieżce, można łatwo zmienić ścieżkę do niego w skrypcie przygotowawczym. Nie ma też problemu z wywołaniem po kolei wskazanych w skrypcie komend osobno w terminalu, bądź z zainstalowaniem zależności w jakikolwiek inny sposób.
Główną aplikację, wypełniającą losowo bazę danych i otwierającą świeży raport, uruchamiamy przez
./database-manager.py -fro
Można jednak chcieć wykonywać pojedyncze kroki, podając jako argumenty inne flagi, niż pełne -fro
.
-
Jeżeli chcemy tylko wygenerować dane i uzupełnić bazę, używamy flagi
-f
/--fill
. -
Jeżeli chcemy tylko dokonać analiz i wygenerować raport, służy do tego flaga
-r
/--report
. -
Dodatkowo, można po prostu automatycznie otworzyć przygotowany raport. Do tego korzystamy z flagi
-o
/--open
.
Kompleksowa pomoc dostępna jest także oczywiście po uruchomieniu.
./database-manager.py -h
UWAGA! Jeżeli wybierzemy opcje wymagające pracy z bazą danych, zostaniemy zapytani o hasło. Należy je wtedy podać. Ewentualne wskazówki na ten temat są opisane w pomocy (-h
).
Główne technologie różnych kategorii, używane przy realizacji projektu, wymienione są poniżej.
Projekt tworzyli członkowie grupy Jamniczki: