![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 29.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
dopiero co zaczynam przygodę z sql i wymyślam sobie różne zadania do ćwiczeń i teraz tak się zastanawiam na jedną relacją. Zakładam, że z takich (przykładowych) tabel nie uda się utworzyć relacji: users(userid, login, pssword) dane_firmy(firmaid, nazwa, adres, branza, telefon, mail) Myślę, że tu by mogła być tylko relacja utworzona tak, że użytkownik jednocześnie rejestruje się i podaje dane firmy, wtedy userid=firmaid. Natomiast teraz tak sobie myślę, że trzeba byłoby utworzyć takie tabele: users(usersid, login, password) dane_firmy(firmaid, userid, nazwa, adres, branza, telefon, mail) Teraz jest sprawa nieco prostsza po wystarczy zrobić users.userid=dane_firmy.userid. Tylko pytanie jak przypisywać w tabeli dane_firmy userid? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nie jestem pewien czy dobrze rozumiem. Robisz 2 tabele
users: -userid -login -password dane_firmy: -firmaid -userid -nazwa -adres -branza -telefon I teraz gdy użytkownik dodaje firmę to w polu userid tabeli dane_firmy podaje id użytkownika który tą firmę zakłada. Jeżeli użytkownik w jednym formularzu wypełnia dane firmy i swoje dane rejestracyjne to najpierw dodajesz użytkownika a później za pomocą mysql_insert_id (zakładając, że nie używasz PDO itp.) wyciągasz ostatnie id a następnie dodajesz firmę i w polu userid wpisujesz id które przed chwilą wyciągnąłeś. Mam nadzieję, że coś z tego zrozumiesz ![]() Ten post edytował d3ut3r 2.03.2011, 04:34:33 -------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 654 Pomógł: 121 Dołączył: 27.10.2007 Skąd: Poznań, Łódź Ostrzeżenie: (0%) ![]() ![]() |
Według mnie struktura tabel w bazie powinna być inna. Zgodnie z rzeczywistym stanem rzeczy to użytkownik jest przypisany do firmy. Istnieje tutaj relacja użytkownik -> firma i firma -> wielu użytkowników...
Dlatego też tabele powinny zawierać następujące kolumny:
Może zdarzyć się sytuacja, że użytkownik nie będzie przypisany do żadnej firmy wtedy w kolumnie "firmid" w tabeli "users" należy wpisać wartość null. Powyższa struktura opisuje tylko przypadek kiedy użytkownik może być jednocześnie przypisany tylko do jednej firmy. Jeśli jednak chciałbyś mieć możliwość przypisania danego użytkownika do wielu firm musiałbyś skorzystać z tabeli pośredniczącej:
Pozdrawiam -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Ja bym jeszcze zmienił nieco. Weź pod uwagę freelancerów. Jednocześnie mogą oni pracować dla wielu firm nad ich projektami. Dlatego relacja jest raczej pokroju wiele-do-wielu. Masz więc tabelę firm i użytkowników niezależnie. Do tego tabela łącząca id_usera z id_firmy, ewentualnie posiadająca stopień zależności, czyli czy user w tej firmie to pracownik, zatrudniony na umowę o dzieło lub zlecenie, kierownik działu, czy też szef lub jeszcze inne stanowisko.
W efekcie masz kilka formularzy: 1. Dodanie usera/pracownika - całkowicie niezależne. Sprawdza się czy user już aby nie istnieje. 2. Dodanie firmy - może to zrobić użytkownik posiadający konto, ponieważ nie ma firmy bez pracowników/userów. Sprawdza się czy firma już aby nie istnieje. 3. Przypisanie do firmy przez usera - user zgłasza firmie bycie jej pracownikiem. Firma może to zaakceptować lub odrzucić, zgodnie ze stanem faktycznym. 4. Przypisanie usera przez firmę - firma zgłasza usera jako pracownika. Może on to zaakceptować lub odrzucić, zgodnie ze stanem faktycznym. To tak na szybko kilka przypadków ![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 29.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Hmmm... niby prosta sprawa, a wcale nie taka prosta
![]() ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 09:44 |