Autor Zpráva
Frenk127
Profil
Zdravím,
mám takový technický dotaz ohledně přístupových práv do aplikace. Pracuji na aplikaci, která bude spravována administrátorem a bude ji používat několik uživatelů. Jelikož je aplikace určena pouze pro několik přesně určených uživatelů (kolem 10), bude mít administrátor jako jediný právo přidávat nové uživatele. To jen tak na nástin o co se jedná.

Teď bych přešel k samotnému problému. Aplikace bude určena pro správu určitých oborů, bude jich kolem 15 - 20 a administrátor, při registraci uživatele bude určovat, ke kterým oborům bude mít zmíněný uživatel přístup. Takže např. uživateli user1 povolí přístup a práci se 4-mi ze celkově 15 oborů, uživateli user2 povolí přístup a práci s 8-mi obory atd.

Jedná se mi o to, že při přihlášení daného uživatele potřebuji určit, ke kterým oborům bude mít přístup. Napadla mě myšlenka, že bych si v databazi vytvořil tabulku, ve které bude každý sloupec představovat jeden obor a v něm bude hodnota 0 nebo 1 určující, zda má ten a ten uživatel k danému oboru přístup nebo nemá. Nevím, zda je tato myšlenka správná, a nejsem si jist, zda by se nevyskytly problémy například, při odstranění určitého oboru, nebo přídání nového, případně editace stávajícího.
Pokud by měl někdo nápad, jak by se to dalo řešit jinak, budu jedině rád když se o něj podělí :)
Joker
Profil
Frenk127:
Napadla mě myšlenka, že bych si v databazi vytvořil tabulku, ve které bude každý sloupec představovat jeden obor a v něm bude hodnota 0 nebo 1
Ne, to ne. Obory jsou data do řádků.

nejsem si jist, zda by se nevyskytly problémy například, při odstranění určitého oboru, nebo přídání nového, případně editace stávajícího.
No to se právě spolehněte, že vyskytly.

Stačila by nějaká takováhle tabulka práv:
id | id uživatele | id oboru
...záznam by znamenal, že uživatel dané oprávnění má, absence záznamu že nemá.
lingvik
Profil
Frenk127:
Jde o příklad vztahu m:n (uživatel je svázáný až s m obory a obor je svázán až s n uživateli). Typické řešení používá tři tabulky. Jedna pro uživatele, druhá pro obory a třetí pro vazby mezi uživateli a obory. Říká se jí vazební a její schéma a funkce jsou popsány v #2. ID se většinou dá vynechat. Stačí jenom ID uživatele a ID oboru.
mattyZEM
Profil
Nebo jen sloupec "prava" (například), kde by byli určité stránky odděleny čárkou nebo něčím jiným, pak by se hledalo pomocí mb_substr zda ta hodnota existuje. Pokud ano, tak by se mu ukázal odkaz.
kajaman
Profil
a což použít typ SET?
Frenk127
Profil
[#4] mattyZEM
nad tím jsem přemýšlel taky, učitě by to fungovalo, ale jako vhodnější řešení mi přijde to, které uvedl Joker.

Každopádně díky všem za příspěvky
Joker
Profil
mattyZEM:
Nebo jen sloupec "prava" (například), kde by byli určité stránky odděleny čárkou nebo něčím jiným
To je špatné řešení. První normální forma: (laicky řečeno) Hodnota každého sloupce v každém řádku musí být atomická, tzn. nesmí být složená z jiných hodnot.

SET, viz kajaman, je lepší varianta, ale pořád to může narazit na problémy, viz manuál a Why You Shouldn't Use SET

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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