IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Y en a qui connaissent les hierarchyID ?


Sujet :

Développement SQL Server

  1. #1
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut Y en a qui connaissent les hierarchyID ?
    Hello tout le monde,

    j'aurai besoin d'un ptit conseil.
    Je dois modéliser un panier de site e-commerce.
    Un panier peut contenir un ou plusieurs groupes de produit, chaque groupe peut contenir des sous-groupes ou des produits.
    Un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    - Panier 
        - Groupe
            - Groupe
                - Produit
                - Produit
            - Groupe
                - Produit
        - Groupe
            - Produit
    J'ai entendu parler des hierarchyID.
    Est-ce que ca peut résoudre mon problème ?

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    bon, j'ai ptete réussi à faire un truc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    CREATE TABLE Groupe
    ([IDGROUP] INT PRIMARY KEY NOT NULL IDENTITY,
     Name VARCHAR(255) NOT NULL,
     GroupLevel HIERARCHYID)
     
    CREATE TABLE Panier
    ([IDPANIER] INT PRIMARY KEY NOT NULL IDENTITY,
     Name VARCHAR(255) NOT NULL,
     [IDGroup] int NOT NULL, 
     constraint FK_GROUP_PANIER foreign key (IDGROUP) references Groupe (IDGROUP) )
     
    CREATE TABLE Ligne
    ([IDLigne] INT PRIMARY KEY NOT NULL IDENTITY,
     Name VARCHAR(255) NOT NULL,
     [IDGroup] int NOT NULL, 
     constraint FK_GROUP_LIGNE foreign key (IDGroup) references Groupe (IDGROUP) )
    Après, la création est un peu casse pied, mais on s'en sort avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	declare @frere HIERARCHYID
    	SELECT @frere = Max(GroupLevel)
    		FROM Groupe
    		WHERE GroupLevel.GetAncestor(1) = @parent;
     
    	INSERT INTO Groupe (GroupLevel, Name)
    		VALUES (@parent.GetDescendant(@frere, NULL), @nomGroupe)
    Après, je peux récupérer mon panier ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select *, GroupLevel.GetAncestor(1) as ancestor  from Groupe
    	Where grouplevel.IsDescendantOf(@level) = 1

  3. #3
    CUCARACHA
    Invité(e)
    Par défaut cherche tuto
    Salut,

    Je cherche un tuto en français là dessus. J'avais bossé avec Select by prior d'oracle mais ça n'a rien à voir.

    A mon avis, ça semble être de l'arbre intervallaire en capsulé dans un pseudo langage propriétaire.

    J'aimerais bien approfondir.

    ++

    Laurent

    P.S. J'ai cherché dans le fofo mais je n'ai trouvé que ce post. Les recherches Google ne permettent que de trouver des informations incomplètes

  4. #4
    Membre actif
    Inscrit en
    Février 2009
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 224
    Points : 269
    Points
    269
    Par défaut
    Je me suis également un peu penché la dessus et j'ai trouvé dans le doc en ligne la description de hierarchyId : http://msdn.microsoft.com/fr-fr/library/bb677173.aspx qui permet de mieux comprendre comment fonctionne le type.

    En second temps le petit tutoriel permet une mise en place simple: http://msdn.microsoft.com/fr-fr/library/bb677213.aspx

  5. #5
    CUCARACHA
    Invité(e)
    Par défaut Merci
    Salut,

    Merci pour ta participation, je vais regarder ça.

    ++

    Laurent

  6. #6
    Membre confirmé Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Points : 478
    Points
    478
    Par défaut
    Bonjour,

    Elle est intéressante cette problématique d'arborescence.

    J'ai l'impression que les facteurs clefs sont le nombre de sous niveaux et le ratio interrogations/mises à jour (quid pour un panier de site marchand ?).

    Avant les CTEs, il ne semble qu'on avait le choix entre une jointure récursive vite limitée par le niveau de récursion maxi de SQL Serveur et la représentation intervallaires des arborescences (Frédéric Brouard). Cette méthode est très rapide en interrogation, moins en mise à jour.

    Les CTEs permettent quand même de faire de belles choses, sans trop se prendre la tête, même si ce n'est pas aussi performant HIERARCHYID en interrogation.

    Pour le type HIERARCHYID, j'imagine que tu as lu l'article de Jean-Pierre Rhiel, qui arrive aux mêmes conclusions que toi concernant le code d'insertion, et met aussi en garde contre le coût de cette insertion.

    @+

Discussions similaires

  1. script qui explore les sous-répertoire ?
    Par farenheit dans le forum Flash
    Réponses: 9
    Dernier message: 20/07/2005, 12h02
  2. Un logiciel qui traduit les langages évolués vers l'asm
    Par Cygnus Saint dans le forum Assembleur
    Réponses: 6
    Dernier message: 13/06/2005, 09h02
  3. Marché de l'emploi qui pete les plomb
    Par Blo0d4x3 dans le forum Emploi
    Réponses: 27
    Dernier message: 07/03/2005, 11h25
  4. Recherche programme qui convertit les chiffres arabes en nb
    Par oli57 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 15/06/2002, 03h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo