Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dwa rodzaje użytkowników dwie tabele ?
cornholio666
post 19.03.2008, 20:05:29
Post #1





Grupa: Zarejestrowani
Postów: 472
Pomógł: 8
Dołączył: 14.03.2004
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Witam,

są dwa rodzaje użytkowników, powiedzmy zwykły użytkownik i użytkownik będący prawnikiem. Łączą ich wspólne cechy jak login, hasło, mail itp. Dodatkowo prawnik ma cechy których nie posiada zwykły user np. imię i nazwisko, zwykły user posługuje się nickiem.

Jedna tabela czy dwie na przechowywanie informacji o uzytkownikach? Jakie za jakie przeciw do każdego z rozwiązań ?


--------------------
I need TP for my bunghole!!!

Mój nowy przyjaciel - tytanowa płytka na stałe
------------------------------------------------------
AEGEE, kwiaciarnia rzeszów , notariusz rzeszów, zakład krawiecki rzeszów, paweł jakubowicz
Go to the top of the page
+Quote Post
cool_solar
post 20.03.2008, 22:19:29
Post #2





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 29.06.2007

Ostrzeżenie: (0%)
-----


Argumentem za może być zachowanie porządku w bazie, czyli jedna tabela z pracownikami, ze wskazaniem rodzaju użytkownika i dodatkowymi cechami. Przy takiej konstrukcji zawsze bez zbędnego łączenia tabel czy przeszukiwania dwóch będzie można realizować dowolne zadania.
Go to the top of the page
+Quote Post
Piniek
post 20.03.2008, 22:23:26
Post #3





Grupa: Przyjaciele php.pl
Postów: 463
Pomógł: 49
Dołączył: 27.12.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


ja bym zrobil jedną tabelę i poporstu pola imie i nazwisko ustawil domyslnie null winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
cornholio666
post 21.03.2008, 12:54:06
Post #4





Grupa: Zarejestrowani
Postów: 472
Pomógł: 8
Dołączył: 14.03.2004
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Jakie są minusy przechowywania tych informacji w jednej tabeli ? Czy wpływa to jakoś na wydajność serwisu przy założeniu że liczba użytkowników przekroczy np. 100 000 ?

Czy są jakieś minusy przechowywania tych informacji w dwóch tabelach oprócz konieczności ich złączenia ?


--------------------
I need TP for my bunghole!!!

Mój nowy przyjaciel - tytanowa płytka na stałe
------------------------------------------------------
AEGEE, kwiaciarnia rzeszów , notariusz rzeszów, zakład krawiecki rzeszów, paweł jakubowicz
Go to the top of the page
+Quote Post
Piniek
post 21.03.2008, 12:57:35
Post #5





Grupa: Przyjaciele php.pl
Postów: 463
Pomógł: 49
Dołączył: 27.12.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


mysle ze najwazniejsze jest to ze dlugosc wykonyania zapytan do bazy na jednej tablei jest krotsze niz na dwoch


--------------------
Go to the top of the page
+Quote Post
AxZx
post 21.03.2008, 14:15:16
Post #6





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

Ostrzeżenie: (0%)
-----


to chyba zalezy od tego ilu jest uzytkownikow zwyklych a ile prawnikow ktorzy beda mieli wypelnione dodatkowe pola. jezeli wiecej bedzie zwyklych uzytkownikow wtedy duzo kolumn bedzie pustych. jeszcze sie zastanow nad tym jak czesto bedziesz korzystal z dodatkowych pol.


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
woj_tas
post 21.03.2008, 16:52:37
Post #7





Grupa: Zarejestrowani
Postów: 230
Pomógł: 36
Dołączył: 31.03.2006
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


Cytat(Piniek @ 21.03.2008, 12:57:35 ) *
mysle ze najwazniejsze jest to ze dlugosc wykonyania zapytan do bazy na jednej tablei jest krotsze niz na dwoch


Bzdura. Dobrze założone klucze i indeksy i nie ma różnicy podczas pobierania danych (a jak jest to bardzo! niewielka).

Zdecydowanie jestem za rozdzieleniem danych na dwie tabele.


--------------------
Go to the top of the page
+Quote Post
Piniek
post 21.03.2008, 16:54:31
Post #8





Grupa: Przyjaciele php.pl
Postów: 463
Pomógł: 49
Dołączył: 27.12.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(AxZx @ 21.03.2008, 14:15:16 ) *
to chyba zalezy od tego ilu jest uzytkownikow zwyklych a ile prawnikow ktorzy beda mieli wypelnione dodatkowe pola. jezeli wiecej bedzie zwyklych uzytkownikow wtedy duzo kolumn bedzie pustych. jeszcze sie zastanow nad tym jak czesto bedziesz korzystal z dodatkowych pol.


a ja po głepszym przemysleniu sprawy przyznam wam jednak racje, ale jak w zacytowanym fragmecie ma znacznie ile bedzie zwyklych userów itych prawników ;p


--------------------
Go to the top of the page
+Quote Post
AxZx
post 21.03.2008, 23:20:28
Post #9





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

Ostrzeżenie: (0%)
-----


no przeciez ci napisalem.

zalozmy ze masz 1000 zwyklych userow i 2 prawnikow.
w takim przypadku tworzac w jednej tabeli dodatkowe kolumny ktore beda wykorzystane tylko dla 2 uzytkownikow jest bezsensem.

ja jestem za rozdzieleniem kolumn - bardziej elastyczne rozwiazanie.


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
nospor
post 26.05.2008, 19:12:32
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




odświerzę troche temat.

Sytuacja: dużo użytkownikow (dużo pojęcie względne, powiedzmy powyżej 100tys.)
Każdy uzytkownik ma podstawowe pola:
imie
nazwisko
login
email
jakies jeszcze ze dwa

oraz dodatkowe pola (powiedzmy kilkanascie, no max 20-30):
czy zezwala na cos x 5
czy zezwala na cos innego x 4
czy cos tam jeszczze x5
jakas opisówka
jakas inna opisówka

I teraz pytanie: dzielić na te dwie tabele czy nie? W zasadzie każde zapytanie, może poza nielicznymi, będzie w zasadzie biegać do dwóch tabel, bo w kazdej bedzie cos waznego. Z tej drugiej tabeli będą wazne te pola "zezwalajace". I powiem szczerze - motam się. Niby zawsze robiłem na jednej tabeli. Unikamy dzieki temu tych nieszczesnych łączen. No ale może jakiś konkretny pożytek z tego podzialu będzie?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
batman
post 26.05.2008, 19:38:02
Post #11





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Też miałem podobny problem i zbadałem go empirycznie winksmiley.jpg
Mam tabele: tabuser i tabprofil. W pierwszej trzymam login, hasło, aktywny, data założenia konta itp. Druga tabela jest tabelą zawierającą specyficzne dla danego systemu dane, np imię i nazwisko, adres, zawód, wykształcenie, pola konfiguracyjne (coś zezwala) itd. Na podstawie tych dwóch tabel mam stworzony widok. Oczywistym jest, że na odpowiednich kolumnach pozakładane mam indeksy.

Wady:
- wolniejsze niż jedna tabela (ale nieznacznie, używając cache-owania nie ma różnicy)
- brak możliwości bezpośredniej edycji danych w widoku (trzeba modyfikować osobno tabuser i tabprofile)

Zalety:
- podczas synchronizacji bazy użytkowników nie muszę się martwić o pola których nie ma / które są w różnych bazach
- przenoszenie kont między systemami (np terminarz, sklep, poczta, itd) sprowadza się do przeniesienia danych z jednej tabeli oraz wszystkiego tego co można z drugiej. Jeśli czegoś brakuje, to zanim przeniesiony użytkownik będzie mógł korzystać z nowego serwisu, musi uzupełnić dane.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
bamboo
post 26.05.2008, 19:48:29
Post #12





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 14.02.2008
Skąd: Głowno

Ostrzeżenie: (0%)
-----


Ja zrobiłbym tabele ze WSZYSTKIMI użytkownikami a na końcu dodałbym pole oznaczające czy dana osoba jest przykładowo tym prawnikiem (np. 0 - uzytkownik normalny, 1 - osoba z wiekszymi uprawnieniami). Utworzyłbym drugą tabele w której indeksem bylyby numery id uzytkowników którzy mają wieksze uprawnienia i własnie w tej tabeli utworzylbym dodatkowe pola które są w tym przypadku potrzebne... Według mnie takie rozwiązanie jest dobre, ponieważ nie bedą sie marnowac pola w bazie ze wszystkimi userami ltórem te dodatkowe dane są zbędne... Dodatkowo ten sposób jest uniwersalny na wszelkiego typu dodatkowe informacje o użytkowniku, administratorze, Vipie czy moderatorze (2, 4, 5 itd.), np. przwileje, uprawnienia i inne dodatkowe pola.
Go to the top of the page
+Quote Post
nospor
post 26.05.2008, 19:58:52
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Według mnie takie rozwiązanie jest dobre, ponieważ nie bedą sie marnowac pola w bazie ze wszystkimi userami ltórem te dodatkowe dane są zbędne...
Rozmawiamy teraz o opcji numer dwa - nie ma zbednych pol. kazdy user bedzie mial wypelnione wszystkie pola.
I prosilbym o wypowiedź osób co to juz robily i mają doswiadczenie z tym

@batman dzieki. Mowiac "widok" masz na mysli widok mysql? powiedzmy ze wolalbym uniknac tworzenia widoków


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
teutates
post 26.05.2008, 23:26:06
Post #14





Grupa: Zarejestrowani
Postów: 156
Pomógł: 2
Dołączył: 9.09.2006
Skąd: Londyn/Gdynia

Ostrzeżenie: (0%)
-----


Jestem za rodzieleniem userow. Skoro jedni userzy niejakoby dziedzicza funkcjonalnosc drugich, czemu by nie umiescic tych dodatkowych informacji w tabeli w relacji 1:1? Takie rozwiazanie pomaga podczas operacji na userach rozszerzonych (obsluga trigerami) oraz pozwala na ew rozwijanie funkcjonalnisci, a dodatkowo ulatwia dministracje i zachowuje duza spojnosc danych. Jesli ktos nie wpadnie na genialny pomysl zeby z bazy wyciagac informacje JOINami co znacznie spowalnia i w praktyce jest wykozystywane naprawde oszczednie zapytania beda naprawde blyskawiczne. Jesli natomiast jeszcze za wolno to mozna zawsze memcache'yc wyniki:) Wtedy juz smiga jak ta lala:) Jesli ktos nie wierzy niech odpali sobie pare takich zapytan z EXPLAIN SELECT i zobaczy ile trwaja operacje zwiazane z obsluga tabeli w porownani z wyszukiwanie danych:)

Pozdrawiam
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 Wersja Lo-Fi Aktualny czas: 23.06.2025 - 01:31