Autor | Zpráva | ||
---|---|---|---|
qidak Profil * |
#1 · Zasláno: 4. 12. 2016, 11:39:01
Zdravím a prosím o malou konzultaci. Potřebuji vytvořit uživatelskou strukturu podobnou tradičnímu "letadlu", tj tak aby každý uživatel mohl vytvářet další uživatele, a zároveň aby do činnosti každého uživatele viděli všichni jemu hierarchicky nadřazení v jeho větvi. Mělo by to být dimenzované asi na 500 uživatelů celkem a omezeno na max 20 vnořených úrovní.
Jen pro přesnost - ukázka zamýšlené struktury: - Ředitel -- Šéfedaktor --- Fotograf --- Redaktor -- Účetní --- Asistentka Ředitel vidí do činnosti všem. Šéfredaktor fotografovi a redaktorovi, ale nikoli účetní. Účetní zase vidí jen k asistentce. Napadá vás nějaké elegantní řešení? Přemýšlel jsem o rekurzi, kterou bych zkusil získat pole s ID nadřízených a druhé pole s ID dětí. Jako další variantu zvažuju uložení všech nadřízených i dětí přímo do databáze ke každému uživateli a osud je načítat, případně updatovat. Elegance ale oběma řešením chybí, navíc se obávám že by to bylo pomalé... |
||
Alphard Profil |
#2 · Zasláno: 4. 12. 2016, 16:38:04
Tak návrhově by měl mít každý uživatel referenci na svého nadřízeného (nebo null pro ředitele), maximálně ještě seznam přímých podřízených, to stačí a je to čisté.
A teď jde o to, jak to chcete implementovat. Kdyby v PHP nebo v databázi podporující hierarchii, stačí to takto. Pokud to má být třeba v MySQL, nabízí se traverzování kolem stromu. Viz např. www.interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnich-databazich, je to častý problém, nevidím tady nic unikátního. Algoritmy na vytahování i modifikaci dat jsou na blogu u Jakuba Vrány. |
||
Časová prodleva: 8 let
|
0