webForumDet fria alternativet

Problemställning med flera tabeller

10 svar · 321 visningar · startad av Jesper T

Jesper TMedlem sedan nov. 20017 144 inlägg
#1

Jag börjar bli stammis här... :r
Tänk er detta scenario: Fyra tabeller; Medlemmar, grupper, tillhörigheter och rättigheter

En medlem kan vara med i flera grupper
Gruppmedlemsskapet styrs i tabellen Tillhörigheter
Vilka medlemmar som kan se/ändra andra medlemmars uppgifter styrs i tabellen rättigheter

tblMedlemmar
Id | Namn |
----------------------
1 | Kalle
2 | Olle
3 | Hasse

tblGrupper
gId | gNamn | gAdmingrupp
-----------------------
1 | Telefoner | 0
2 | Administratör | 1
3 | Bilar |0
4 | Redaktör | 1

tblTillhörigheter
tid | tGid
-----------------------
1 | 1
2 | 1
2 | 3

tblRättigheter
rid | rGid
----------------------
1 | 1

Men ett problem uppstår i detta fall för att Kalle har adminrättigheter i gruppen telefoner medans olle är medlem i båda grupperna telefoner och bilar. Kalle kommer kunna ändra/se Olles uppgifter fast Kalle endast har adminrättigheter i den ena gruppen.
Detta är ju igenligen inte något konstigt, men jag önskar tankar på hur man skulle kunna styra detta på ett smidigt sätt.

Jesper TMedlem sedan nov. 20017 144 inlägg
#2

Undrar fortfarande... ett litet tips skulle ju inte skada. :)

LarsGMedlem sedan dec. 200012 464 inlägg
#3

Jag förstår inte vad som är problemet. Vad vill du uppnå?

Jesper TMedlem sedan nov. 20017 144 inlägg
#4

Jo,
låt säga att man skall få tillgång till gruppens medlemmars personuppgifter och lösenord om man har adminrättigheter i en specifik grupp.

Då kommer ju även personer med i den listan som har adminrättigheter i andra grupper. Ex. Kalle som har adminrättigheter i ”telefoner” kan kolla upp Pelles (Pelle har adminrättigheter i gruppen ”bilar” och är medlem av gruppen "telefoner") lösenord och logga in som Pelle...

Jesper TMedlem sedan nov. 20017 144 inlägg
#5

Är det fortfarande otydligt eller är det omöjligt att lösa?

LarsGMedlem sedan dec. 200012 464 inlägg
#6

Du behöver nog ett mer nyanserat rättighetsbegrepp där du skiljer på vad rättigheter i en grupp och rättigheter generellt innebär.
Du skriver att den som har administratörsrättigheter i en grupp kan logga in som en annan användare vilket för mig verkar konstigt. Ett sådant privilegium bör inte vara knutet till en viss grupp.
Rent praktiskt så skulle jag lägga till en tabell som innehåller globala rättigheter.

Jesper TMedlem sedan nov. 20017 144 inlägg
#7

LarsG skrev:

Du skriver att den som har administratörsrättigheter i en grupp kan logga in som en annan användare vilket för mig verkar konstigt. Ett sådant privilegium bör inte vara knutet till en viss grupp.

Men det är inget pivilegium utan ett tänkbart scenario om tabellerna är uppbyggda enligt min modell. Jag vet att det brister i min struktur, men jag har svårt att komma på en vättig modell.
För, alla medlemmar kan vara med i flera grupper.
Vissa medlemmar skall kunna moderera medlemmars grupptillhörigheter och medlemmars uppgifter.

Jesper TMedlem sedan nov. 20017 144 inlägg
#8

Rent praktiskt så skulle jag lägga till en tabell som innehåller globala rättigheter

Ett kort exempel?

LarsGMedlem sedan dec. 200012 464 inlägg
#9

Men det är inget pivilegium utan ett tänkbart scenario om tabellerna är uppbyggda enligt min modell. Jag vet att det brister i min struktur, men jag har svårt att komma på en vättig modell.

Det känns som om du utgår från modellen i stället för verkligheten och det är därför som frågeställningen blir så vag.

Du får definiera vilka rättigheter som behövs i systemet och kategorisera dem. T.ex

GLOBALA
-------
Skapa grupper
Ta bort grupper
Ändra medlems uppgifter
Personifiera medlem

GRUPP
-----
Ta bort medlem
Lägga till medlem

Det kan man modellera med tre tabeller t.ex.
(jag har aldrig förstått vitsen med ungersk notation så det struntar jag i,
(varför heter inte dina kolumner colXxxx ;) ))

create table privs(
id int primary key,
name varchar(20),
description varchar(200))

create table globalPriv(
privId int references privs,
userid int references users,
primary key(privid,userid))

create table groupPriv(
groupid int references groups,
userid int references users,
privid int references privs,
primary key(groupid,userid,privid))

Om du kommer fram till att det bara behövs en typ av privilegium så räcker det med att du
har en kolumn i users-tabellen som anger det. Som sagt, hur du modellerar beror på vad du vill kunna göra.

Jesper TMedlem sedan nov. 20017 144 inlägg
#10

Tack mästareLars.
(Skall genast sluta upp med min kamelNotation) ;)

LarsGMedlem sedan dec. 200012 464 inlägg
#11

Jag säger inget ont om kamelnotation, använder den själv.

131 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)