Association entre plusieurs tables

Résolu/Fermé
Utilisateur anonyme - 8 avril 2012 à 00:52
DROE Messages postés 148 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 26 juillet 2012 - 9 avril 2012 à 13:33
Bonjour,

Je débute en mysql et je suis complétement perdu :s
je vous explique mon problème en espérant que quelqu'un m'aide.
Dans le site que je suis entrain de faire je veux afficher le programme de 3 chaines sur toute la semaine.
Donc comment faire une association entre plusieurs tables c'est à dire une association entre une table jour qui contient les jours de la semaine(lundi, mardi,..., dimanche) et 3 autres tables chaines(chaine1, chaine2 et chaine3) qui contiennent(heure, programme).
je veux éviter de faire une base de données énorme en créant plusieurs tables:
table lundichaine1 (id, heure, programme), table mardichaine2(id, heure, programme), table lundichaine3(id, heure, programme) ect...
du coup pour 3 chaines * 7 jours = 21 tables a crées :s ça fonctionnera mais je trouve que c'est moche.

Merci d'avance de votre aide.


2 réponses

Bonsoir,

le but d'une table est de regrouper les données par ensemble.
associationC'est un mauvais terme pour ce que voulez dire. L'association est une autre type de liaison, en SGBD on parles de jointure entre tables.

Avant de parler de table vous devez utiliser un regroupement d'entité avec la méthode Merise. La définition de vos relations indiquera les liaisons.

Votre modèle est faux si vous utiliser une table pour chaque chaîne, utiliser un champ nom de chaîne et une pour la date de chaque programme.

La première étape de toute analyse est pas de faire les tables mais de lister les données(informations utiles) dont vous aurez ou pourrez avoir besoin, sans ordre ni regroupement:
Voici pour votre Système d'Information(ouvert bien sûr aux modifications nécessairezs aux particularités de votre SI)

Début programme heure
Début Programme minute
Durée
Fin programme heure
Fin programme minute
Chaîne
Nom programme
jour programme
Mois programme
Année programme
Description programme


Lors de votre regroupement en entités(et non table, ça viendras plus tard avec les relations entre les tables) vous devez regrouper ce qui est regroupable. La question à se poser est : Une donnée A peut elle exister indépendamment de la B. Si c'est le cas elle seront dans une table différente, si ce n'est le cas elles seront ensemble. Le tri des données est à faire avant.

Par exemple sur le tri des données on peut voir pour les données: Début programme heure et début programme minute qu'au lieu d'avoir 2 donnés vous n'en avez qu'une: Un programme à toujours une heure et une minute(même si ces minutes sont 00 pour une heure pile).
Donc la donnée Heure_minute_programme contiendras les deux valeurs et vous éviteras de traiter les informations qui ne peuvent l'être séparément(éviteras un développement à faire 2 fois au lieu d'une, le risque d'erreur d'avoir les minutes ou heure de début uniquement. Un programme ne commences pas à minute 20 mais à une heure précise + une minute précise).

Même chose pour la fin d'un programme, si vous retenez heure et minute de fin de programme vous devez éliminer la durée puisque celle ci est calculable en faisant la différence entre le début et la fin. Libre à vous de choisir de retenir la durée ou la fin du programme à retenir mais un seul des 2 doit exister dans votre système.

Jour et mois programme? Pourquoi ne pas les regrouper en une seule valeur dans ce cas là?
Vous pouvez mais si vous le faites ce sera impossible de différencier 2 programmes ayant lieu à la même heure deux jours différents sans avoir à rajouter une information.


etc... une analyse bien faite c'est 80% de temps et soucis/risque d'erreurs en moins lors de votre développement.

La méthode Merise est le meilleur moyen d'analyser votre SGBD et d'avoir à partir du Modèle Conceptuel de Données le Modèle Logique de Données(les tables).
Cetteméthode comporte plusieurs étapes à suivre rigoureusement et permettant de ne rien oublier et d'avoir un système fiable et persistant(que se passe t'il si dans quelques années vous voulez rajouter des informations, cela doit être prévu sinon vous aurez le double de développement/temps/argent à investir lorsque vous devrez faire évoluer votre SI parce qu'il sera si populaire que vous devrez ajouter des fonctionnalités).

Par exemple avec une table pour chaque chaîne, vous devez refaire tout le programme. Avec une table contenant le nom de la chaîne vous pouvez en rajouter autant que vous voulez et votre programme sera dynamique, vous n'aurez pas à traiter chaque chaîne séparément mais utiliser une seule valeur(variable indiquant le nom de la chaîne) pour afficher celle ci.
1
DROE Messages postés 148 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 26 juillet 2012 48
9 avril 2012 à 13:33
excellent !!
0
Utilisateur anonyme
9 avril 2012 à 02:06
WOW!!

merci beaucoup pour toutes ces precisions.
0