![]() |
![]() ![]() |
![]() |
![]()
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 ![]() Ten post edytował HuzarO 2.03.2013, 21:17: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
|
|
|
![]()
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
|
|
|
![]()
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? |
|
|
![]()
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 ![]() 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
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 2 Dołączył: 13.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję panowie
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 21.06.2025 - 22:56 |