phpbar.de logo

Mailinglisten-Archive

[php] Benutzer und Gruppen f

[php] Benutzer und Gruppen f

Enrico Weigelt php_(at)_phpcenter.de
Mon, 25 Feb 2002 14:04:37 +0100


On Mon, Feb 25, 2002 at 01:22:50PM +0100, Bjoern Schimpf wrote:

<snip>
> nein, da ich die gruppenzugehörigkeit frei vergeben kann, gibt es beliebig
> viele. Ich habe z.B. die oben genannten Gruppen, und x Benutzer, von denen
> jeder jeder Gruppe angehören kann (theoretisch, praktisch machts keinen
> sinn). In jedem Knoten kann ich jetzt festlegen, was Mitglieder der
> einzelnen Gruppen machen dürfen. Jeder Benutzer darf aber nur unterhalb
> seiner Parent-id mit den Gruppenrechten agieren, ansonsten ist er
> anonym.
hmm, ja, funktioniert. hat nur den nachteil (oder vorteil?), dass man halt
rechte in parent-nodes in child nodes nicht mehr weggnommen bekommen kann.

> > kennst du eine variante, baumstrukturen mit vererbung effizient in sql
> > unterzubringen ?
> leider nein
hab nen weg gefunden: (math. erklaerung)

#1: ein knoten B ist kindknoten von A, wenn er direkter oder indirekter
    kindknoten von A ist.
#2: ein knoten B ist direkter kindknoten von A, wenn es eine kind-relation
    zwischen A->B gibt.
#3: ein knoten B ist indirekter kindknoten von A, wenn es einen knoten C
    gibt, sodass gilt: C ist direkter kindknoten von A, B ist kindknoten
    von C. (geht auch andersrum)

in prolog laesst sich sowas mit zwei zeilen definieren, in SQL ist das 
schon schwerer, zumindest postgres verlangt bei create function, dass
die query ausfuehrbar ist, also alle verwendeten funktionen bereits
existieren. somit scheint rekursion unmoeglich.

allerdings gibts einen trick ueber eine wrapper-funktion. 

#1: wrapper-funktion anlegen (gleicher syntax wie rec.fnc, tut aber nix)
#2: recursive funktion anlegen, statt selbstaufruf wrapper-aufruf.
#3: wrapper droppen und neuen schreiben, der 1:1 die rec. funktion aufruft.

<snip>
> die vererbung braucht bei baumstrukturen immer so viel ressourcen :-(
laesst sich mit rekursion relativ unproblematisch loesen. 

im uebrigen kann man effektive permissions auch cachen, indem man eine 
zusaetliche spalte dafuer einfuehrt, die dann via rule oder trigger
beim schreiben automatisch generiert wird. kann man im normalfall auch
komplett innherhalb der db machen.

<snip>
> > das ist mist. funktioniert naemlich nur dann, wenn man die ids
> > seriell zuordnet ...
> 
> sollte kein problem sein, da die auto-increment-werte immer erhöht
> werden. beim verschieben eines Eintrags muss ich im Notfall
> (falls neue pid > id) den gesamten eintrag löschen und mit
> neuer id wiederherstellen.
auto-increment ? ist das sowas wie bei psql sequences ?
 
> Ich habe lange nach Lösungen für die Baumstrukturen gesucht.
> Ideal wäre es, ganz in xml zu arbeiten und xpath zur
> auswahl zu verwenden, aber da ist php meiner Meinung nach
> noch nicht weit genug. XPATH zum Adressieren von DOM ;-)
kennst du dich mit dem XML-krams aus ? wuerde mich mal interessieren.

btw ist sql fuer baumstrukturen doch geeignet. nachweis haette
ich ja oben erbracht.


~-n

--
 Enrico Weigelt    ==   meTUX IT services 
 software development, IT service, internet security solutions
 www:     http://www.metux.de/        phone:     +49 36207 519931
 email:   contact_(at)_metux.de            cellphone: +49 174 7066481


php::bar PHP Wiki   -   Listenarchive