[Access] Qualité de mes relations

Qualité de mes relations [Access] - Logiciels - Windows & Software

Marsh Posté le 26-12-2007 à 10:15:01    

Bonjour à tous,
 
J'ai créé une bdd Access pour classer mes chansons.
 
J'ai créé trois tables : chanteurs, titres, relation chanteurs-titres.
 
Dans la table "relation chanteurs-titres", je crée le lien entre les chanteurs et les titres qu'ils interprètent.
 
Je veux ensuite indiquer sur quel support je possède mes chansons.
J'ai donc créé deux nouvelles tables : enregistrements et relation titres-enregistrements.
Dans cette table "relation titres-enregistrements", je crée le lien entre les enregistrements et les chansons qu'ils contiennent ; le code titre vient de la table "relation chanteurs-titres".
 
J'aimerai ensuite indiquer les prénoms contenus dans les titres.
Par exemple, dans la chanson "Madeleine" de Brel, il cite les prénoms "Madeleine", "Gaspard", "Eugène", etc...
 
J'ai donc créé une deux nouvelles tables : prénoms et relation titres-prénoms.
Je veux donc créer le lien entre les prénoms et le code titre qui vient de la table "relation chanteurs-titres".
 
C'est ici que j'ai un problème : mon code titre qui vient de la table "relation chanteurs-titres" va être utilisé deux fois.
Une fois pour renseigner la table "relation titres-enregistrements" et une fois pour renseigner la table "relation titres-prénoms".
 
J'ai cherché des modèles sur le net mais je n'ai pas trouvé de bases présentant le même profil que la mienne.
 
Alors voila ma question : puis-je laisser ma base comme ça ?
Si la réponse est "non" comment faire autrement ?
 
Merci par avance !

Reply

Marsh Posté le 26-12-2007 à 10:15:01   

Reply

Marsh Posté le 26-12-2007 à 10:19:30    

Je vous joins une capture d'écran de mes relations :
 
http://roblinpi.free.fr/Chansons3.jpg

Reply

Marsh Posté le 26-12-2007 à 13:17:42    

Il y a une relation n,m entre les chanteurs et les titres car un chanteur chante plusieurs titres, et un titre peut être chanté par plusieurs chanteurs. Donc vous avez eu raison de créer la table "relation chanteurs-titres". Je suis aussi d'accord pour les enregistrements.
 
Pour les prénoms dans les chansons, il faudrait faire le lien avec la table "Titre" au lieu de le faire avec la table "relation chanteurs-titres", car une chanson peut contenir plusieurs prénoms, et cela reste vrai quelque soit le chanteur. Si l'on veut trouver tous les chanteurs qui ont prononcé le prénom "Madeleine", on ira d'abord rechercher tous les titres qui contiennent ce prénom, puis tous les chanteurs ayant chanté ces titres.
 

Reply

Marsh Posté le 26-12-2007 à 14:20:31    

olivthill a écrit :

Il y a une relation n,m entre les chanteurs et les titres car un chanteur chante plusieurs titres, et un titre peut être chanté par plusieurs chanteurs. Donc vous avez eu raison de créer la table "relation chanteurs-titres". Je suis aussi d'accord pour les enregistrements.
 
Pour les prénoms dans les chansons, il faudrait faire le lien avec la table "Titre" au lieu de le faire avec la table "relation chanteurs-titres", car une chanson peut contenir plusieurs prénoms, et cela reste vrai quelque soit le chanteur. Si l'on veut trouver tous les chanteurs qui ont prononcé le prénom "Madeleine", on ira d'abord rechercher tous les titres qui contiennent ce prénom, puis tous les chanteurs ayant chanté ces titres.


 
C'est ce que j'avais fait au début mais cela s'avère faux !
En effet, il peut exister plusieurs chansons qui ont le même titre mais qui n'ont aucun rapport les unes avec les autres ; et une seule comportera des prénoms.
C'est pour cela que j'ai d'abord relié la chanson à son interprète pour bien l'identifier.
 
Mais votre réponse ne fait pas allusion au fait que le code de la table "relation chanteurs titres" soit utilisé plusieurs fois.
Cela n'est pas génant ?

Reply

Marsh Posté le 27-12-2007 à 01:17:20    

J'avais supposé que pour chaque chanson, il y avait un titre qui pouvait l'identifier de manière unique. Mais il est vrai que dans la réalité, certaines chansons peuvent avoir des paroles différentes tout en ayant les mêmes intitulés, par exemple les paroles anglaises de Be Bop A Lula (chanté par Gene Vincent) sont différentes des paroles françaises de Be Bop A Lula (chanté par Eddy Mitchell). Pour les distinguer, j'indiquerais "VF" quelque part pour la version française. Pour une même langue, il peut aussi y avoir des variantes, par exemple lorsqu'une chanson est enregistrée lors d'un concert, et que l'artiste se permet quelques changements. Alors, j'ajouterais "V1", "V2", etc., afin de pouvoir retrouver de quelle chanson il s'agit à partir du titre.
Si on a que "Be bop a lula", on ne peut pas savoir si c'est une chanson anglaise ou japonaise, et on n'est pas très avancé.
 
Utiliser plusieurs fois une table n'est pas un problème. Ce qu'il faut, c'est s'efforcer de respecter les "règles de normalisation" édictées par Monsieur E. F. Codd. Il y a trois règles principales. Les voici en résumé :
1. Chaque donnée doit correspondre à une notion atomique. Par exemple, il ne faut pas mettre tantôt une date, et tantôt un texte dans un même champ. Il ne faut pas mettre une donnée dont on prendra les 3 premières caractères pour faire une chose, et les 4 caractères suivants pour faire autre chose. Il faut donc déterminer quels sont les "atomes" de l'application. Il faut aussi éviter un degré de finesse qui ne servirait à rien pour l'application. Descartes disait qu'il n'aimait pas la définition de "l'homme" selon Aristote qui disait que "l'homme est un animal pensant", car alors cela lui faisait deux notions à définir "un animal" et "la pensée", alors qu'au début il n'y en avait qu'une seule, "l'homme", qui est en soi-même une notion claire et évidente.
2. Les autres champs que la clé doivent être indépendants de la clé ou d'une de ses parties.
3. Les autres champs que la clé doivent être indépendants les uns des autres, parce que sinon, l'un d'eux serait une clé pour les autres.
 
Ensuite, dans la pratique, les bases de données sont rarement figées. Elles évoluent sans cesse. On leur ajoute et on leur enlève des colonnes tous les quinze jours ou presque, et c'est normal. Commencez avec un modèle, et s'il faut le changer plus tard, faîtes le sans scrupule. L'informatique est un travail qui avance souvent par essai et erreur, par un esprit pragmatique, plutôt que par une planification d'un esprit dogmatique.

Reply

Marsh Posté le 27-12-2007 à 10:47:23    

olivthill a écrit :

J'avais supposé que pour chaque chanson, il y avait un titre qui pouvait l'identifier de manière unique. Mais il est vrai que dans la réalité, certaines chansons peuvent avoir des paroles différentes tout en ayant les mêmes intitulés, par exemple les paroles anglaises de Be Bop A Lula (chanté par Gene Vincent) sont différentes des paroles françaises de Be Bop A Lula (chanté par Eddy Mitchell). Pour les distinguer, j'indiquerais "VF" quelque part pour la version française. Pour une même langue, il peut aussi y avoir des variantes, par exemple lorsqu'une chanson est enregistrée lors d'un concert, et que l'artiste se permet quelques changements. Alors, j'ajouterais "V1", "V2", etc., afin de pouvoir retrouver de quelle chanson il s'agit à partir du titre.
Si on a que "Be bop a lula", on ne peut pas savoir si c'est une chanson anglaise ou japonaise, et on n'est pas très avancé.


Tout d'abord, bonjour et merci pour votre réponse.
Je suis parti dans une autre optique.  
Les différentes versions sont distinguées par des commentaires renseignés dans la table de relation des enregistrements.
Ainsi, si je tape "Be bop a lula", pour reprendre votre exemple, j'aurai toutes les versions d'un seul coup d'oeil, je saurai dans quel(s) enregistrement(s) les trouver et les commentaires me permettront d'affiner mon choix.
 

olivthill a écrit :

Utiliser plusieurs fois une table n'est pas un problème. Ce qu'il faut, c'est s'efforcer de respecter les "règles de normalisation" édictées par Monsieur E. F. Codd. Il y a trois règles principales. Les voici en résumé :
1. Chaque donnée doit correspondre à une notion atomique. Par exemple, il ne faut pas mettre tantôt une date, et tantôt un texte dans un même champ. Il ne faut pas mettre une donnée dont on prendra les 3 premières caractères pour faire une chose, et les 4 caractères suivants pour faire autre chose. Il faut donc déterminer quels sont les "atomes" de l'application. Il faut aussi éviter un degré de finesse qui ne servirait à rien pour l'application. Descartes disait qu'il n'aimait pas la définition de "l'homme" selon Aristote qui disait que "l'homme est un animal pensant", car alors cela lui faisait deux notions à définir "un animal" et "la pensée", alors qu'au début il n'y en avait qu'une seule, "l'homme", qui est en soi-même une notion claire et évidente.
2. Les autres champs que la clé doivent être indépendants de la clé ou d'une de ses parties.
3. Les autres champs que la clé doivent être indépendants les uns des autres, parce que sinon, l'un d'eux serait une clé pour les autres.


Ensuite, je dis : respect
Trouver pèle mèle EF Codd, Gene Vincent, Eddy Mitchell puis Descartes et Aristote, bravo !  :jap:  
 

olivthill a écrit :

Ensuite, dans la pratique, les bases de données sont rarement figées. Elles évoluent sans cesse. On leur ajoute et on leur enlève des colonnes tous les quinze jours ou presque, et c'est normal. Commencez avec un modèle, et s'il faut le changer plus tard, faîtes le sans scrupule. L'informatique est un travail qui avance souvent par essai et erreur, par un esprit pragmatique, plutôt que par une planification d'un esprit dogmatique.


Enfin, je n'avais pas vu les choses sous cet angle.
Je pensais plutôt qu'une base de donnée devait être la mieux conçue possible dès le départ pour faire le moins de modifications par la suite.
Je vais voir les choses d'un autre oeil, à présent...

Reply

Sujets relatifs:

Leave a Replay

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