2010-05-16 2 views
2

Actuellement dans mon application, j'ai une seule table qui me pose un problème. Le problème est que j'ai un objet valeur qui est mappé à cette table. Lorsque les données me sont renvoyées sous la forme d'un tableau d'objets valeur, je dois ensuite parcourir ce tableau et commencer ma récurrence en faisant correspondre l'ID Parent à l'ID Object parent.Meilleure conception de structure de données

La colonne ParentID est null (agit comme un parent) ou contient la valeur d'un ObjectID.

Je sais qu'il doit y avoir une meilleure façon de créer cette structure de données afin que je n'ai pas besoin de faire de boucles récursives pour faire correspondre les ParentID avec leurs ObjectID.

Toute aide avec ceci est grandement appréciée.

Voici le tableau en forme décrire:

+----------------+------------------+------+-----+---------------------+-----------------------------+ 
| Field   | Type    | Null | Key | Default    | Extra      | 
+----------------+------------------+------+-----+---------------------+-----------------------------+ 
| ObjectID  | int(11) unsigned | NO | PRI | NULL    | auto_increment    | 
| ObjectHeight | decimal(6,2)  | NO |  | NULL    |        | 
| ObjectWidth | decimal(6,2)  | NO |  | NULL    |        | 
| ObjectX  | decimal(6,2)  | NO |  | NULL    |        | 
| ObjectY  | decimal(6,2)  | NO |  | NULL    |        | 
| ObjectLabel | varchar(255)  | NO |  | NULL    |        | 
| TemplateID  | int(11) unsigned | NO | MUL | NULL    |        | 
| ObjectTypeID | int(11) unsigned | NO | MUL | NULL    |        | 
| ParentID  | int(11) unsigned | YES | MUL | NULL    |        | 
| CreationDate | datetime   | YES |  | 0000-00-00 00:00:00 |        | 
| LastModifyDate | timestamp  | YES |  | NULL    | on update CURRENT_TIMESTAMP | 
+----------------+------------------+------+-----+---------------------+-----------------------------+e 
+0

Utilisez-vous SQL Server? Si tel est le cas, SQL Server 2005 dispose de structures permettant de traiter les structures de données hiérarchiques. Vous pouvez créer une expression de table commune à interroger d'une manière récursive. – RMorrisey

+0

Je n'utilise pas SQL Server, j'ai déjà utilisé des CTE auparavant. J'utilise MySQL. – Tempname

Répondre

2

Vous pouvez utiliser un modèle de jeu imbriqué. Voir la très bonne explication ici: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

+0

Le problème avec cet exemple, c'est que je suis limité au nombre d'enfants que je sélectionne. Dans mon développement actuel, je dois maintenir le concept selon lequel n'importe quel parent peut avoir un nombre infini d'enfants. – Tempname

+1

@Tempname: Hmmmm ... Je ne comprends pas le problème. Vous pouvez utiliser un ensemble imbriqué avec une quantité infinie d'enfants. Je ne l'ai pas utilisé avec plus de 100-150 articles, mais je ne vois pas pourquoi vous ne pourriez pas. – nico