Zadanie 1 – 09.2025

Zadanie: Projekt bazy danych – Wypożyczalnia samochodów

Opis

Twoim zadaniem jest zaprojektowanie i utworzenie bazy danych obsługującej prostą wypożyczalnię samochodów. Baza powinna umożliwiać rejestrowanie klientów, samochodów oraz rezerwacji, a także przechowywać informacje o płatnościach.

Pracę wykonaj w środowisku XAMPP / phpMyAdmin w systemie MySQL/MariaDB.


Etap 1. Utworzenie bazy danych

  1. Utwórz bazę danych o nazwie wypozyczalnia_samochodow.
  2. W bazie utwórz następujące tabele:
    • klienci – dane klientów (imię, nazwisko, e-mail, telefon, PESEL, data rejestracji).
    • samochody – dane pojazdów (marka, model, rok, nr rejestracyjny, VIN, segment, cena za dobę, kaucja, status).
    • rezerwacje – dane o wypożyczeniach (klient, samochód, daty od-do, cena dzienna, status, informacja o kaucji).
    • platnosci – informacje o płatnościach (rezerwacja, kwota, data, metoda, status).

Każda tabela powinna mieć klucz główny (PRIMARY KEY) oraz odpowiednie klucze obce (FOREIGN KEY).

Etap 2. Wprowadzenie przykładowych danych

Dodaj kilku klientów i kilka samochodów, np.:

  • Samochody: Toyota Corolla, Kia Sportage, Skoda Octavia.
  • Klienci: Anna Nowak, Piotr Kowalski.

Etap 3. Przygotowanie zapytań SQL

Napisz i wykonaj w bazie co najmniej 5 zapytań SQL, które ilustrują pracę systemu:

  1. Wyszukiwanie samochodów dostępnych w podanym przedziale dat (niezarezerwowane i nie wypożyczone).
  2. Wyświetlenie wszystkich aktywnych wypożyczeń danego klienta (po adresie e-mail).
  3. Obliczenie przychodu miesięcznego (na podstawie zaksięgowanych płatności).
  4. Lista najczęściej wypożyczanych modeli samochodów (na podstawie zwróconych rezerwacji).
  5. Rezerwacje przeterminowane – takie, które powinny być już zwrócone, ale mają status „wypożyczona”.


    CREATE TABLE rezerwacje (
  6.   id_rezerwacji       INT AUTO_INCREMENT PRIMARY KEY,
  7.   id_klienta          INT NOT NULL,
  8.   id_samochodu        INT NOT NULL,
  9.   data_od             DATE NOT NULL,
  10.   data_do             DATE NOT NULL,
  11.   status              ENUM(’zarezerwowana’,’wypożyczona’,’zwrócona’,’anulowana’)
  12.                       NOT NULL DEFAULT 'zarezerwowana’,
  13.   cena_dziennekopia   DECIMAL(10,2) NOT NULL,  /* kopia ceny z dnia rezerwacji */
  14.   czy_kaucja_pobrana  TINYINT(1) NOT NULL DEFAULT 0,
  15.   CONSTRAINT fk_rez_klient FOREIGN KEY (id_klienta)   REFERENCES klienci(id_klienta),
  16.   CONSTRAINT fk_rez_auto   FOREIGN KEY (id_samochodu) REFERENCES samochody(id_samochodu),
  17.   CHECK (data_do >= data_od)
  18. ) ENGINE=InnoDB;