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
- Utwórz bazę danych o nazwie wypozyczalnia_samochodow.
- 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:
- Wyszukiwanie samochodów dostępnych w podanym przedziale dat (niezarezerwowane i nie wypożyczone).
- Wyświetlenie wszystkich aktywnych wypożyczeń danego klienta (po adresie e-mail).
- Obliczenie przychodu miesięcznego (na podstawie zaksięgowanych płatności).
- Lista najczęściej wypożyczanych modeli samochodów (na podstawie zwróconych rezerwacji).
- Rezerwacje przeterminowane – takie, które powinny być już zwrócone, ale mają status „wypożyczona”.
CREATE TABLE rezerwacje ( - id_rezerwacji INT AUTO_INCREMENT PRIMARY KEY,
- id_klienta INT NOT NULL,
- id_samochodu INT NOT NULL,
- data_od DATE NOT NULL,
- data_do DATE NOT NULL,
- status ENUM(’zarezerwowana’,’wypożyczona’,’zwrócona’,’anulowana’)
- NOT NULL DEFAULT 'zarezerwowana’,
- cena_dziennekopia DECIMAL(10,2) NOT NULL, /* kopia ceny z dnia rezerwacji */
- czy_kaucja_pobrana TINYINT(1) NOT NULL DEFAULT 0,
- CONSTRAINT fk_rez_klient FOREIGN KEY (id_klienta) REFERENCES klienci(id_klienta),
- CONSTRAINT fk_rez_auto FOREIGN KEY (id_samochodu) REFERENCES samochody(id_samochodu),
- CHECK (data_do >= data_od)
- ) ENGINE=InnoDB;
