2010-08-10 4 views
0

Mon application utilise une sorte de "dossiers virtuels", j'ai donc besoin de stocker l'arborescence dans la base de données. Le tableau contenant les données est assez simple, il dispose de 3 colonnes:racine dans la structure arborescente avec des clés étrangères auto-référencement

  • id_folder (int, clé primaire)
  • id_parent (int, références id_folder)
  • FOLDER_NAME (string)

Ma question est: quelle est la meilleure façon de mettre en œuvre la racine?

  1. Rendre id_parent Nullable; la racine sera le dossier avec id_parent = null, ou
  2. En faisant du dossier son propre parent, c'est-à-dire id_folder = id_parent.

Merci.

Répondre

0

Je soutiens pour l'option 1.

Si vous choisissez l'option 2, votre logique pour l'affichage des sous-dossiers aurait besoin pour des contrôles confus faire en sorte que le id_folder et id_parent ne correspondent pas.

Option 1:

SELECT * --don't kill me for using *, it's just for an example 
FROM Folders 
WHERE id_parent = @folderId 

Option 2:

SELECT * --don't kill me for using *, it's just for an example 
FROM Folders 
WHERE id_parent = @folderId AND id_parent <> id_folder 
+0

Merci pour votre réponse – manolowar

0

Cela dépend vraiment si vous avez des exigences supplémentaires. J'aime NULL, car cela a un sens logique, mais d'autres exigences peuvent nécessiter autre chose.

Questions connexes