baza HOTELS cz.2 tabela rezerwacje „reservations” [SQL SERVER]

baza HOTELS cz.2 tabela rezerwacje "reservations"

Witam w drugiej części cyklu, w której przejdziemy do utworzenia tabeli rezerwacje "reservations". Jak sama nazwa wskazuje będziemy tam "trzymać" rezerwacje naszych klientów.

Zastanówmy się czego potrzebujemy do opisania rezerwacji. Na pewno będziemy potrzebowali takich pól jak:

  • na pewno nasza rezerwacja będzie musiała mieć unikalny numer rezerwacji po której będziemy ja później wyszukiwali, czyli – reservation_id
  • tą rezerwację złożył jakiś konkretny klient, czyli – reservation_client_id (FK)
    Tutaj od razu wyjaśnienie. W tabeli reservations nie będziemy przechowywali danych klientów, bo te dane będziemy przechowywali w kolejnej tabeli clients, którą stworzymy później. W obecnej tabeli bęziemy tylko przechowywali identyfikator klienta z tabeli clients. Analogicznie jak przy tabelach hotels -> rooms tutaj także pole reservation_client_id będzie kluczem obcym.
  • każda rezerwacje musi mieć jakąś datę początkową, czyli – reservation_starting_date
  • i datę końcową – reservation_final_date
  • musimy także wiedzieć do którego pokoju odnosi się rezerwacja, czyli – reservation_room_id (FK)
    No i natrafiamy na pierwszy poważny dylemat. Jeżeli jesteśmy pewni, że do jednej rezerwacji będzie mógł być "przypięty" tylko jeden pokój to taka konstrukcja jest jak najbardzej poprawne. Ale jeżeli dopuszczamy sytuację, że w ramach jednej rezerwacji możemy zamówić więcej niż jeden pokój to musimy to rozwiązać inaczej. W naszej bazie przyjmiemy założenie "jedna rezerwacja, jeden pokój". Dla wyjaśnienia jeżeli poszlibyśmy drugą ścieżką czyli "jedna rezerwacja, wiele pokoi" to musielibyśmy utworzyć dodatkową tabelę pośrednią i zapisywać w niej (w osobnych rekordach) numer rezerwacji (tab. reservations -> reservation_id) i numer pokoju (tab. rooms -> room_id). Wtedy też w tabeli reservations nie potrzebujemy pola reservations_room_id.
  • w dzisiejszych czasach prawie każdy na wakacje jeździ autem i oczekuje, że gdzieś zaparkuje. Dołożymy więc pole przechowujące identyfikator (numer) miejsca parkingowego – reservation_parking_id (FK)
    To pole będzie wskazywało na konkretny rekord w tabeli parking (lub w tabeli pomocniczej to się jeszcze okaże w miarę rozwoju projektu) którą dopiero stworzymy w dalszej części cyklu. Z uwagi na to, że nie każdy przyjeżdża samochodem pozostawimy tutaj możliwość wystąpienia wartości NULL.
  • dla celów statystycznych dodajmy sobie jeszcze pole mówiące nam o tym, czy dana rezerwacja była zrealizowana czy nie – reservation_realized
    Tutaj wystarczy, że odnotujemy realizację rezerwacji 0 – nie zrealizowana, 1 – zrezlizowana

Analogicznie jak przy tabelach hotels i rooms stworzymy tabelę reservations w management studio.

1. Przechodzimy do Object Explorer-a.
2. Rozwijamy (plusikiem) gałąź przy Databases, następnie przy HOTELS. Rozwiną nam się jeszcze dodatkowe gałęzie: Database diagram, Tables, Views itd. Nas będzie interesowała gałąź Tables.
3. Klikamy prawym przyciskiem myszy na gałęzi Tables i z podręcznego menu wybieramy opcję "New Table…".
4. Wypełniamy tabelę zgodnie z obrazkiem poniżej.
sql database hotels baza danych hotele tutorial sql server
5. W celu zapisu tabeli klikamy na ikonkę "dyskiskietki" i wprowadzamy nazwę tabeli "reservations".

gotowe 🙂

lub korzystamy ze skryptu

USE HOTELS
GO

CREATE TABLE reservations(
     reservation_id bigint primary key not null
    ,reservation_client_id int not null
    ,reservation_starting_date date not null
    ,reservation_final_date date not null
    ,reservation_room_id int not null
    ,reservation_parking_id int    
    ,reservation_realized bit not null
)

Teraz musimy ustawić połączenie, jak przy tabelach hotels i rooms. Tym razem jednak łączymy pole reservation_room_id z tabeli reservations i pole room_id z tabeli rooms.

USE HOTELS
GO

ALTER TABLE reservations
ADD CONSTRAINT fk_reservations_rooms FOREIGN KEY (reservation_room_id) REFERENCES rooms(room_id)

Generujemy schemat i mamy już 3 połączone tabele.

sql database hotels baza danych hotele tutorial sql server


sql database hotels baza danych hotele tutorial sql server  sql database hotels baza danych hotele tutorial sql server sql database hotels baza danych hotele tutorial sql server