Hej hej
Jag ska bygga upp ett rättighetssytem till en ny sajt.
Typ:
1. skriva nyheter
2. administrera sidor
3. administrera personer
o.s.v.
Jag vill ju helst bara ha en post i rättighetstabellen per person, helst så att man kan lägga vilka rättigheter personen har i en sessions variabel.
Någon som vet något bra system/sätt? Man vill ju inte bygga in sig i någe hörn.
Kan man kanske lägga någe slags array med alla rättigheter i en sesionsvariable? Sen kan man väl loopa igenom dem när man ska kolla behörigheten?
Skulle behöva en knuff i rätt riktning... :)
/Grodan
Är ett bra sätt att kanske separera de olika behörigheterna en person har med typ en punkt '.'? T.ex. '1.3.2'.
Sen kan man väl explodera detta och lägga in variablerna i en array i en sesseionsvariabel?
E jag på helt fel linje? :q
/Grodan
Nopps, jag tycker inte det är något lämpligt sätt. Vill du ändra ett värde i listan blir det gensat problem.
Dela upp informationen om användarna i olika tabeller enligt de normaliseringsregler som finns för databasstruktur.
Information från ett av mina tidigare inlägg, citerar mig själv:
Hej, det finns tre ganska enkla regler om normalisering vid uppbyggnad om en databas. Dessa 3 regler skapades av en person vid namn Codd på 70-talet. Genom att ta hänsyn till dessa tar datan oftast mindre plats plus att det blir enklare att hämta ut rätt data.
*** First normal form (1NF) ***
Är en tabell normaliserad till första graden saknar den flera kolumner som innehåller samma information.
Istället för en mastodonttabell struktureras tabellen till flera mindre. Vilket ofta leder till att information kan ändras utan att information raderas eller att det blir nödvändigt att bygga om tabellstrukturen.
*** Second normal form (2NF) ***
Är en tabell som är normaliserad till första graden och alla kolumner som inte är nycklar är helt och fullt beroende av nyckelkolumnen
Vilket gör att datan kan kategoriseras på ett effektivt sätt i olika tabeller. Information kan läggas till och tas bort utan att påverka andra data.
*** Third normal form (3NF) ***
Är en tabell som är normaliserad till andra graden och förbättrad så att inga tabeller innehåller information som berör mer än en sak.
Vilket gör att tabellerna kan utökas och lagra mer information om en viss kategori än man från början hade tänkt sig. En kontrollerad tillväxt på databasen är mer eller mindre säkrad beroende på hur noggrant man gjort normaliseringen.
Mmm, hänger med.
Problemet är ju att jag vill veta all rättigheter som personen har i en variabel jö.
Så personen kan t.ex. lägga till en nyhet (behörighet 1), men om han oxå har behörighet 4 så kan han radera nyheten med... (hmm, kanske inte det bästa av exempel men ni fattar vad jag menar). Att jag får med allt i en variabel.
Ifall jag vill redigera ibland personens rättigheter så exploderar jag variablen (t.ex. då 1.3.2.4) lägger de värden i en multiselectbox där jag kan lägga till och dra ifrån värden som jag sedan lagrar om i db:n.
Kan det strula menar du? :q
/Grodan
Jag e antagligen kass, men blir inte tabellerna normaliserade ändå?
tblPersoner
persId [nyckel]
persAnvandarid
persLosenord
persFornamn
persEfternamn
o.s.v. ...
tblPersonerRattighet
persrattighetId (t.ex. 1.3.2) [nyckel]
persId (t.ex. 334) [nyckel]
När personen loggar in lägger man bl.a. rattighetId som en array i en sessionsvariabel så att jag får med mig vilka rättigheter personen har hela tiden.
Förstår inte meningen att dela upp rättigheterna i olika tabeller? :q
Sorry för min okunnighet :r
/Grodan
Jo, det ser bra ut. Jag uppfattade dig som om du hade allt i samma tabell. Men nu har du ju rättigheterna i en egen.
Därför ser jag inget problem att ha en egen kolumn för var rättighet i tabellen tblPersonerRattighet istället för att ha en punktseparerad sträng.
mvh Jörgen HP :)