![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 7.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Czy może być takie połączenie między tabelami - można powiedzieć "obwód zamknięty"
![]() ![]() 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. Ten post edytował Iza_M 3.10.2006, 17:05:21 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat w kazdym razie Pracownik będzie miał szersze kompetencje od zwykłego użytkownika czyli Pracownika Cos ci sie pomieszalo ![]() 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 ![]() ![]() 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. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 7.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() 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ę ![]() Cytat Brakuje kluczow obcych w Jezyki, Doswiadczenie, itd. skazujacych na CV (choc moze sa ukryte w zwinietym polu FK) Wiem, wiem ![]() 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' "; ![]() :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... Ten post edytował Iza_M 3.10.2006, 17:06:19 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 21:53 |