Baza danych zarządzania hotelem


1

Potrzebuję pomocy przy projektowaniu mojego schematu.Jestem prawie nowy w tym i nie jestem pewien, czy moje relacje między tabelami ROOM , GUEST i RESERVATION poniżej są poprawne.

Mam również problemy z ustaleniem, co zrobić z możliwością ZMIANY POKOJU: Przykład:

Michael Keaton ma jedną rezerwację, w której wziął dwa pokoje.Za pierwszym razem nie podobał mu się pokój, więc hotel przeniósł go do innego pokoju, a drugi raz pojawił się problem z instalacją wodno-kanalizacyjną w tym samym pokoju, więc ponownie go przenieśli.Moja baza danych musi zapisywać informacje o każdej zmianie pokoju.

Oto diagram relacji między jednostkami:

ER diagram

1

Brzmi, jakbyś potrzebował tabeli historii dla zmian w pokoju, które powinny być najprawdopodobniej dokonane przez warstwę aplikacji.Wiem, że kuszące jest używanie wbudowanych wyzwalaczy, aby po prostu je logowały, ale prosta warstwa aplikacji powinna to załatwić.

Jeśli naprawdę się o to martwisz i masz opcję CDC, możesz z niej skorzystać, ale wybrałbym transakcję, która loguje bieżący rekord gdzie indziej, aktualizuje go i zatwierdza operację wycofania błędu, jeśli zawiedzie i pojawi się miły błąd aby użytkownik końcowy wykonał inny krok dla klienta w międzyczasie, podczas gdy ten błąd jest rozpatrywany.

Edytować: Aktualizacja na podstawie pytania.Aby to zrobić, możesz napisać procedurę przechowywaną, którą wywołujesz z aplikacji, która:

- rozpoczyna transakcję

- kopiuje bieżący numer hotelu i identyfikator użytkownika wraz ze znacznikiem czasu do procedury przechowywanej typu „getRoomChangeHistory”

- następnie uruchom procedurę przechowywaną typu „updateRoomChange”, aby zaktualizować nową wartość

-Finicjalnie zatwierdzić transakcję.Dodaj Dodaj obsługę błędów w przypadku awarii.Jeśli chcesz solidnego, kontrolowanego sposobu na zrobienie tego, to jest to.Jeśli chcesz łatwo, nie będzie to niezawodne.W tym celu po prostu zapisz go jako magazyn dokumentów gdzieś indziej, jeśli nie zależy ci na zgodności ACID?

Oto trochę więcej na temat SQL 2012 i wyżej, używając TRY CATCH z Books OnLine, aby to osiągnąć: https://msdn.microsoft.com/en-us/library/ms175976.aspx

  0

Cóż, przepraszam, że to mówię ... ponieważ jestem wdzięczny za twoją pomoc ... ale nie zrozumiałem ani słowa o tym, co powinienem zrobić ... Potrzebuję najprostszego sposobu na rozwiązanie tego ... 09 lis. 152015-11-09 20:24:06

  0

@ user2923389 zaktualizowana odpowiedź. 09 lis. 152015-11-09 21:41:07