Portál AbcLinuxu, 23. dubna 2024 10:51


Dotaz: Rozdeleni databazovych tabulek

31.8.2009 10:12 Martin Koci
Rozdeleni databazovych tabulek
Přečteno: 364×
Odpovědět | Admin

Dobry den, delam informacni system v PHP. Do systemu se budou prihlasovat tri typy lidi:

Vedouci
Zamestnanci
Zakaznici

Prihlasovaci formular je pro vsechny spolecny.

Nyni ale vaham, jak udelat databazove tabulky. Zda do tabulky users dat vsechny tri typy uzivatelu - to by melo vyhodu, ze po prihlaseni by se uzivatelske jmeno hledalo jen v jedne tabulce. Problemem by pak byly sloupce, ktere jsou vyzadovany jen treba u zamestnancu a vedoucich (plat) - tak co s nima delat u zakaznika? Nechat na null?

Dalsi moznosti by bylo zakazniky a pracovniky dat do dvou oddelenych tabulek. To by vsak komplikovalo prihlasovani, protoze bych uzivatelske jmeno musel hledat ve dvou tabulkach.

Co myslite?

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

31.8.2009 11:09 Petr | skóre: 10 | blog: mlz
Rozbalit Rozbalit vše Re: Rozdeleni databazovych tabulek
Odpovědět | | Sbalit | Link | Blokovat | Admin

Přeji hezký den,

 

Neznám další detaily. Osobně bych měl tabulku user, id, heslo, role, která by sloužila pouze k auth. a v aplikacích bych se rozhodoval podle role. To vyhovuje v případě, kdy pracovník se stane vedoucím. Jak jsem ale řekl, nemám dost informací.

 

PM

Bedňa avatar 5.9.2009 00:39 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Rozdeleni databazovych tabulek

jj, ten môj komentár som mal skôr prehodiť sem, ale to už nejde:) takže súhlasím s Petrom.

(Komentár je pod FooBar)

KERNEL ULTRAS video channel >>>
Dalibor Smolík avatar 31.8.2009 11:35 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
Rozbalit Rozbalit vše Re: Rozdeleni databazovych tabulek
Odpovědět | | Sbalit | Link | Blokovat | Admin

Já bych osobně udělal tabulky dvě:  zaměstnanci a zákazníci.  V případě zaměstnanců by v tabulce bylo pole, které by vypisovalo stav zaměstance (zda jde u vedoucího, řadového dělníka, pomocnou sílu, atd.),  tabulka zákazníci by byla jiná:  Tam je dobré uvádět údaje jako IČO, DIČ, název firmy apod. - naprosto jiná problematika. 

Z toho vyplývá, že přihlašovací formulář by neměl být společný pro všechny - zde by se rozhodlo v prvním dotazu, zda jde o zákazníka nebo zaměstnance. Pak by se objevil vlastní formulář pro daný typ uživatele.  Jinak mi ale takový společný formulář nepřipadá jako dobrý nápad .. Zákazník nemá vidět do "kuchyně" firmy, ani co se týká záležitostí zaměstnanců.

Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
31.8.2009 13:49 pSipi
Rozbalit Rozbalit vše Re: Rozdeleni databazovych tabulek

"Zákazník nemá vidět do "kuchyně" firmy, ani co se týká záležitostí zaměstnanců."

Suhlas a dokonca nema ani vidiet udaje ostatnych zakaznikov. Ak tam ukladate aj nejake osobne udaje a nie len volne dostupne mohlo by to byt aj zalovatelne.

2.9.2009 22:08 FooBar
Rozbalit Rozbalit vše Re: Rozdeleni databazovych tabulek
Odpovědět | | Sbalit | Link | Blokovat | Admin

Kdyz pomineme vsechny ty namitky k aplikaci jako takove (ktere jsou naprosto vystizne), reseni dotazu jako takoveho by bylo treba taky nejak takto:

a) Tabulka "Uzivatele", obsahujici zakladni spolecne veci: user id, login, heslo, pripadne nejaky dalsi jednoznacne spolecny data

b) Tabulka "Vedouci", obsahujici veci pro vedouci, tabulka "Zamestnanci", obsahujici veci pro zamestnance, tabulka "Zakaznici", obsahujici veci pro zakazniky... vzdy user id FK na tabulku uzivatele. Mozno samozrejme dal vetvit, jako napr. Uzivatele -> Zamestnanci -> Vedouci (tzn. Vedouci je zvlastni pripad Zamestnance). Tak muze byt pro zamestnance vzdy odkaz na user id sveho sefa, a u zakaznika napriklad datum posledniho nakupu sekacky na travu.

Ale vazne, radim tvrde separovat interni veci a klientske veci;)

Bedňa avatar 5.9.2009 00:31 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Rozdeleni databazovych tabulek

S tímto názorom jednoznačne súhlasím, už len kvôli dvom dôvodom, prvý je že sa pre tabuľku login dajú nastaviť iné práva ako pre ostané a ako druhý dôvod rychlejší a prehľadnejší spôsob prihlasovania v PHP. Ovšem pokiaľ by rozdielnych stĺpcov medzi

Vedouci
Zamestnanci
Zakaznici

nebolo veľa tak by som dáta (Vedouci,Zamestanci,Zakaznici, nepotrebne NULL) vložil do jednej tabulky a podľa loginu s nej vyberal údaje, samozrejme sa tím môže znížiť bezpečnosť údajov, ale pokiaľ ide o jednoduchý kód kde je malá šanca na bugy tak by to stačilo.

Takže pre bežnú app by som dopuručoval len dve tabuľky, login a data.

KERNEL ULTRAS video channel >>>
4.9.2009 23:58 VM
Rozbalit Rozbalit vše Re: Rozdeleni databazovych tabulek
Odpovědět | | Sbalit | Link | Blokovat | Admin

Jeste jedna moznost:

Tabulka users - spolecne veci

Tabulka zamestnanci - veci co maji zamestnanci navic, s atributem je_vedouci

Tabulka zakaznici - veci co maji zakaznici navic

Zamestnanci i zakaznici obsahuji userID - foreign key do users.

Jak to cist:

SELECT * FROM zamestnanci JOIN users USING (userID);

SELECT * FROM zakaznici JOIN users USING (userID);

To zaroven castecne separuje zamestnance i zakazniky, ale data formulare jsou v jedne tabulce. V pripade potreby se na to daji udelat VIEW.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.