Mysql : Question sur les relations

Mysql : Question sur les relations - SQL/NoSQL - Programmation

Marsh Posté le 16-01-2012 à 13:59:08    

Bonjour à tous.
 
En vu de préparer mon nouveau projet professionnel, je suis en train d'établir les schéma fonctionnel et conceptuel. Et j'en suis à me poser une question que je n'ai jamais pensé à la problématique avant.
 
Je viens de configurer mon Mysql de façon à bien prendre en compte les clé étrangère est les suppression en cascade dans le cas d'une liaison genre 1:n.
Cependant j'en viens à me demander dans le cas suivant  
2 table : 1 auteur et 1 article
 
Nous sommes d'accord qu'un auteur peut avoir plusieurs article, de ce fait une clé étrangère id_auteur sera présente dans la table article en relation avec la table auteur pointant sur l'id de celle ci.
Grâce à cette id de l'auteur nous avons donc à notre disposition le nom / prénom enfin tout le tralala des informations associées.
 
Cependant si un jour l'auteur d'un ou plusieurs articles déjà présente en BDD se voit pour une raison ou pour une autre supprimer de la base de donnée, l'id de l'auteur enregistrer dans la base de donnée ira pointer vers un auteur inconnu et la vient le problème.
 
Comment vous vous gérer cela ? J'ai pris un exemple auteur / article mais cela peut très bien être tout autre style de cas.
 
J'aurais tendance à dire de ne JAMAIS supprimer un auteur et seulement le désactiver (ce que je fais habituellement dans mes table j'ai toujours un champs active que je passe à 0 ou 1 pour désactiver ou activer un champs). Mais doit bien y avoir d'autre solution et je voudrais bien savoir donc comment vous gérez cette problématiques
 
Car dans le cas de table Article / commentaire aucun soucis je met une contrainte si l'article est supprimer ou supprime en cascade tous les commentaires liée ce qui est normal, mais dans le cas auteur / article cela ne fonctionne pas pareil.
 
merci par avance d'éclaircir cette zone d'ombre.
 
Cordialement
 
Guillaume

Reply

Marsh Posté le 16-01-2012 à 13:59:08   

Reply

Marsh Posté le 16-01-2012 à 14:01:56    

on ne supprime pas les infos si elles peuvent etre utiles, et pouvoir connaître l'auteur d'un article est utile pour toute la vie de l'article.
Donc tu ajoutes une colonne actif

Reply

Marsh Posté le 16-01-2012 à 14:24:54    

Merci d'avoir répondu donc ce que je faisais jusqu'à maintenant est correcte
 
cependant maintenant vient une question technique si je reprend l'exemple article / auteur / commentaire. (Exemple bidon pour me familiarisé)
 
Cela donne cela pour le moment
 
http://img337.imageshack.us/img337/7633/84143941.jpg
 
On voit bien que la liaison article / commentaire à générer une clé étrangère et dans le code sql il y à bien a liaison
 
pour la table commentaires

Code :
  1. KEY `commentaire_FK` (`articles_id`)


 
mais dans la table article aucune relation FK n'est mentionné, alors que la liaison est bien présente sur le schéma et que l'id de l'auteur est bien en (FK) mais lors de la génération du SQL elle n'y est pas.
 
une explication ?  
Ai je oublier quelque chose ?

Reply

Marsh Posté le 16-01-2012 à 14:50:49    

c'est lié a ton outil
tu as testé mysql workbench ?

Reply

Marsh Posté le 16-01-2012 à 14:59:36    

J'utilise DB Designer 4
et non pas tester mysql Workbench j'avoue que je connais pas trop les outils de modélisation.
 
D'ailleur c'est un peu un domaine que je laissais de coté (sans forcement le vouloir) car souvent projet demander à la va vite, sans cahier des charges sans rien etc... et pas de chef compétent pour m'encadrer tout cela vient de changer et je replonge dans mes vieux souvenir et me re auto-forme à MERISE.
 
Donc si tu as d'autre outils à me conseiller je suis preneur. Mais gratuit si possible.
Je regarde mysql Workbench

Reply

Marsh Posté le 16-01-2012 à 15:01:26    

il buggue un peu des fois, pense a sauvegarder régulièrement
mais au moins il génère un bon code sql et peut meme partir d'nue base de données existante

Reply

Marsh Posté le 16-01-2012 à 15:04:42    

Je te remercie beaucoup :)
 
Bon bah allez go on plonge dans le support de cours Merise et enfin pouvoir partir sur de bonne base :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed