DB-struktur for bedrift, bruker og lisens

cawebb

New Member
Hei,

Jeg lager en nettside for bedrifter med ansatte. For at bedriftens ansatte skal kunne bruke systemet, må bedriften kjøpe lisens og tildele en ansatt (bruker/user).

Produktene er egentlig tilgang til en gruppe moduler i systemet. F.eks:
Produkt 1 (tilgang til noe): Modul 1, Modul 2, Modul 3.
Produkt 2 (tilgang til alt): Modul 1, Moldul 2, Moldu 3, Modul 4, Modul 5.

Lisensen eies av bedriften, men en bruker må ha den for å få den tilgangen den skal ha.

I dette tilfelle er jeg litt usikker på den beste måten å strukturere databasen.

Hadde satt pris på innspill / kommentarer på den strukturen jeg har skissert i bildet under og eventuelt hvordan jeg kunne gjort det annerledes/enklere. (ikke bry deg om kolonnen "nullable"). Skissen er gjort med Sea Quail Database Diagram som er et ganske enkelt program.

image.gif
 

mra

Active Member
Databaseteknisk er dette den korrekte måten å gjøre det på, og tabellene er vel så langt jeg kan se normalisert til 3NF. Rent praktisk blir spørsmålet kanskje hvor ofte du har behov for å sjekke lisensen til en bruker, men kan du bare sjekke dette når brukeren logger inn og så ellers hive alt i en session eller noe, så tror jeg dette er en grei måte å gjøre det på.
 

cawebb

New Member
Det er bra å høre. Har ikke hørt om 3NF tidligere, så det skal jeg lese litt på.

Det eneste "spørsmålet" kan kanskje være at licenses er knyttet til både companies.id og users.id, men dette må vel være helt nødvendig ettersom company fortsatt vil eie lisensen dersom tildelingen til user fjernes (og også før en license tildeles)?

Praksis som vil være her er at en user med admin kjøper f.eks 10 licenses for company, også legger admin til ny user (ansatt) en etter en og tildeler en license. Det vil også være mulig å legge til ansatt uten lisens, og da uten tilgang til nettsiden funksjoner.

Jeg tenker å lagre license og expire (for license) i en session ved innlogging og en enkel PHP-snutt som sjekker expire dato opp mot dagens dato. (avhenger litt av varigheten på session).
 

cawebb

New Member
Jeg sitter stadig å funderer på den beste løsningen for å håndtere licenses.

Nedenfor er et bilde av en annen mulighet jeg har tenkt på.

Med dette oppsettet vil eventuelt company kjøpe kun en license på et product med et X antall. Skjønner du tegning/oppsettet her? Trur du et slikt oppsett er enklere eller vanskeligere å håndtere?

Et firma (company) skal kunne legge til brukere som ikke har license også, for diverse føringer på den ansatte (user), og denne ansatte skal da ikke ha tilgang til nettløsningen.

Jeg har også gjort noen endringer i tabellene companies og users fra forrige gang som jeg mener er riktige endringe/tillegg. Eneste ekstra jeg skal ta med på users er en ekstra rad; users.active (mulig empty license_id kan fungere som inactive).
db2.gif
 
Topp