CBZHotels Database System Project

1. Projektbeskrivelse og Krav

Velkommen til CBZHotels Database System projektet. Jeg er ansvarlig for at udvikle et centralt databasesystem for CBZHotels, en hotelkæde bestående af 5 hoteller.

Projektbeskrivelse: CBZHotels har brug for et centralt database system til at håndtere bookinger, gæster, værelser og personale. Systemet skal også kunne håndtere konferencefaciliteter og særlige arrangementer.

Hovedkrav:

  • Centraliseret styring af 5 hoteller
  • Håndtering af bookinger og gæster
  • Administration af værelser og personale
  • Integration af konferencefaciliteter
  • Håndtering af særlige arrangementer
2. Booking System
Booking System Sequence Diagram

Booking systemet følger en sekventiel proces med fire hovedaktører:

  • Gæst: Starter processen ved at anmode om en booking
  • Reception: Håndterer kommunikationen mellem gæst og system
  • System: Koordinerer booking processen og kommunikerer med databasen
  • Database: Lagrer og henter information om ledige værelser og bookinger

Processen forløber således:

  1. Gæsten anmoder om en booking
  2. Systemet tjekker tilgængelighed i databasen
  3. Databasen returnerer ledige værelser
  4. Receptionen præsenterer valgmuligheder for gæsten
  5. Gæsten bekræfter bookingen
  6. Systemet gemmer bookingen i databasen
  7. Gæsten modtager endelig bekræftelse

For at tjekke værelsestilgængelighed bruges følgende SQL-forespørgsel:

SELECT v.værelse_id, v.værelse_nummer, v.værelse_type
FROM Værelser v
LEFT JOIN Bookinger b ON v.værelse_id = b.værelse_id
  AND b.check_ud_dato > CURRENT_DATE
  AND b.check_ind_dato < DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY)
WHERE b.booking_id IS NULL
  AND v.hotel_id = 1;
3. Rabathåndtering

Vi har implementeret et automatisk rabatsystem ved hjælp af en SQL trigger. Her er triggerens funktionalitet:

Discount System Flow Diagram
CREATE TRIGGER beregn_rabat
BEFORE INSERT ON Bookinger
FOR EACH ROW
BEGIN
    SET NEW.total_pris = 
        CASE 
            WHEN NEW.fdm_medlem THEN NEW.basis_pris * 0.88
            WHEN NEW.online_booking THEN NEW.basis_pris * 0.90
            ELSE NEW.basis_pris
        END;
END;

Denne trigger aktiveres før en ny booking indsættes og beregner automatisk den samlede pris baseret på rabatter:

  • FDM-medlemmer modtager 12% rabat (pris * 0.88)
  • Online bookinger får 10% rabat (pris * 0.90)
  • Hvis ingen rabat er gældende, anvendes basis prisen