Relacja wiele do wiele

0

Witam,

pytanie poczatkującego:
mam 4 tabele: Rezerwacja, Posrednia, Pokoj. Chce miec mozliwosci rezerwacji wielu pokojow dla jednego id rezerwacji. W tym celu zrobiłem tabele pośrednia, która przechowuję mi klucze obce z tabel: Rezerwacja, Pokoj. Z tym, ze nie jestem pewny co do tego: gdy zrobie relacje wiele do wiele, wtedy kazdy bedzie mogl zarezerwowac dany pokoj, a co w sytuacji gdy dany pokoj bedzie juz zarezerwowany? ( czy moze to na poziomie kodu wyeliminuje )
dlatego zastanawiałem się nad relacja: (Rezerwacja 1:N Posrednia) i (Posrednia 1:1 pokoj).

Co sądzicie?
Jezeli ktoś ma ciekawe materiały cokolwiek co mnie nakieruje będę wdzięczny! ;)

0

mam 3 tabele*

0

Czy nie wystarczy w pokoju zrobić klucz obcy = id rezerwacji? Bez żadnych tabel pośrednich?

1

Najprościej byłoby dodać flagę boolowską do relacji pośredniej, która oznacza czy dana rejestracja jest wciąż aktualna, a następnie stworzyć constraint, który zabraniałaby by istniały dwie aktywne rezerwacje na dany pokój.

0

Sprawdzanie po stronie bazy możesz zrobić np. triggerem. BTW taki schemat jest słuszny i poprawny.

plutasnyy napisał(a):

Czy nie wystarczy w pokoju zrobić klucz obcy = id rezerwacji? Bez żadnych tabel pośrednich?

tak? a jak zarezerwujesz ten pokój od 10.09.2017 do 12.09.2017 dla usera X i od 13.09.2017 do 20.09.2017 dla usera Y w takim przypadku?

0

Nie pasuje bo wtedy jedna osoba mogla by tylko zarezerwowac jeden pokoj, a ja chce zrobic by jedna osoba mogla zarezerwowac jeden bądż wiele pokojów.
Wiem nie uwzglednilem tego w poscie wyzej.

0

Czy ta rezerwacja, posrednia, pokoj to nie powinno być 1:n i 1:n zamiast 1:n i 1:1?

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