Grupper i grupper - perfekt algoritme ?
Jeg grubler over en udviddelse af adgangssystemet i mit community-halløj.Adgang til "noget" gives til ét iD: en person eller en gruppe.
Grupperne styrer brugerne selv, og de indeholder selvfølgelig personer.
Men, "fladt" som det er, ryger man let ud i et virvar af næsten ens grupper og lange navne : (
Så jeg ønsker at grupperne også kan indeholde andre grupper.
F.eks:
Adgang til "min have" gives til gruppen Alle_jeg_kender.
Alle_jeg_kender har 2 medlemmer:
Familien: Blandet gruppe med 3 medlemmer
Konen: person (vist nok)
Ungerne: gruppe med 3 medlemmer (alle personer)
De_gamle: gruppe med 2 medlemmer (begge grupper)
Mine_rødder: Gruppe (5 personer)
Svigermekanikken: Gruppe (72 personer + 19 grupper - et mareridt i skal spares for!)
Vennerne: gruppe med 2 medlemmer (begge grupper)
Skolekammerater: gruppe med 20 medlemmer (alle personer)
Kollegaer: gruppe med 2 medlemmer (begge grupper)
Soldaterkammerater: Gruppe 48 personer (biologisk set)
Arbejdskollegaer: gruppe af grupper
Det_gamle_job: 8 personer
Firmaet: 2 grupper
Cheferne: personer
Medarbejdere: 3 grupper
Sælgere: 9 personer
Supportere: 4 personer
Udviklere: 2 grupper...
....
....
Altså en "bundløs" træstruktur (hvor der KAN eksistere "loops")
Jeg har en lumsk mistanke om at andre har løst denne udfordring.
- og at det kan løses både skidt, godt og Perfekt : )
I øjeblikket (uden grupper i grupper) har jeg to tabeller:
dbGruppe: GruppeID, gruppenavn...
dbMedlem: GruppeID, PersonID
Der er basalt 3 opgaver:
#1: Er personX medlem af gruppeY ?
#2: Hvilke grupper er personX medlem af ?
#3: Hvilke personer er medlem af gruppeY ?
Så der bliver tale om nogle rekursive funktioner (med et global array (imod loops)).
- Men jeg er i tvivl om den en bedste tabelstruktur:
Som nu, men tillade GruppeID'er i PersonID-feltet (kan skelnes middelbart)
Eller om jeg skal indføre en ny Grupper_i_gruppe tabel...
Gode ideer/indsigt/erfaringer/algoritmer (links til)?