Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] System uprawnień
HuzarO
post 2.03.2013, 21:16:18
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 2
Dołączył: 13.04.2012

Ostrzeżenie: (0%)
-----


Witam, chciałbym się dowiedzieć czy jest sens w przechowywaniu danych w bazie danych w ten sposób:

- Każdy użytkownik ma group_id
- Każda grupa ma swoje pole permissions w którym znajduje się suma uprawnień które posiada(wyjaśnienie dalej)
- Każde uprawnienie ma swoje id które jest potęgą liczby 2,

czyli gdy mam uprawnienia:
1 - read own
2 - write post
4 - delete own post
8 - edit own post
16 - read other
32 - edit other
64 - remove other

gdy suma uprawnień użytkownika wynosi 23 to znaczy że może:
- read own
- write post
- delete own post
- read other

Czyli proste operacje bitowe, moje pytanie brzmi czy przechowywanie w ten sposób uprawnień jest dobrym rozwiązaniem, w przypadku gdy tych uprawnień jest całkiem sporo, a co za tym idzie id uprawnien może sięgać ponad 1 milion, gdyż jest to potęga liczby 2. Jak najlepiej przechowywać te uprawnienia w bazie tzn. w jakim typie pola i jego długości, narazie mam int(10) ale uprawnień jest nie dużo, lecz podczas rozbudowywania cms'a dojdzie ich o wiele wiele więcej. Więc chciałbym się dowiedzieć czy jednak jest to dobry sposób czy może Wy znacie jakiś inny, lepszy i bylibyście tak mili aby się nim podzielić. Dziękuję i pozdrawiam smile.gif

Ten post edytował HuzarO 2.03.2013, 21:17:46
Go to the top of the page
+Quote Post
StrefaPi
post 2.03.2013, 21:35:46
Post #2





Grupa: Zarejestrowani
Postów: 235
Pomógł: 50
Dołączył: 2.03.2013

Ostrzeżenie: (0%)
-----


ja bym tak nie robił... wydajność itp... nie wiem...

trywialne rozwiązanie to relacja wiele do wiele...
(wiele uprawnień o normalnych id do wielu użytkowników)


--------------------
https://studiostawki.com - studio fotograficzne i filmowe - ul. Inflancka 11, Warszawa
Go to the top of the page
+Quote Post
thek
post 2.03.2013, 21:36:27
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Do pewnego punktu bitowy zapis ma sens (zakres int czy potem bigint), ale jak sam zauważyłeś, im więcej tym i komplikacji niemało. Z czasem myślę, że przejście na relację many-to-many stanie się raczej koniecznością i chyba w tą stonę powinieneś pomyśleć póki nie masz do przepisania systemu całego.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
HuzarO
post 2.03.2013, 21:51:27
Post #4





Grupa: Zarejestrowani
Postów: 13
Pomógł: 2
Dołączył: 13.04.2012

Ostrzeżenie: (0%)
-----


Dobrze, ale teraz jak przechowywać te uprawniania w tabeli groups:
id|name|descr|permission

coś w stylu 1;2;4;8;16

czy może inny sposób?
Go to the top of the page
+Quote Post
StrefaPi
post 2.03.2013, 22:23:43
Post #5





Grupa: Zarejestrowani
Postów: 235
Pomógł: 50
Dołączył: 2.03.2013

Ostrzeżenie: (0%)
-----


w tabeli grup nic nie przechowujesz,

tworzysz relację wiele do wiele smile.gif

relacja:
Kod
id_grupy|id_uprawnienia

grupy:
Kod
id|name|desc

uprawnienia:
Kod
id|name|desc


Ten post edytował StrefaPi 2.03.2013, 22:31:27


--------------------
https://studiostawki.com - studio fotograficzne i filmowe - ul. Inflancka 11, Warszawa
Go to the top of the page
+Quote Post
HuzarO
post 2.03.2013, 22:29:43
Post #6





Grupa: Zarejestrowani
Postów: 13
Pomógł: 2
Dołączył: 13.04.2012

Ostrzeżenie: (0%)
-----


Dziękuję panowie smile.gif temat do zamknięcia.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 21.06.2025 - 22:56