System rezerwacji samochodów jest bardzo popularnym pytaniem w Wywiadzie dla programistów. Zaprojektowałem następującą strukturę ER/strukturę OOP gdy poproszono mnie to:Wywiad projektowy - System rezerwacji samochodu
klasa samochodów/tabela ma samochodów ID # wpisz (Compact, Standard itp), marki, modelu Klient ma klienta ID # itp Rezerwacja jest tabelą asocjacyjną przechowującą ID samochodu, numer ID klienta i datę, dla której samochód jest zarezerwowany. Dla uproszczenia możemy założyć, że samochód można zarezerwować tylko w ciągu kilku dni.
Oto najtrudniejsza część, w której zbankrutowałem - Co się dzieje, gdy klient 1 zastrzega kompaktowy samochód z Id Car 3 w dniu 27 lipca. Co się stanie, jeśli samochód 3 zostanie zsumowany 24 lipca. Inne kompaktowe samochody są dostępne, jednak między 24 i 27 lipca wszyscy zostali zabrani. Więc kiedy Klient 1 przybędzie 27 lipca, ostatecznie nie ma samochodu.
Usterka, która moim zdaniem jest przeszkodą w łączeniu samochodów i klientów w tabeli zastrzeżeń. Czy istnieje lepszy sposób modelować ten związek, a także regularne przypadki użycia takich znaleźć dostępną samochodu do określonej daty, zarezerwować go do tej daty itp
Następnie pojawia się pytanie - w którym momencie chcemy sprawdzić, czy samochód działa? Nocny skrypt, który uruchamia i zastępuje wszystkie sumowane/uszkodzone samochody innymi równoważnymi czynnymi? –
Zdecydowałeś się użyć modelu relacji podmiotu. "Samochód" i "Klient" to zdecydowanie byty. "Rezerwacja" to zdecydowanie relacja między "Samochodem" a "Klientem". To, czy "Samochód" jest sumowany/uszkodzony, jest z pewnością "własnością" podmiotu "Samochód". Ten projekt jest zgodny z zasadami modelu relacji podmiot i powinien wytrzymać różne przypadki użycia, które są w nim rzucane. W tym twoje ostatnie pytanie. –