Autor Zpráva
sedgar
Profil *
Dobry den,
chcel by som sa spytat, ako najefektivnejsie vytvorit viacnasobnu strukturu poloziek jedneho druhu...
aby som to trosku ozrejmil uvediem priklad - povedzme struktura zamestnancov v nejakom podniku:

1. riaditel podniku
2. vykonny riaditelia
3. veduci oddeleni
4. veduci pracovnych skupin
5. zamestnanci

moznosti, ktore poznam:
1. kazdy zamestnanec bude mat ID nadriadeneho - v tom pripade lahko zistim vsetkych zamestnancov o jednu uroven pod sebou, horsie to je so zistovanim zamestnancov o 2 a viac urovni...
2. kazdy zamestnanec bude mat vlastny strukturovany kod v tomto priklade 5ciferny:

1. riaditel podniku: 10000
2. vykonny riaditelia: 11000 - 19000
3. veduci oddeleni: 11100 - 11900, 12100 - 12900,....
4. veduci pracovnych skupin: 11110 - 11190, 11210 - 11290,...
5. zamestnanci: 11111 - 11119, 11121 - 11129,...

pricom sa bude zistovat na zaklade podobnosti kodov (pod 11000 budu patrit vsetci zamestnanci s kodom 11001 - 11999)
problemom je, ze o jeden stupen nizsie moze byt max. 9 zamestnancov...


Co by ste mi poradili? ako vytvorit podobnu viacnasobnu strukturu aby bola efektivna? su tieto dve moznosti dobre? da sa na nich nieco vylepsit? alebo sa podobne struktury navrhuju uplne inac?

Dakujem.
martinX
Profil *
Co se týče těch čísel, máte pouze 5 úrovní, tak v DB bude 5 sloupců a v každém z nich bude nějaký integer (snad budou stačit čísla v rámci milionů) a při výběru budete v SQL dotazu, podle úrovně zanoření, tvořit dotaz s určitým rozsahem. Je to ale jen moje myšlenka, která může mít určité nevýhody.
sedgar
Profil *
martinX

ja som to myslel tak, ze v tabulke bude iba jeden identifikacny stlpec s kodom... ten by sa nacital a pomocou substr() rozkuskoval... myslite ze to zrobit tak, ze urobim viac stlpcov? teda ze pre kazdeho zamestnanca budem definovat:
1.stlpec - id jeho veduceho skupiny
2.stlpec - id jeho veduceho oddelenia
3.stlpec - id vykonneho riaditela
4.stlpec... ten by v tomto pripade ani nemusel byt...

nebude sa takto zbytocne zvecsovat tabulka? navyse v pripade zmeny struktury bude treba dodatocne pridavat stlpce...
TSD
Profil *
Řešení martinX mě napadlo taky, ale má to jednu logickou chybu.

Když šéfem Cyrila bude Božena a šéfem Boženy Adam, tak informace o vazbě Adam -> Božena je uložena jednak u Boženy, ale i u Cyrila.

To jsou jednak data navíc, ale hlavně je to redundance, kterou nemám rád. Myslím že každá informace by měla v databázi ležet jenom jednou.

Jde o to, jak často potřebuješ informaci o celém "vláknu" Adam - Božena - Cyril - Dana - Eva a jak často si vystačíš s vazbou o jednu úroveň.

Pokud by to bylo jen trochu možné, tak já na tvém místě bych použil tvou variantu 1.
roberta
Profil
sedgar
tvoja možnosť č. 1 je riešenie problému.
zisťovanie zamestnancov o 2 a viac úrovní nie je až taký problém. sú to klasické príklady na 5 minútovky z programovania...

http://interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnich-d atabazich/

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0