Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak zaprojektować bazę?, Projektowanie bazy pod odpowiednie zapytanie
Marys91
post
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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
d3ut3r
post
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
-mail

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 smile.gif

Ten post edytował d3ut3r 2.03.2011, 04:34:33


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
askone
post
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:
  1. users:
  2. -userid
  3. -firmid
  4. -login
  5. -password
  6.  
  7. dane_firmy:
  8. -firmid
  9. -nazwa
  10. -adres
  11. -branza
  12. -telefon
  13. -mail


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:
  1. users-firms
  2. -userid
  3. -firmid


Pozdrawiam


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
thek
post
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 smile.gif


--------------------
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
Go to the top of the page
+Quote Post
Marys91
post
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 tongue.gif Jeszcze pomyślę nad tym i zademonstruje co wymyśliłem smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 09:44