Aplikacja ma na celu uproszczenie zarządzania księgozbiorem, czytelnikami oraz procesami wypożyczeń w bibliotece. Oferuje narzędzia do organizacji danych, takich jak zarządzanie zasobami książek, rejestracja wypożyczeń i zwrotów oraz zapewnienie bezpieczeństwa danych poprzez zdefiniowanie poziomów dostępu użytkowników. System eliminuje błędy ręcznego zarządzania danymi, umożliwia szybkie wyszukiwanie informacji i usprawnia codzienną pracę personelu biblioteki.
- Zarządzanie zasobami (dodawanie, edytowanie, usuwanie książek, czytelników, pracowników, autorów).
- Definiowanie i zarządzanie poziomami dostępu do systemu.
- Generowanie raportów dotyczących książek, wypożyczeń oraz użytkowników.
- Ustawianie haseł oraz zarządzanie kontami pracowników.
- Obsługa wypożyczeń i zwrotów książek.
- Wprowadzanie nowych książek i autorów.
- Przeglądanie i filtrowanie danych (np. lista książek dostępnych w bibliotece, historia wypożyczeń czytelnika).
- Dane o czytelnikach są rejestrowane przez pracowników, ale sami czytelnicy nie wchodzą w bezpośrednią interakcję z aplikacją. System może zawierać funkcjonalność przeglądu historii wypożyczeń przez pracowników na życzenie czytelników.
- Dodawanie, edytowanie i usuwanie rekordów (książek, czytelników, pracowników, autorów).
- Zarządzanie poziomami dostępu w systemie.
- Generowanie raportów dotyczących aktywności w systemie.
- Obsługa wypożyczeń i zwrotów książek.
- Wprowadzanie nowych książek i autorów.
- Przeglądanie danych z możliwością filtrowania według różnych kryteriów (np. kategoria książek, autor).
Wyodrębniono następujące encje:
-
users (Użytkownik):
- ID (klucz podstawowy)
- Imię
- Nazwisko
- Hasło
- Rola (odniesienie do tabeli Role)
-
books (Książka):
- ID (klucz podstawowy)
- ISBN
- Tytuł
- Liczba egzemplarzy
- Kategoria (odniesienie do tabeli Category)
- Autor (odniesienie do tabeli Author)
-
loans (Wypożyczenie):
- ID (klucz podstawowy)
- ID użytkownika (klucz obcy do User.ID)
- ID książki (klucz obcy do Book.ID)
- Data wypożyczenia
- Data zwrotu
- Status (np. "wypożyczona", "zwrócona")
-
roles (Rola użytkownika):
- ID (klucz podstawowy)
- Nazwa roli (np. Administrator, Pracownik)
-
authors (Autor):
- ID (klucz podstawowy)
- Imię
- Nazwisko
-
categories (Kategoria książki):
- ID (klucz podstawowy)
- Nazwa kategorii
Baza danych została znormalizowana do 3NF:
- 1NF: Wszystkie atrybuty zawierają wyłącznie atomowe wartości.
- 2NF: Wszystkie dane są zależne od całego klucza podstawowego (np. informacje o autorze są trzymane w osobnej tabeli Author).
- 3NF: Usunięto zależności przechodnie (np. nazwa autora nie jest przechowywana w tabeli Book, lecz jest odczytywana z tabeli Author).
Nie przechowujemy danych redundantnych. W przypadku ewentualnych optymalizacji (np. cache'owanie wyników dla szybszego dostępu), takie zmiany zostaną opisane i uzasadnione w przyszłości.
- users: (email), (ID).
- books: (ISBN), (ID).
- ID w każdej tabeli.
- W tabeli loans:
user_idodnosi się dousers.ID.book_idodnosi się dobooks.ID.
- W tabeli books:
author_idodnosi się doauthors.ID.category_idodnosi się docategories.ID.
- W tabeli users:
role_idodnosi się do `roles.ID
-
Administratorzy:
- Pełny dostęp do wszystkich tabel (możliwość edycji, usuwania, dodawania danych).
- Dostęp do logów systemu oraz generowania raportów.
-
Pracownicy:
- Dostęp do tabel Loan, Book, User z ograniczonymi prawami edycji (np. brak możliwości usuwania użytkowników).
- Brak dostępu do zarządzania poziomami dostępu innych użytkowników.
- Automatyczne dodawanie nowej kategorii w tabeli Category, jeśli kategoria podana przy dodawaniu książki nie istnieje.
- Generowanie raportów dotyczących wypożyczeń (np. lista najbardziej popularnych książek).
- Wyliczanie liczby dostępnych egzemplarzy książki.
- Przeszukiwanie danych z uwzględnieniem filtrowania (np. według autora lub kategorii).
- Aktualizacja statusu książki w tabeli Book po zwrocie (zmiana statusu na "dostępna").
- Blokada usunięcia książki, jeśli jest aktualnie wypożyczona.
