Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2215 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [merise] Probleme d'heritage, MCD et sgbd mysql..

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[merise] Probleme d'heritage, MCD et sgbd mysql..

n°1527532
harlem
Posté le 12-03-2007 à 18:54:05  profilanswer
 

Voila j'ai modélisé en MCD ma base, et j'ai une entité generique "MEDIA" qui comportes les caracteristique commums(id, type..) et des sous_type qui heritent de cet entité generique tels que "VIDEO", "IMAGE", "SONS" qui disposent des caracteristiques propres d'ou le recours à l'heritage.
 
Mais le probleme c'est que lorsque je transpose pas ma base sous mysql, et que j'insert une ligne dans la table "VIDEO"(id=1 pour la premiere insertion car c'est en auto-increment), la table generique "MEDIA" ne se met pas à jour automatiquement, donc il peux bien y avoir des "id" identiques dans les trois tables hérités(video, image, sons).
 
Comment doit-je proceder pour regler le probleme? C'est à dire n'est pas le SGBD qui doit regler ça tout seul? ou dois-je obligatoirement le faire dans l'application appelant?

mood
Publicité
Posté le 12-03-2007 à 18:54:05  profilanswer
 

n°1527535
nucl3arfl0
Better Call Saul
Posté le 12-03-2007 à 19:11:51  profilanswer
 

Je pense (mais je n'en suis pas sûr) que ça viendrait au format de ta base.
Tu est en MyISAM ou en InnoDB ?
MyISAM ne respecte aucune contrainte d'intégrité.
 
Edit: je pense que tu dois créer tes tables en format InnoDB et rajouter les contraintes qui vont bien ;)


Message édité par nucl3arfl0 le 12-03-2007 à 19:12:33
n°1527593
harlem
Posté le 12-03-2007 à 21:42:22  profilanswer
 

MyISAM ou en InnoDB ?  
 
Je ne connais pas ces termes du tout lol, comment faire pour la créer en innodb, en faite je l'a crées sous phpmyadmin.
 
En faite j'ai pas spécialement besoin qu'il vérifie tout les contraintes etant donné que je sais ce que je fais en php, ce que je voudrait c'est qu'il fait bien la corespondance entre l'id de la table générique et de l'id des trois tables hérités. En gros que l'auto_increment se fait par rapport à la table générique.

n°1527596
nucl3arfl0
Better Call Saul
Posté le 12-03-2007 à 21:48:41  profilanswer
 

Alors ton MLD tu l'as fait toi même à la main ou tu l'as fait avec un script ?
Par exemple, Windesign te permet de générer le script SQL selon le SGBDR utilisé.
Je dis ça, parce que je connais pas la syntaxe de contraintes à utiliser dans le cas d'un héritage.  
 
Une chose est sûre, c'est que ces contraintes ne sont pas du tout respectées sur les tables au format MyISAM (normalement, quand tu cées dans phpmyadmin, tu peux choisir le format).
C'est dans la liste "Moteur de stockage". Là tu peux choisir divers format notamment MyISAM et InnoDB (MyISAM est par défaut).
 
Donc tu crées en prenant le format InnoDB. Ensuite, je pense que tu dois créer tes CONSTRAINTS pour l'héritage, et ça devrait marcher.

n°1527618
harlem
Posté le 12-03-2007 à 23:29:14  profilanswer
 

Bah justement j'ai generer automatiquement le script à partir du MCD dans windesign, je suppose qu'il doit bien y avoir une option donc...
 
A defaut je ferais comme tu me le dis dans phpmyadmin...
 
Quand tu dis creer les CONSTRAINTS, c'est avec des triggers??
 

n°1527656
nucl3arfl0
Better Call Saul
Posté le 13-03-2007 à 07:39:38  profilanswer
 

Alors si tu as créé le script via Windesign, je pense (mais je ne suis pas totalement sûr) que tu as déjà tout ce qu'il faut pour l'héritage et les contraintes. Maintenant il faut bien évidemment que tu ais correctement fait ton MCD avec les contraintes d'intégrités.
 
Faut juste que tes tables soient en InnoDB.

n°1527854
harlem
Posté le 13-03-2007 à 14:02:23  profilanswer
 

Ok merci  :)

n°1528810
MagicBuzz
Posté le 15-03-2007 à 11:21:13  profilanswer
 

VIDEO, SON et IMAGE ont énormément d'informations redondantes.
 
Donc tu ne fais qu'une seule table MEDIA, avec comme clé "ID, TYPE_MEDIA". TYPE_MEDIA est un énum qui permet de différencier les vidéos, sons et images.
 
La table MEDIA contient la liste de tous les champs nécessaires à stocker chacun des types.
 
Genre :
nom_fichier (commun)
auteur (commun)
résolution (image + vidéo)
bitrate (son + vidéo)
 
C'est de loin la solution la plus simple et la plus propre.
 
Si tu utilises un SGBD objet, alors tu peux effectivement "étendre" ta table MEDIA en fonction de son contenu. Pour ce point, je ne peux pas t'en dire plus, je n'ai jamais essayé (et je ne suis qu'à moitié convaincu par l'utilité de la chose)

n°1529279
harlem
Posté le 16-03-2007 à 01:58:56  profilanswer
 

Merci pour ton point de vue, je vois que tu à l'ai calé en sgbd.
 
Je pense que je vais opter pour ta solution parcque je rame toujours pour generer le scrip en innodb.
 
Voila ce que je veux faire en gros :  
 
http://md.dia.free.fr/mcd.JPG
 
Finalement c'est pas SONS mais texte, mais pourquoi : comme clé "ID, TYPE_MEDIA" et non seulement le id?

n°1529280
harlem
Posté le 16-03-2007 à 02:15:02  profilanswer
 

Voila j'ai essayé de reediter, voila ce que ça donne :  
 
http://md.dia.free.fr/mcdv2.JPG
 
Donc le probleme c'est pour l'entite "COMMENTAIRE_MEDIA" qui disposent des clés entrengeres de l'entité media et texte ce qui posera probleme surtout qu'elle est relative. Ou me conseil tu de refaire une autre table de commentaire comme "COMMENTAIRE_TEXTE" pour l'entité texte afin d'eviter ce probleme?

mood
Publicité
Posté le 16-03-2007 à 02:15:02  profilanswer
 

n°1529281
lkolrn
<comment ça marche?>
Posté le 16-03-2007 à 02:34:47  profilanswer
 

MagicBuzz a écrit :

VIDEO, SON et IMAGE ont énormément d'informations redondantes.
 
Donc tu ne fais qu'une seule table MEDIA, avec comme clé "ID, TYPE_MEDIA". TYPE_MEDIA est un énum qui permet de différencier les vidéos, sons et images.
 
La table MEDIA contient la liste de tous les champs nécessaires à stocker chacun des types.
 
Genre :
nom_fichier (commun)
auteur (commun)
résolution (image + vidéo)
bitrate (son + vidéo)
 
C'est de loin la solution la plus simple et la plus propre.

C'est surtout la plus correcte... [:aloy]
Pour la clé primaire, ID suffit, c'est une valeur unique auto-incrémentée apparemment.
 
Sinon c'est quoi ton entité "Texte" ? Un media ou un commentaire ? :pt1cable:  
 
PS : renomme tes attributs stp... Aucun intérêt à appeler tes attributs "num_aut", "login_aut", "mdp_aut" quant ils appartiennent tous à l'entité Auteur, même plus tard pour écrire tes requêtes. Soit tu connais le modèle sur lequel tu bosses, soit tu le connais pas.

n°1529424
harlem
Posté le 16-03-2007 à 12:08:39  profilanswer
 

Texte c'est du texte(poési, un extrait de roman etc..) qui fait aussi l'objet de commentaire.
 
LE probleme c'est que la table commentaire_media est relatif à deux table distincte!! Comment faire?

n°1530798
lkolrn
<comment ça marche?>
Posté le 19-03-2007 à 21:24:23  profilanswer
 

Considérer Texte comme un média, ce qui est le cas (au même titre que son/image/vidéo)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [merise] Probleme d'heritage, MCD et sgbd mysql..

 

Sujets relatifs
Problème de bouton animéServlet se connectant à MySql ?
problème de résolution video dans navigateur.[HTML] Probleme avec Border & Image
[php]Problème de parametreProbleme intégration de JDIC
problème de comptageun probleme dans mon code ?
Problème avec GDprobleme avec dblookupcombobox (probleme2)
Plus de sujets relatifs à : [merise] Probleme d'heritage, MCD et sgbd mysql..


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR