Autor | Zpráva | ||
---|---|---|---|
Frenk127 Profil |
#1 · Zasláno: 11. 2. 2010, 14:36:52
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 |
#2 · Zasláno: 11. 2. 2010, 14:41:30
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 |
#3 · Zasláno: 11. 2. 2010, 15:19:28 · Upravil/a: lingvik
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 |
#4 · Zasláno: 11. 2. 2010, 15:56:32
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 |
#5 · Zasláno: 11. 2. 2010, 16:17:45
a což použít typ SET?
|
||
Frenk127 Profil |
#6 · Zasláno: 11. 2. 2010, 16:32:15
[#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 |
#7 · Zasláno: 11. 2. 2010, 18:17:08
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 |
||
Časová prodleva: 13 let
|
0