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

 MySQL Discussion :

hiérarchie sur une table et contrainte associée


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Par défaut hiérarchie sur une table et contrainte associée
    Bonjour à tous,

    Débutant, j'essaie de mettre en place une arborescence de catégories et de sous catégores.

    Dans une base de donnée de type MySql, je souhaiterais utiliser une seule table 'categorie' avec une relation enfant-parent. Il s'agit d'une table de type InnoDB, car je souhaite utiliser des contraintes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE `categorie` (
      `id_categorie` int(20) NOT NULL default '0',
      `libelle` varchar(100) NOT NULL default '',
      `parent_categorie_id` int(20) default '0',
      PRIMARY KEY  (`id_categorie`),
    ) TYPE=InnoDB;
    Je voudrais également utiliser le framework hibernate pour la persistance, je souhaiterais générer les fichiers de mapping automatiquement à partir de la table 'categorie' en question (ide MyEclipse).

    Pour gérer la mutiplicité des associations, (many-to-one....), MyEclipse se base sur les contraintes d'intégrités décrites dans la base.

    J'aimerais donc indiquer dans ma table, qu'il existe une association entre la catégorie enfant et la catégorie parent.

    Seulement, je n'arrive pas à créer une telle contrainte malgré de nombreux essais...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ALTER TABLE 'categorie' 
      ADD CONSTRAINT `cat_FK` 
        FOREIGN KEY (`parent_categorie_id`) REFERENCES `categorie` (`id_categorie`)
        ON DELETE CASCADE ON UPDATE CASCADE;
    Merci beaucoup si vous pouvez me donner une idée...
    ps: question de base, cela devrait-être possible une telle relation récursive dans une bd?

    A bientôt!


  2. #2
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    C'est l'inverse, puisque une foreign key a besoin de pointer vers un element qui existe.
    Si tu fait ta contrainte du pere vers le fils, tu poura ajouter un pere que si un fils existe.
    Bien evidement ca devrait marcher si ta base est vide, mais si ce n'est pas le cas, alors au moment ou tu ajoute ta contrainte les donnée ne les respectent deja plus, et tu te prend une erreur mySQL.

    Tente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ALTER TABLE 'categorie' ADD CONSTRAINT `cat_FK` FOREIGN KEY (`categorie_id`) REFERENCES `parent` (`parent_id_categorie`)
    ON DELETE CASCADE ON UPDATE CASCADE;
    PS : pense aux balises CODE

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Par défaut
    Merci beaucoup Kazou pour ta réponse!
    Je vais tester ta solution proposée...
    Bonne journée!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/07/2011, 16h49
  2. Appliquer une contrainte unique sur une table existante
    Par zooffy dans le forum Développement
    Réponses: 3
    Dernier message: 24/05/2011, 15h28
  3. Contrainte sur une table reflexive
    Par MartinezGarcia dans le forum Requêtes
    Réponses: 7
    Dernier message: 12/11/2010, 14h03
  4. [MLD] Question sur une table associative
    Par stargatejojo dans le forum Schéma
    Réponses: 9
    Dernier message: 15/10/2009, 16h57
  5. Modifier une contrainte sur une table InnoDb
    Par DomZZZ dans le forum Outils
    Réponses: 1
    Dernier message: 13/03/2006, 14h40

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