Hjælp til design af DB

Tags:    databaser

Jeg har et spørgsmål angående design af en specifik database.

Jeg har en database som indholder følgende tabeller:

Grupper (Indeholder overordnet oplysninger omkring en gruppe)

emner (Er en specifik gruppe og har en relation til gruppe)

bruger (Er bruger der har ret til at se oplysninger omkring grupperne)

relationer (Viser hvem der må se hvad)


Brugerne kan se forskelligt alt efter hvilken relation de har, og det skal være så en bruger kan se et bestemt enme og kun det enme, mens en anden skal kunne se en hel gruppe og alle emner i denne.

Håber det er til at forstå.

Men hvordan løser jeg dette pænest, Skal jeg i tabellen relationer have en en relation til hver emne, eller kan jeg lave det smartere, da fleste der skal have adgang har adgang til en hel gruppe.




3 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Hmm....
Hvis du laver din relations table som en fordelingstabel hvor du giver brugere adgang til bestemte emner og kun emner. Det betyder at hvis en bruger har adgang til to emner, så ved du hvilke gruppe disse emner hører til og du kan vise dem til brugeren. Jeg foreslår følgende løsning:

Emne holder en fremmednøgle til en gruppe
Relation holder en fremmednøgle til emne
Relation holder en fremmednøgle til en bruger.

Det vil sige at din relation tabel ser således ud

<pre>
brugerid | emneid
---------------------
1 | 2
1 | 5
1 | 9
1 | 212
2 | 2
2 | 21
3 | 12
</pre>

Det eneste du så skal gøre er at lave en join gennem din fordelingstabel (relation) over til emne og joine videre derfra til gruppe og så vise de grupper som brugeren har adgang til samt de emner de er med i disse. Dette vil samtidig være med til at normalisere din database

Håber det giver mening



(¯`·._.·[Brian Hvarregaard]·._.·´¯)

[Redigeret d. 20/08-04 12:51:59 af Brian Hvarregaard]

[Redigeret d. 20/08-04 12:52:26 af Brian Hvarregaard]



Hvis jeg var dig ville jeg ex. lave noget a la det her:

bruger tabel:
relation id - user
2 - hans hansen
5 - jens jensen

relations tabel:
relation id - relation desc
1 - admin
2 - super user
3 - supporter
osv. osv.

Dette gør at hvis du ændre beskrivelsen af en "relation"/"bruger konti" skal du kun ændre det et sted.





Den 20-08-04 12:49 skrev Kenneth Kristoffersen følgende:
-----------------------------------------------------------------------------
Hvis jeg var dig ville jeg ex. lave noget a la det her:

bruger tabel:
relation id - user
2 - hans hansen
5 - jens jensen

relations tabel:
relation id - relation desc
1 - admin
2 - super user
3 - supporter
osv. osv.

Dette gør at hvis du ændre beskrivelsen af en "relation"/"bruger konti" skal du kun ændre det et sted.


-----------------------------------------------------------------------------

Ovenstående løsning dur ikke: Du introducerer nu en ekstra tabel der skal indeholde admin, super bruger, supporter ..... Det kan laves meget nemmere med almindelige relationer og normalisering. Dette løsningsforslag giver heller ikke mulighed for at styre emner uden at skulle tilføje nye kolonner i disse tabeller for at kuknne se hvilke emner en admin må se.......

(¯`·._.·[Brian Hvarregaard]·._.·´¯)



t