SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Entwicklung und Softwaredesign

PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 10.09.2007, 19:08:08
Benutzerbild von Socrates
Socrates Socrates ist offline
Member
 
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
Nested Sets Klasse

Morgen!

Ich habe bis vor kurzen bei Baumstrukturen in einer Datenbank immer mit dem Parentid-System gearbeitet, doch vor kurzem bin ich auch die Nested sets gestoßen.
Sie haben den Vorteil, das die Abfragen aus der Datenbank bis um das 70fache schneller sind, da man zur Abfrage keine rekursiv durchlaufenden Funktionen benötigt. Zudem kann man eine genaue Reihenfolge der Unterpunkte festlegen und relativ einfach abfragen. Da das ganze so praktisch ist und bei mir recht häufig eine Anwendung findet, habe ich beschlossen eine Nested Sets Klasse zu schreiben.

Für Nested Sets gilt im allgemeinem:
* Die Wurzel hat grundsätzlich 1 als LFT-Wert
* Die Sortierung der Knoten ergibt sich aus den LFT-Werten
* Die Anzahl der Nachfahren eines Knotens errechnet sich durch (RGT - LFT - 1) / 2.
* Entsprechend gilt für alle Knoten ohne Kinder: RGT - LFT = 1
* LFT und RGT aller Nachfahren liegen zwischen den LFT- und RGT-Werten der Vorfahren

Ich arbeite hier mit einer erweiterten Version der Nested Sets.

Die Struktur meiner zugehörigen MySQL Tabelle sieht wie folgt aus:
Code:
ID | root_id | level | lft | rgt | name
Der zugehörige SQL-Code so:
Code:
CREATE TABLE `tablename` (
  `ID` int(12) unsigned NOT NULL auto_increment COMMENT 'The unique ID of the section',
  `root_id` int(12) unsigned NOT NULL default '0',
  `level` int(12) unsigned NOT NULL default '0',
  `lft` int(12) unsigned NOT NULL default '0',
  `rgt` int(12) unsigned NOT NULL default '0',
  `name` varchar(50) default NULL COMMENT 'The section name',
  PRIMARY KEY  (`ID`)
);
Die vorläufige Struktur der Klasse sieht so aus:
PHP-Code:
<?php
    
/* Require the classes */
    
require_once('includes/DbConnector.php');
    require_once(
'includes/Validator.php');
    
    
/* The NestedSet class */
    
class NestedSet extends DbConnector
    
{
        
        
/* VARIABLES */
        
var $db;        
        
        
/* GET SECTIONS */
        
function getSections($root=null) {
        }
        
        
/* GET SECTION */
        
function getSection($id=NULL) {
        }
            
        
/* GET PATH */
        
function getPath($id=NULL) {
        }
    
        
/* SET SECTION */
        
function setSection() {
        }
    
        
/* ADD SECTION */
        
function addSection() {
        }
        
        
/* DELETE SECTIONS */
        
function deleteSection() {
        }
    
        
/* MOVE SECTION */
        
function moveSection() {
        }
        
    }
?>
Hat jemand Vorschläge oder anregungen, wie ich das ganze Ausbauen könnte? Oder ist jemand daran interessiert mir bei der Entwicklung dieser Klasse zu helfen, da er sie gerne auch verwenden möchte?

MfG, Andy
__________________
BSc. Applied Computer Science
http://www.bornageek.com
Mit Zitat antworten
  #2  
Alt 11.09.2007, 14:18:03
Eskayp Eskayp ist offline
Anfänger
 
Registriert seit: Sep 2007
Beiträge: 18
AW: Nested Sets Klasse

Ah, das hört sich interessant an. Man kann also alle Kinder auf einmal aus der Datenbank holen, ohne Rekursivfunktionen.

Allerdings bringt das auch Nachteile mit sich. Die Kinder müssen dann ja immer aufeinander folgende LFTs haben. D.h. bei Einfügen eines Knotens müssen die LFTs und RGTs und root_ids aller nachfolgenden Elemente angepasst werden, oder? Wobei Einfügen von Knoten i.d.R. seltener passiert als das Abrufen.
Mit Zitat antworten
  #3  
Alt 12.09.2007, 00:02:46
Benutzerbild von Socrates
Socrates Socrates ist offline
Member
 
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
AW: Nested Sets Klasse

Abend!

Ich finde das ganze äußerst interessant und ja das einfügen ist ein gewisser Nachteil, wobei das auch wieder einen Vorteil birgt, denn bei der normalen id-parentid-Methode kann man keine Reihenvoge der Äste auf einer Ebene festlegen. Durch die Ordnung nach lft, wird das ganze sehr einfach. Zudem ist es kein wirklicher Nachteil, da soetwas nicht lange dauert. man braucht nur die richtige Query und alles geht ganz automatisch. Du hast keine Probleme mehr. Ich fange nächste Woche mit einem Bekannten, den ich gestern kennengelernt habe, an diese Klasse zu programmieren. Wenn du dich dafür interessierst schau dir dochmal das an.

MfG, Andy
__________________
BSc. Applied Computer Science
http://www.bornageek.com
Mit Zitat antworten
  #4  
Alt 19.10.2007, 09:17:45
code_junkie code_junkie ist offline
Anfänger
 
Registriert seit: Oct 2007
Beiträge: 30
AW: Nested Sets Klasse

Also mich würde diese Klasse durchaus interessieren, vor allem, wenn sie handlicher wird als die "DB_NestedSet"-Klasse von PEAR. ;)
Meine selbstgeschusterten Nestedset Funktionen haben noch Lücken!

Gruß
Mit Zitat antworten
  #5  
Alt 18.12.2007, 13:59:49
Marilu Marilu ist offline
Member
 
Registriert seit: Apr 2003
Ort: 49.54, 8.35 - 3./9
Beiträge: 878
AW: Nested Sets Klasse

@ Socrates

> Ich fange nächste Woche mit einem Bekannten, den ich gestern kennengelernt habe, an diese Klasse zu programmieren.

Und? Was kam dabei raus?
Mit Zitat antworten
  #6  
Alt 23.12.2007, 01:31:08
Benutzerbild von Socrates
Socrates Socrates ist offline
Member
 
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
AW: Nested Sets Klasse

Abend!
Wir sind im Prinzip fertig. Müssen noch einige kleine Änderungen gemacht werden aber sonst. Kommentierung und so.
MfG, Andy
__________________
BSc. Applied Computer Science
http://www.bornageek.com
Mit Zitat antworten
  #7  
Alt 27.12.2007, 14:32:13
Opendix Opendix ist offline
Senior Member
 
Registriert seit: Oct 2004
Ort: Werdenberg / Schweiz
Alter: 35
Beiträge: 1.476
AW: Nested Sets Klasse

jaa.. kann man diese mal sehen? :)
Würd mich schon mal intressieren :)
__________________
Opendix lehnt jegliche Haftung für evtl. vorhandene Fehler in der Grammatik sowie der Satzstellung ab! Bitte wenden Sie sich an die Tastatur!

Betatester gesucht:
Skiclub Gams / CEVI Grabs
Mit Zitat antworten
  #8  
Alt 28.12.2007, 13:08:48
muejan muejan ist offline
Anfänger
 
Registriert seit: Dec 2007
Beiträge: 1
AW: Nested Sets Klasse

Hallo zusammen,

ich hatte schon fast angefangen, meine eigene "Nested Sets"-Klasse zu schreiben, bis ich diesen Post gefunden habe! :)

Wär super, wenn Ihr mal einen "Snapshot" Eurer Klasse posten könntet! (gerne auch unkommentiert...)

Danke schonmal und viele Grüße,
Jan
Mit Zitat antworten
  #9  
Alt 25.03.2008, 02:12:44
Opendix Opendix ist offline
Senior Member
 
Registriert seit: Oct 2004
Ort: Werdenberg / Schweiz
Alter: 35
Beiträge: 1.476
AW: Nested Sets Klasse

*Socrates anhau* na wie siehts aus? :)
__________________
Opendix lehnt jegliche Haftung für evtl. vorhandene Fehler in der Grammatik sowie der Satzstellung ab! Bitte wenden Sie sich an die Tastatur!

Betatester gesucht:
Skiclub Gams / CEVI Grabs
Mit Zitat antworten
  #10  
Alt 28.03.2008, 00:07:16
Benutzerbild von The Serious Sam
The Serious Sam The Serious Sam ist offline
Junior Member
 
Registriert seit: Mar 2007
Beiträge: 202
AW: Nested Sets Klasse

*nochmal hau* wills auch wissen
__________________
Ein guter Freund würde dich aus dem Knast holen.

Dein bester Freund würde neben dir sitzen und sagen, verdammt war das geil.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Kann eine Klasse in einer Eigenschaft ein Objekt, einer anderen Klasse instanzieren? Balthazzar PHP für Fortgeschrittene und Experten 6 06.07.2006 17:06:36
Klasse in Klasse aufrufen wollenschlaeger PHP für Fortgeschrittene und Experten 4 14.07.2005 14:05:32
Andere Klasse aus Klasse aufrufen NanoCyte PHP für Fortgeschrittene und Experten 22 28.06.2004 22:24:53
Blätterfunktion als Klasse! Funjoy PHP Entwicklung und Softwaredesign 0 25.06.2004 00:45:04
Methoden in Klassen includen bzw. ausserhalb der Klasse definieren darius PHP für Fortgeschrittene und Experten 6 31.12.2003 11:32:42


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:00:38 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt