Skip to content

A sample database with a random data model and automatic reporting. (PL doc)

License

Notifications You must be signed in to change notification settings

o-Mateo-o/geeks-and-dragons-db

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Version License

Geeks & Dragons database

Spis treści

Strona główna:

Połączone strony:

Wstęp

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.

Opis projektu

Cel

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.

Elementy

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:

  1. projekt i utworzenie schematu,
  2. skryptowe wypełnienie bazy,
  3. analiza danych,
  4. raport,
  5. 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.

Wyzwania

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.

Struktura 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.

Szczegóły dotyczące bazy

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.

Sposób użycia

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.

1. Instalacja głównych narzędzi

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.

PythonVersion GitBash wkhtmltopdf

2. Pobranie repozytorium

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.

3. Przygotowanie środowiska

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.

4. Uruchomienie głównej aplikacji

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).

Technologie

Główne technologie różnych kategorii, używane przy realizacji projektu, wymienione są poniżej.

Podstawowe technologie

Python MariaDB Shell Script

Generowanie i analiza danych

MySQL Pandas NumPy SciPy Matplotlib

Generowanie raportów

Jinja HTML5 CSS3 PDFKit

Dokumentacja

Markdown

Współpraca i przechowywanie kodu

Git GitHub

Autorzy

Projekt tworzyli członkowie grupy Jamniczki:

About

A sample database with a random data model and automatic reporting. (PL doc)

Topics

Resources

License

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •