Mailinglisten-Archive |
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