|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité de passage
![]() Chef de projet en SSII Inscription : mai 2011 Messages : 11 ![]() |
Bonjour,
J'ai cherché un peu sur le forum, mais je n'ai pas vraiment trouvé de solution à mon problème. Seulement un sujet s'y rapprochant sur les intervalles. Je vous explique : Je souhaite créer des groupes, pouvant inclure d'autres groupes. A la condition qu'un groupe ne puisse pas se contenir lui-même, et bien sûr qu'un groupe inclus dans un autre ne puisse jamais pouvoir contenir celui dans lequel il est déjà contenu directement ou indirectement. Voila ce que j'ai sorti comme bout de code, mais j'obtiens l'erreur 1415.... Code :
Pour pouvoir donc entrer des données dans la table inclusion, il me faut donc faire un petit contrôle par rapport à la logique d'inclusion: Code :
Par ailleurs, faut-il pour ce besoin un trigger ou une procédure ? Code :
|
||||||
|
|
00
|
|
|
#2 | ||
|
Membre régulier
![]() Inscription : décembre 2008 Messages : 64 ![]() |
Bonjour,
Première chose, l'erreur 1415 signifie que l'ordre : dans le trigger est interdit. µUn trigger ne peut par retourner de resultset. Pour ça, en attendant mieux, je te conseille de mettre : la fonction appelée n'existant pas, ça fera échouer l'insertion. Deuxième chose : Il y a une erreur dans ton trigger : Code :
Le problème posé est un problème de relation transitive ou relation d'ordre, et c'est un problème qui est tout sauf trivial. Peut-tu déjà restreindre le problème en ne permettant pas que 2 groupes incluent un troisième sans que l'un des deux premier soit inclus d'ans l'autre ? Autrement dit qu'il n' ait pas de "sibling" ? Après, selon la volumétrie, différents axe sont possibles : as tu un nombre max de groupe fixé ? si oui combien ? est-ce que tous les groupes sont créés au départ, ou bien y en aura-t-il de nouveaux par la suite. Plus le périmètre est précis, plus on a de chance de trouver une solution adaptée (et viable en perf) En espérant que ça fasse un peu avancer Cordialement |
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Chef de projet en SSII Inscription : mai 2011 Messages : 11 ![]() |
Bonjour semaphore1984,
Merci pour la reponse. En ce qui concerne la syntaxe mysql, corrigé. Par contre toujours pas trouvé de solution au problème que j'ai du contourner autrement avec un autre modèle. Les groupes ne sont pas tous créés dans mon cas d'utilisation, difficile de prévoir à l'avance le nombre de groupex a inclure dans un autre.... merci. J’espère que d'ici là, on aura le moyen d'avoir une set de resultat. bonne journée |
|
|
00
|
|
|
#4 |
![]() ![]() |
La structure de tes groupes est-elle purement hiérarchique, tel que ci-dessous ?
G1 |-G1.1 |-G1.2 G2 |-G2.1 G3 |-G1.2 <== Impossible ! Ou bien un groupe peut-il appartenir à plusieurs groupes de même niveau comme le groupe G1.2 dans mon exemple dit impossible ci-dessus ? Si c'est purement hiérarchique, regarde l'article de SQLPro sur la modélisation d'arbre par représentation intervallaire.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
10
|
|
|
#5 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Un des nombreux problèmes avec MySQL, c'est qu'il n'implémente pas les contraintes CHECK (même s'il laisse passer la syntaxe, il n'effectue aucune vérification de cette contrainte, ce qui est encore plus frustrant
).Du coup, là où une simple contrainte aurait suffi (vérifier que dans chaque ligne d'inclusion, id_groupe et id_groupe_inclus sont différents), ça devient une usine à gaz .
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
|
|
#6 | |
![]() ![]() |
Citation:
Gratuit : Postgresql Gratuit mais limité et uniquement sous Windows : SQL Server
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Chef de projet en SSII Inscription : mai 2011 Messages : 11 ![]() |
Merci à vous pour vos retours.
J'ai modélisé autrement ma base sans changer de SGBD. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com