Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [sql] diagram związku encji
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
atheo
witam wszystkich,

mam ogromną prośbę, tworzę BD pod tytułem obsługa pensjonatu, chciałbym abyście sprawdzili mi relacje czy dobre są czy powinny być inne jednak, najbardziej nie jestem pewien do relacji pomiedzy zakwaterowaniem a personelem i zastanawiam sie także nad R4...

wszelkie uwagi i podpowiedzi mile widziane,
pozdrawiam i z góry dziękuje


dr_bonzo
Tylko opisz co system ma robic, typu

czy platnosc ma byc powiazana z Zakwaterowaniem (zeby wiedziec za co klient zaplacil)
jakie znaczenie ma relacja Zakwaterowanie - Personel, zapisujesz kto je obsluzyl ?
Czym sie rozni zakwaterowanie od rezerwacji?
itp.

bez tych informacji nie jestem ci w stanie powiedziec czy dobrze to zrobiles

Rezerwacja: data_do masz INTEGERA
atheo
Tak płaność ma być opwiązana z zakwaterowaniem, bo w końcu klient wplaca kase za pobyt.
Co do relacji Zakwaterowanie - Personel to miałem na myśli ze ktoś z personelu, np. Kirownik, Recepcjonista bądź inny pracownik zakwaterował klienta, ale teraz co mi przychodzi do głowy czy nie powinno być tylko relacj Personel - Rezerwacja w celu rezerwacji.
Rezerwacja to zarezerwowanie klienta na dany okres, z mozliwoscią anulowania, natomiast zakwaterowanie miałem na myśli że klient już zdecydowany, gdzie mozna dokonać wiecej szczegułów, zastanawiam sie teraz czy niepowinno to być w jednym np. pod Rezerwacją.

Dzięki
sticker
sprowadz to do 3 postaci normalnej żeby nie było redundancji czyli kod pocztowy i miasto do osobnej tabeli jako unique + klucz główna a w kliencie i personelu dać klucz z tej tabeli

-rodzaj pokoju nie lepiej dać enum ? (2os ,3os itp.. )

co masz na myśli mówiąc o dostępności pokoju? (varchar 20) (w remoncie, dostepny ) jeśli tak to może lepiej zrobić tabele ze słownikiem a tu dać tylko fk

jeśli budujesz system do obsługi to jeszcze by mi brakowało ceny za pokoj

na razie tyle zauważyłem..
dr_bonzo
atheo: o to chodzilo

Masz w Rezerwacja platnosc_id, ale nie narysowales strzalki smile.gif podobnie z innymi relacjami

Robie rezerwacje, potem potwierdzam, i: czy moge byc zakwaterowany np. kilka dni dluzej/krocej (tzreba pokombinowaz z Zakwaterowaniem i Rezerwacja)? Czy to musi miec takie same parametry, wtedy robisz tylko Zakwaterowanie z polem 'stan' okreslajacym czy jest to Rezerwacja, czy anulowana rezer. czy dokonane zakwaterowanie (przyjmuje ze nie usuwasz anulowanych rezerwacji).

Co do adresu: tak jak pisze ~sticker, kolejna tabela

Relacja ZAkwaterowanie - Rezerwacja, klucz obcy powinien byc w ZAkwaterowaniu, i wskazywal by ktorej Rezerwacji dotyczy.

Usun z platnosci data_od, data_do (to znasz przez relacje z Zakwaterowaniem) (ew. mozesz dodac, termin platnosci)

Dostepnosc pokoju:na razie masz tak ze w pokoju moze byc klient a pokoj nadal pokazuje ze jest wolny (dostepnosc pokoju sprawdzaj po tym czy w danym czasie jest jakies zakwaterowanie)

A na co wplywa "stanowisko" Personelu? Moze dodatkowa tabela Grupa, + Uprawnienia?

itp.
atheo
witam,

do 3 postaci normalnej sprowadziłem tabele adresy (mam nadzieje ze o to chodzilo)

nie bardzo rozumiem te rozważania:
Cytat(dr_bonzo @ 23.05.2007, 10:39:23 ) *
Masz w Rezerwacja platnosc_id, ale nie narysowales strzalki smile.gif podobnie z innymi relacjami

Relacja ZAkwaterowanie - Rezerwacja, klucz obcy powinien byc w ZAkwaterowaniu, i wskazywal by ktorej Rezerwacji dotyczy.


jakiej strzałki questionmark.gif strzałki to moze te kropki questionmark.gif
drugie stwierdzenie mi sie podoba ale nie bardzo wiem jak mam to ująć..

coś takiego wyszlo po poprawieniu:


-stanowisko mialo wpywać na to ze np. recepcjonista zakwaterowuje a kierownik zatrudnia personel (no ale moze nie wchodzic lepiej w takie szczegóły ?)
-co do rodzaju pokoju moze byc enum
-a i chcialem zaznaczyc ze wszystkie INTEGR'y bedą SELECTAMI (numerowanie automatyczne)
-co z tą relacją nr 9 zakwaterowanie - personel ? ma być ?
- CZY RESZTA relacji jest w pożądku questionmark.gif

a druga moja propozycja tez poprawiona to:


zrezygnowałem z tabeli rezerwacja na rzecz jedenej zakwaterowanie
Sedziwoj
Nie analizuję całości, tylko rzuca mi się pewna rzecz w oczy. Personel i Klienci powinni mieć wydzielone imię nazwisko do osobnej wspólnej tabeli (moim zdaniem, do osoba, bo przecież nimi są) a telefon osobne, bo może być przecież z pewnością parę.
Do tego jeśli dobrze pamiętam co poprzednio czytałem, do tworzysz do istniejącej struktury, więc można przejrzeć co tak na prawdę spisują i przechowują, a podpowie co ma być w bazie.
atheo
Hmm a jak zrobić tą tabelę ADRESY?? bo ona przeciez nie moze mieć 2 kluczy podstawowych a ma sie przeciez łączyć z tabelą personel i klienci.
Jak dam
adresy_nr serial (PK),
klienci_adres int (FK),
personel_adres int (FK),
...
..
to co ja zrobie z adres_nr ? gdzie to dam ?

nie bardzo cos mogę wykreować te tabele w postgresql ;/ cos mam zawiele tych kluczy obcych ;/
dziobak
przeciez mozna miec dwa klucze prywatne.... mozesz miec nawe wiecej jak potrzebujesz winksmiley.jpg
dr_bonzo
atheo: to klienci i pracownicy maja miec po jednym FK na adresy.
atheo
okej ... a podpowiedzcie mi jeszcze jak mozna

takie relacje ostatecznie wymyslilem:


chodzi mi teraz o wpisanie danych do tabel. Jak zrobić z tym selectem (przyklad ponizej) w
50f
tabeli Klienci questionmark.gif

przyklad na innej bazie:

Insert into hotel.pokoj (hotel_nr,rodzaj,cena)Values((Select h.hotel_nr from hotel.hotel h where hotel_nazwa='Orbis'),'1osob',100);



zapytam więcej... czemu to nie działa questionmark.gif


insert into pensjonat.klienci (platnosc_nr, nazwisko, imie, ulica, miasto, kod_poczt, telefon)
Values((Select p.platnosc_nr from pensjonat.platnosci p where rodzaj_platnosci='gotowka'), 'Kowalski', 'Jan', 'Adresowo 5/15', 'Marki', '04-798', '8794587');


mnie wlasnie o cos takiego chodzi..
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.