Datasobota, 5 września 2026 Czas04:36:50
Projekt bazodanowy 👥 4 osoby 📅 5 tygodni

Grunwaldzka Movie — serwis filmowy

Katalog filmów z gatunkami, ocenami i recenzjami użytkowników oraz listą „do obejrzenia".

Technologie: WPF lub PHP + MySQL

⬇ Pobierz bazę startową (.sql.gz)

Uwaga przed importem: plik z bazą jest spakowany jako .gz. phpMyAdmin w XAMPP przyjmuje takie pliki bez rozpakowywania. Jeżeli po pobraniu nazwa wygląda np. bistro.sql_.gz i import nie przejdzie, zmień nazwę pliku na bistro.sql.gz, a potem wybierz go w zakładce Importuj.

Po co ten projekt

Zbudujecie mini-serwis filmowy w stylu popularnych katalogów: użytkownicy przeglądają filmy, wystawiają oceny i recenzje, tworzą własną listę „do obejrzenia". Projekt ćwiczy relacje wiele-do-wielu (film ma wiele gatunków, użytkownik ocenia wiele filmów) — jeden z trudniejszych tematów INF.03.

Co budujemy

  • katalog filmów (tytuł, rok, reżyser, opis),
  • przypisywanie filmom gatunków (film może mieć kilka),
  • użytkownicy wystawiają ocenę (1–10) i recenzję tekstową,
  • obliczanie średniej oceny filmu,
  • osobista lista „do obejrzenia" każdego użytkownika,
  • ranking najwyżej ocenianych filmów.

Struktura danych

Filmy >──< Gatunki   (wiele-do-wielu przez FilmGatunek)
Uzytkownicy 1 ──< Oceny >── 1 Filmy
Uzytkownicy >──< Filmy  (ListaDoObejrzenia)

Filmy(id, tytul, rok, rezyser, opis)
Gatunki(id, nazwa)
FilmGatunek(film_id →, gatunek_id →)
Uzytkownicy(id, login, email)
Oceny(id, film_id →, uzytkownik_id →, ocena, recenzja)
ListaDoObejrzenia(uzytkownik_id →, film_id →)

Kontekst z życia

Filmweb, IMDb, Netflix — wszystkie stoją na tym samym modelu: filmy, gatunki, oceny użytkowników. Budując ten projekt, robicie w małej skali dokładnie to, co te serwisy w wielkiej.

Podział obowiązków

RolaKonkretne zadania w tym projekcie
Lider / analitykustala zakres, rysuje diagram danych, zakłada tablicę w Trello, pilnuje terminów, pisze dokumentację (instrukcja użytkownika + opis bazy), przygotowuje i prowadzi prezentację, scala pracę zespołu (Git / wspólny dysk)
Projektant bazy danychskrypt movie.sql z relacją wiele-do-wielu (FilmGatunek), dane testowe (min. 15 filmów, 6 gatunków, 8 użytkowników, 20 ocen), zapytania: średnia ocena filmu, ranking, filmy danego gatunku
Programista interfejsu (UI)widoki: katalog filmów z okładkami/opisem, karta filmu z recenzjami, formularz oceny, lista „do obejrzenia"
Programista logiki / testerwystawianie ocen i recenzji, liczenie średniej, dodawanie/usuwanie z listy „do obejrzenia", walidacja (ocena 1–10, brak podwójnej oceny tego samego filmu), testy

Harmonogram

TydzieńKamień milowy
1Analiza i projekt: zakres, diagram danych, podział zadań, harmonogram
2Baza z relacją wiele-do-wielu i danymi testowymi działa
3Katalog i karta filmu pokazują dane z bazy
4Oceny, recenzje, średnia i lista „do obejrzenia" + testy
5Scalenie, poprawki, dokumentacja, prezentacja przed klasą

Kryteria oceny

Każdy uczeń dostaje ocenę indywidualną za swoją rolę (kryteria zero-jedynkowe) plus wspólny bonus zespołowy. Proporcja: 70% rola + 30% zespół.

Projektant bazy danych (0–10 pkt):

  • poprawne tabele z typami danych (1)
  • klucze główne wszędzie (1)
  • relacja wiele-do-wielu Filmy↔Gatunki przez tabelę łączącą (3)
  • dane testowe w wymaganej liczbie (1)
  • zapytanie liczące średnią ocenę filmu (2)
  • zapytanie z rankingiem najwyżej ocenianych (2)

Programista logiki / tester (0–10 pkt):

  • wystawienie oceny zapisuje się poprawnie (2)
  • średnia ocena przelicza się po nowej ocenie (2)
  • walidacja: ocena w zakresie 1–10 (2)
  • ten sam użytkownik nie ocenia filmu dwa razy (2)
  • lista „do obejrzenia" dodaje i usuwa filmy (2)

Analogiczne zestawy kryteriów obowiązują Lidera (dokumentacja, harmonogram, prezentacja, scalanie) oraz Programistę UI (kompletność widoków, czytelność, połączenie z bazą, walidacja formularzy).

Ocena zespołowa (0–10 pkt):

  • aplikacja uruchamia się i działa jako całość (3)
  • części zespołu są zintegrowane, nie luźne kawałki (3)
  • prezentacja jasno pokazuje działanie i podział pracy (2)
  • dokumentacja kompletna: instrukcja + opis bazy (2)

Typowe błędy w pracy zespołowej

  • brak wspólnego miejsca na kod → wersje się rozjeżdżają; ustalcie od razu Git albo jeden dysk,
  • „zrobimy wszystko na końcu" → kamienie milowe są po to, żeby tego uniknąć,
  • każdy pisze w swoim stylu → uzgodnijcie nazewnictwo tabel i zmiennych na starcie,
  • nikt nie testuje integracji → tester wchodzi już w 4. tygodniu, nie na końcu.

W tym projekcie szczególnie: próba wpisania kilku gatunków do jednej kolumny zamiast tabeli łączącej — to łamie zasady normalizacji i utrudnia zapytania.

Nawiązanie do egzaminu

Ten projekt to w praktyce rozbudowane zadanie z części praktycznej INF.03 (baza danych + aplikacja operująca na danych, z regułą biznesową). Rozdzielając role, każdy z Was ćwiczy inny fragment tego, co na egzaminie trzeba umieć samodzielnie — a przy okazji uczycie się pracy zespołowej, którą sprawdza się i na maturze, i w prawdziwej firmie.