Rezerwacja w hotelu - jak rozwiązać ilość pokoi?

Odpowiedz Nowy wątek
2014-12-27 14:19
Czarna Kaczka
0

Witam, jako projekt na zaliczenie muszę stworzyć bazę zarządzającą rezerwacją pokoi w hotelu. Posiadam następujące tabele:

Pokoj (nr, piętro, id typu pokoju, status)
TypPokoju (id typu pokoju, rodzaj, cena za dobę, ilość osób, łazienka Y/N)
Pracownik (id pracownika, imię, nazwisko, pesel, stanowisko, poziom uprawnień)
Rezerwacja (id rezerwacji, nr pokoju id klienta, id pracownika, data rezerwacji, id płatności, data od, data do, status rezerwacji, id pakietu żywieniowego)
PakietŻywieniowy (id pakietu, nazwa, cena, ilość dań)
Płatność (id płatności, data dokonania, status, rodzaj, faktura Y/N)

Klient - tu pojawia się pierwszy problem, klientem (który pojmowany jest jako osoba rezerwująca, niekoniecznie korzystająca z tej rezerwacji) bowiem może być zarówno osoba prywatna jak i firma - wtedy potrzebuję różnych atrybutów, w zależności od tego kto rezerwuje.
Czy lepiej utworzyć osobno pola: imię, nazwisko, nazwa firmy, nr i seria dowodu osobistego, NIP, adres, miasto, kod pocztowy, kraj - i dopuszczać, by pierwszych pięć mogło być pustych? Nie wydaje mi się to jednak dobrym rozwiązaniem.
Innym pomysłem na jaki wpadłam może być stworzenie atrybutu nazwa (i tam można wpisać imię i nazwisko LUB nazwę firmy) a obok coś w stylu nr dowodu/ NIP (i tu będzie można podawać nr dowodu lub NIP, w zależności od tego czy rezerwuje osoba czy firma).
Nie wiem szczerze mówiąc do końca jak to rozwiązać, by było sensownie.

Mam jeszcze drugi, istotniejszy problem, dotyczący ilości rezerwowanych pokoi. Jedna rezerwacja może bowiem obejmować więcej niż jeden pokój, a póki co z mojej bazy wynika, że jedna rezerwacja = jeden pokój. Czy powinnam np. stworzyć pole ilość pokoi w tabeli rezerwacja i powiązać to pole z nową, osobną tabelą? Bo zakładam, że nie mogę po prostu podać kilku nr pokoi w tym jednym polu nr pokoju w tabeli rezerwacja, tak po przecinku? I to samo dotyczy pakietów żywieniowych - jedna rezerwacja może obejmować kilka różnych typów pakietu, więc pewnie muszę zrobić tabelę która przechowa mi ich ilość, nie mogę ich podać po przecinku bo wtedy nie napiszę skryptu, tak?
Przepraszam za te, zapewne, trywialne pytania, jednak moje doświadczenie z bazami jest bardzo nikłe. Będę wdzięczna za wszelkie podpowiedzi, gdyż na prawdę nie mam pomysłu jak to ogarnąć.

Pozostało 580 znaków

2014-12-27 15:25
Ldr
0
  1. Mozesz utworzyc dwa oddzielne formularze rejestracyjne oraz dwie tabele, dla osoby prywatnej i dla firmy oddzielnie. Dane firmy trzymasz w dedykowanej tabeli a z PK tej tabeli tworzysz FK w tabeli z osobami indywidualnymi dla rekordow, ktore sa przypisane do firmy. Przykladowo, bo to nie jedyne rozwiazanie.

  2. Lista pokoi jest ograniczona. Tworzysz słownik pokoi (np POKOJ_ID, POKOJ_NUMER). Zamowienie bedzie sie skladalo z dwoch tabel (master-detail), gdzi w tabeli ze szczegolami kazdy wiersz bedzie odpowiadal kolejnemu pokojowi.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0