Database
 sql >> Baza danych >  >> RDS >> Database

Projektowanie modelu danych dla systemu rezerwacji pokoi hotelowych

Powszechnie wiadomo, że najlepszym sposobem na nauczenie się czegoś jest przećwiczenie tego w prawdziwym scenariuszu. Oczywiście to samo dotyczy modelowania baz danych. Dlatego w tym artykule postanowiłem nauczyć Cię tworzenia prostej struktury bazy danych na podręcznikowym przykładzie systemu rezerwacji pokoi hotelowych. Pokażę Ci, jak zacząć i przedstawię kilka pomysłów na rozszerzenie modelu.

Modelowanie bazy danych:odkrywaj, odkrywaj, odkrywaj

W tym artykule zaprojektujemy model danych dla systemu rezerwacji pokoi hotelowych. Szukamy modelu danych, w którym możemy przedstawić informacje o pokojach, gościach i rezerwacjach zarezerwowanych w naszym wyimaginowanym Hotelu VERTABELO*****. Wszystkie te informacje będą przechowywane w tabelach.

Modelowanie baz danych to cykliczny proces odkrywania. Najpierw identyfikujemy główne tabele i ich atrybuty. W naszym modelu główne stoły to:room , guest i reservation . Następnie kontynuujemy ulepszanie naszych tabel, odkrywając ich atrybuty lub kolumny. Na przykład room tabela ma atrybuty takie jak:room number , name i smoke flaga między innymi.

Reservation tabela ma atrybuty date_in , date_out , status (anulowane, potwierdzone) i made_by (online, in_person, telefon, mail), natomiast atrybuty tabeli guest są:first_name , last_name i member_since . Być może masz ochotę na reservation stół potrzebuje więcej atrybutów (takich jak rodzaj pokoju, liczba łóżek), omówimy ten punkt później, do tego czasu rozważ naszą reservation tabela niekompletna. Poniższy model danych utworzony w Vertabelo pokazuje główne tabele.




Typy danych:jakie są domeny dozwolonych wartości dla kolumny?

Zauważ, że każda kolumna ma typ danych (varchar, integer, date, boolean), aby wskazać, jakiego rodzaju wartości można przypisać do kolumny. Na przykład kolumna smoke na stole room jest wartość logiczna typ danych, co oznacza, że ​​dozwolone są tylko prawda lub fałsz.

Klucze podstawowe:numer ubezpieczenia społecznego każdego rekordu

Każda tabela powinna mieć kolumnę (lub więcej niż jedną) działającą jako identyfikator dla każdego rekordu w tabeli. Ta kolumna nazywa się kluczem podstawowym (PK), a najlepsze praktyki dotyczące projektowania baz danych sugerują, że każda tabela musi mieć klucz PK.

Jeśli spojrzymy na poprzedni model danych Vertabelo, zobaczymy, że każda tabela ma kolumnę o nazwie id ze wskaźnikiem PK po prawej stronie. Te kolumny id tworzą PK (w konwencji nazywamy id kolumna PK).

Ważną koncepcją, być może oczywistą dla wielu czytelników, jest to, że kolumna PK nie może mieć zduplikowanych wartości. Innymi słowy, każda kolumna PK ma unikalne ograniczenie, a każda próba utworzenia nowego rekordu ze zduplikowaną wartością zostanie odrzucona z błędem przez menedżera bazy danych.

Kontynuuj odkrywanie; Znajdź nowe obiekty bazy danych

Rezerwacja jest jednym z bardziej złożonych elementów do reprezentowania w tym modelu danych. Z jedną rezerwacją może być powiązanych wiele pokoi (np. „Chcę dokonać rezerwacji na jeden pokój dwuosobowy i osobny pokój z 3 łóżkami dla moich dzieci”). To wymaganie biznesowe dodaje 4 rzeczy do naszego modelu:

Nowa tabela: Musimy utworzyć nową tabelę o nazwie room_reserved , gdzie przechowujemy wszystkie pokoje należące do jednej rezerwacji.

Dodaj dwa odniesienia: Odwołanie jest bardzo ważnym elementem modelu danych. Odwołanie opisuje, w jaki sposób jedna tabela jest powiązana z inną tabelą. W naszym modelu każdy zarezerwowany pokój należy do jednej rezerwacji, dlatego będziemy używać odniesienia do modelu tego faktu. To odniesienie jest przedstawione graficznie jako linia łącząca obie tabele.

Co więcej, ponieważ każda rezerwacja należy do jednego gościa, musimy utworzyć nową referencję łączącą guest i reservation tabele.

Przenieś kolumnę: Ponieważ możemy mieć kilka pokoi należących do jednej rezerwacji, musimy zezwolić na anulowanie na pojedynczy pokój, po czym przesuwamy attribute stan z reservation do reserved_room tabela.

Zaktualizowany model danych jest przedstawiony na poniższym diagramie zaprojektowanym w Vertabelo:



Co się dzieje z tabelami połączonymi odnośnikiem?

Kiedy tworzymy odwołanie między dwiema tabelami, do jednej z tabel dodawana jest nowa kolumna. Ta właśnie dodana kolumna nazywa się kluczem obcym i działa jako wskaźnik do innej tabeli, umożliwiając połączenia między tabelami. Na przykład spójrz na następujące diagramy:

Rys. 1 Stoły reservation i guest przed i po dodaniu referencji

Kontynuuj odkrywanie; Idź po więcej

Jednym z punktów, który czeka na modelowanie, jest fakt, że pokoje mogą być używane przez pewien czas przez niektórych gości. Aby przedstawić ten fakt biznesowy, dodaliśmy 2 tabele:hosted_at i occupied_room .

Pamiętaj, że każda osoba, która zatrzymała się w hotelu, będzie miała wpis w hosted_at . Ten zapis będzie zawierał odniesienie do zajmowanego przez niego pokoju i gościa. Dlatego hosted_at ma podwójne odniesienie do guest i occupied_room .

Stół occupied_room będzie miał jeden rekord na każdy wynajmowany pokój, na tym rekordzie znajdziemy pola:check_in i check_out typu znacznik czasu wskazujący rozpoczęcie i zakończenie najmu. Typ danych znacznika czasu przechowuje punkt w czasie z dowolną precyzją. Każdy occupied_room rekord będzie również zawierał odniesienie do numeru wynajmowanego pokoju i pośrednio przez hosted_at dla gości, którzy mieszkali w tym pokoju.

Dodaliśmy również tabelę room_type do modelu danych; chodzi o to, aby pogrupować pokoje według kategorii lub typu pokoju. Na przykład „standardowe jedno podwójne łóżko”, „luksusowe 2 podwójne łóżka” mogą być opisami typów. Mamy tutaj również atrybut max_capacity.




Ćwiczenia: Projektowanie baz danych jest dyscypliną łatwą w podejściu, jednak potrzeba czasu, aby stać się ekspertem w danej dziedzinie. Jeśli robisz pierwsze kroki w projektowaniu bazy danych, spróbuj uzupełnić bieżący model danych, aby umożliwić:

  • Jeśli dwóch lub więcej gości dzieli pokój, zezwól na różne zameldowanie i wymeldowanie dla każdego gościa.
  • W niektórych przypadkach hotele mogą zmienić konfigurację pokoi (np. ze standardowego jednego podwójnego łóżka na luksusowe 2 podwójne łóżka). Dodaj do modelu danych elementy reprezentujące te zmiany konfiguracji, zachowując historię każdego pokoju.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co to są operatory SQL i jak działają?

  2. Czy wyszukiwanie RID jest szybsze niż wyszukiwanie klucza?

  3. Operator SQL EXISTS dla początkujących

  4. Jak zainstalować Microsoft SQL w systemie Linux

  5. Jak zamaskować Cassandrę za pomocą IRI FieldShield