Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy relacje miedzy tymi tabelami są prawidłowe?
Forum PHP.pl > Forum > Bazy danych
Iza_M
Czy może być takie połączenie między tabelami - można powiedzieć "obwód zamknięty" winksmiley.jpg tzn. użytkownik-ogłoszenie-skojarzenie-cv-użytkownik.


Nie ma żadnych związków wiele do wiele, wszędzie jest jeden-wiele.

Nie jestem pewna czy takie rozwiązanie ,które tutaj przedstawiłam jest słuszne. Prosze o wasze opinie i ewentualne uwagi.

Baza danych ma przechowywać dane użytkowników, rozróżnianych na Pracownika i Pracodawcę : tutaj tego nie ujęłam, w kazdym razie Pracownik będzie miał szersze kompetencje od zwykłego użytkownika czyli Pracownika - pomyślałam,że dodam dodatkową tabelę z dodatkowymi danymi Pracodawcy skojarzoną z Użytkownikiem.
Zależnie od typu uzytkownika, bedzie można dodawać do BD CV (Pracownik) albo Ogłoszenie (Pracodawca).

Tabela Skojarzony ma łączyć Ogłoszenie Pracodawcy z Wybranymi CV poleconymi przez Pracowników,którzy zgłosili taką opcję i odwrotnie ma też łączyć CV z ogłoszeniem Pracodawcy, który powiadamia Pracownika, którego wybrał o swoim Ogłoszeniu.
Dodatkowe pole w tej tabeli określi czy skojarzenie dotyczy Pracownika czy Pracodawcy.

Plan jest taki jeszcze : przechowywanie w BD wiadomości o zapamiętanych,zanotowanych "na później" Ogłoszeniach przez Pracowników i CV przez Pracodawców.
Nie wiem za bardzo jak to zrealizować. Dodając nową tabelę Notatnik i wiążąc ją z CV albo Ogłoszeniem wprowadziłabym straszny rozgardiasz...

Mam nadzieje ,ze bardzo nie zamotałam na wszelkie pytania odpowiem jeszcze jeśli bedzie coś niejasne.

Czekam na opinie - chętnie też te nieprzychylne - co do tego rozwiązania. Wszelkie uwagi na wagę złota.

W tabelach brakuje atrybutów, bo projekt pisałam narazie wstępnie i nie dopisywałam żadnych dodatkowych pól.

Nie jestem pewna, czy mogą być powiązane w ten sposób tabele...
Do BD wróciłam po dłuższym czasie. No i jak widać ciut pozapominałam. Teraz stoje przed małym projektem i mam dylemat. Szukałam odpowiedzi w dawnych wykładach, przeszukałam inne zasoby i nigdzie nie znalazłam w nich "zanegowania" takiego rozwiazania...
Ale z tego co pamiętam coś było w tej kwestii, że tabel nie można tak łączyć, żeby "zamykały" się w ten sposób ich relacje. Pamiętam to jednak jak przez mgłę - a nigdzie nie mogę doszukać sie czegoś co by mi tą wątpliwość rozwiało. Być może się mylę.

Będe wdzięczna za jakieś sugestie.
dr_bonzo
Cytat
w kazdym razie Pracownik będzie miał szersze kompetencje od zwykłego użytkownika czyli Pracownika

Cos ci sie pomieszalo smile.gif

Cytat
Zależnie od typu uzytkownika, bedzie można dodawać do BD CV (Pracownik) albo Ogłoszenie (Pracodawca).


A nie mozna bedzie na jednym koncie/uzytkowniku dawac ogloszen i CV? Przeciez takie sytuacje tez sa mozliwe.
Mozesz dodac do ogloszenia idUzytkownik co bedzie wskazywalo na pracodawce tego ogloszenia; a w CV idUzytkownik bedize wskazywalo na Pracownika. I teraz kazdy uzytkownik moze byc i pracodawca i pracownikiem.


Cytat
Nie ma żadnych związków wiele do wiele, wszędzie jest jeden-wiele.

Teoretycznie to sie zgadza biggrin.gif Ale kazde CV moze byc skojarzone z wieloma ogloszeniami, i do kazdego ogloszenia mozna skojarzyc wiele CV (przez tabele Skojarzony) czyli mamy relacje wiele do wielu -- ale to normalne, relacje wiele do wielu wlasnie tak sie tworzy w bazie danych smile.gif


Brakuje kluczow obcych w Jezyki, Doswiadczenie, itd. skazujacych na CV (choc moze sa ukryte w zwinietym polu FK)

Cytat
Plan jest taki jeszcze : przechowywanie w BD wiadomości o zapamiętanych,zanotowanych "na później" Ogłoszeniach przez Pracowników i CV przez Pracodawców.

Znow wiele do wielu, tabele zapamietane_CV(idUzytkownika, idCV)
i zapamietane_ogloszenia(idUzytkownika, idOgloszenia)
kazda z nich uczestniczy w jednej relacji wiele do wielu.
Cytat
Dodając nową tabelę Notatnik i wiążąc ją z CV albo Ogłoszeniem wprowadziłabym straszny rozgardiasz...

Ale nie utworzysz kluczy obcych, bo jedna kolumna (z FK) musiala by byc powiazana z id CV lub id Ogloszenia, no chyba ze miala bys dwie kolumny na ID z tym ze mogly by byc puste (NULL). Polecam dwie tabele.
Iza_M
Witam, dziękuję za podpowiedzi:)

Cytat
Cos ci sie pomieszalo

Rzeczywiście troszkę namieszałam, przepraszam- chodziło o to ,że Pracodawca miałby większe prawa od Pracownika.Jednak to wcale przecież nie uniemożliwa trzymania ich w jednej tabeli smile.gif - tutaj wiec się troszkę zapędziłam.
Cytat
A nie mozna bedzie na jednym koncie/uzytkowniku dawac ogloszen i CV? Przeciez takie sytuacje tez sa mozliwe.
Mozesz dodac do ogloszenia idUzytkownik co bedzie wskazywalo na pracodawce tego ogloszenia; a w CV idUzytkownik bedize wskazywalo na Pracownika. I teraz kazdy uzytkownik moze byc i pracodawca i pracownikiem.

Tak właśnie przedstawiłam na przykładzie i tak chyba zostawię, masz rację smile.gif
Cytat
Brakuje kluczow obcych w Jezyki, Doswiadczenie, itd. skazujacych na CV (choc moze sa ukryte w zwinietym polu FK)


Wiem, wiem smile.gif to wszystko do uzupełnienia...

Co do notatnika pomyślałam, że skoro wszyscy będą trzymani w tabeli Użytkownicy to i Notatnik będzie mógł być jeden z polem,które będzie zawierało -id_zanotowane- CV lub Ogłoszenia a rozróżnienie o które z nich chodzi będzie dawało pole -rodzaj- ( CHAR(1) 'o' or 'c' ).


Zrobiłam jeszcze raz ten wstępny projekt tym razem jako diagramy ERD dodając dodatkowo tabele potrzebne do sesji (dane o sesji będę przetrzymywać w bazie danych) oraz Notatnik :
Bardzo zależy mi na opinii czy diagram jest ok, tak chyba ostatecznie utworzyłabym relacje pomiędzy tabelami


-------------
-------------
Nasunęło mi się jeszcze jedno pytanie,czy taka relacja miałaby sens i czy taka relacja mogłaby wystąpić tutaj:


Czy jest sens przetrzymywać id użytkownika w tym Skojarzeniu. Podam przykład. Wchodząc na swoje konto użytkownik "Pracodawca" będzie miał możliwosć przeglądania swoich Ogłoszeń, przy każdym Ogłoszeniu będzie możliwość sprawdzenia ile CV zostało zaproponowanych do wybranego Ogłoszenia i wtedy proste zapytanie:
"SELECT id_CV FROM Skojarzenie WHERE id_ogloszenie=$id_ogloszenie AND rodzaj='o' ";
Dostawałby wtedy listę zaproponowanych dla danego Ogłoszenia CV.

Analogiczna sytuacja byłaby dla użytkownika "Pracownik" tyle ,że z zapytaniem:
"SELECT id_Ogloszenie FROM Skojarzenie WHERE id_CV=$id_CV AND rodzaj='c' ";

questionmark.gif?
:roll2:


--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
Dodane: 3 października 2006r


Hej witam po pewnym czasie.

Mam takie pytanie do Was, co do powyzszego rozwiązania.

Mam dwie tabele: "CV" i "Ogłoszenie",które zawierają kolumnę województwo.
Bardziej efektywnie byłoby stworzyć oddzielną tabelę "Wojewodztwo" - tylko czy mogę ją połączyć zarówno z jedną i z drugą tabelą ("CV" i "Ogłoszenie") relacjami. To odnośnie przykładu, który podałam wyżej...
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.