[MERISE] - Représenter la notion de vue dans un MCD

- Représenter la notion de vue dans un MCD [MERISE] - SQL/NoSQL - Programmation

Marsh Posté le 15-02-2006 à 13:28:02    

Salut à tous.
 
Tout d'abord, j'epère avoir posté dans la bonne catégorie.
 
Mon problème est le suivant :
 
J'ai une base de dvd theque et j'ai une entité "nationalité" que je souhaite associer à trois autres entités (Film, Realisateur & Acteur).
Voici mon MCD pour que vous vous fassiez une idée:
 
http://www.mezimages.com/image/fredhali2000/ecole/merise/MON%20MCD.JPG
 
Je veux eviter la boucle qui relie les trois entites vers l'entité nationalite, en creant des vues, mais je ne sais pas comment les representer.
Est-ce que comme j'ai fait là ca marche???
 
J'aimerais savoir comment on représente, en MCD, la notion de vues...
 
J'espère m'etre bien fait comprendre, et je vous remercie de votre aide.

Reply

Marsh Posté le 15-02-2006 à 13:28:02   

Reply

Marsh Posté le 15-02-2006 à 14:53:22    

rien compris.
Si une relation existe entre tes tables, tu les associes, sinon tu les associes pas, point barre.
Une vue ça n'est pas de la modélisation, c'est un outil fourni par ton sgbd.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-02-2006 à 14:56:03    

j'ai pas compris ta question, mais peut tu me dire avec quel logiciel tu as fais ce MCD ?


---------------
http://www.blastmanu.info
Reply

Marsh Posté le 15-02-2006 à 14:58:35    

Hummm.... C'est amusant j'ai exactement le même MCD sur papier dans un bouquin sur Merise. Après consultation de la correction ta boucle ne peut pas être supprimée.

Reply

Marsh Posté le 15-02-2006 à 15:15:41    

http://www.mezimages.com/image/fredhali2000/ecole/merise/Mon%20MCD%20-%202.jpg
Voici mon MCD après quelques modifs...
Pour blastman : je n'ai pas trouvé de logiciel interessant pour faire des MCD, je l'ai donc fait avec Microsoft Excel...

Reply

Marsh Posté le 15-02-2006 à 15:16:34    

Et les apatrides, alors? [:dawao]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-02-2006 à 15:18:40    

T'as dû t'amuser avec excel!
 

skeye a écrit :

Et les apatrides, alors? [:dawao]


il va quand même pas mettre du 0,N?
On créé juste une nationnalité qui s'appelle Apatride....
 
 
Comme dans le cas de proffession où on met souvent : sans emploi.

Message cité 1 fois
Message édité par dwogsi le 15-02-2006 à 15:27:03
Reply

Marsh Posté le 15-02-2006 à 15:19:43    

non ca a tet vite avec excel...
j'avais commencé avec paint et puis j'en ai eu marre, et avec excel c'est vachement mieux

Reply

Marsh Posté le 15-02-2006 à 15:21:29    

Paint????????????
Quelle galére, je n'ose même pas imaginer! PwerAMCD j'l'aime bien même si ce n'est pas le cas de tout le monde. Bon sinon je maintiens, ta boucle n'est pas supprimable!

Message cité 1 fois
Message édité par dwogsi le 15-02-2006 à 15:22:28
Reply

Marsh Posté le 15-02-2006 à 15:21:48    

dwogsi a écrit :

il va quand même pas mettre du 0,N?
On créé juste une nationnalité qui s'appelle Apatride....
 
 
Comme dans le cas de proffession où on met souvent : sans emploi.


 
Chuuuuuuut tu me bousilles ma question piège! [:dawao]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-02-2006 à 15:21:48   

Reply

Marsh Posté le 15-02-2006 à 15:23:09    

J'hésitais entre ignard ou plaisantain.
J'me suis trompé et je m'en excuse.  :)


Message édité par dwogsi le 15-02-2006 à 15:24:14
Reply

Marsh Posté le 15-02-2006 à 15:26:27    

Pas grave.[:petrus75]
Et ignare. [:aloy]
 
...et après réflexion je suis en train de me dire que c'est pas forcément si con que ça, le (0,n)...la nationalité ne me parait pas un champs important au point de le rendre obligatoire...[:god]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-02-2006 à 15:27:32    

Ouai mais ca plombe la base de donnée pour rien un 0,N. Si c'est pas important tu vire l'entité et c'est tout.


Message édité par dwogsi le 15-02-2006 à 15:28:17
Reply

Marsh Posté le 15-02-2006 à 15:29:17    

euh...pour quelle raison? :??:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-02-2006 à 15:32:30    

skeye a écrit :

Et les apatrides, alors? [:dawao]


+1
un film, un acteur ou un realisateur peuvent etre de plusieurs nationnalites ou de nationnalite inconnue.
de plus un acteur d'un film peux egalement etre le realisateur dudit film ou d'un autre, donc a ta place je n'aurrait qu'une table personne et une relation film <- Participe (qualite=realisateur, acteur, metteur en scene, producteur ...)-> personne  
 

Citation :

il va quand même pas mettre du 0,1?
On créé juste une nationnalité qui s'appelle Apatride....

 :non: du 0,N. Il vaut mieux y penser au debut que d'etre coincer apres ...

Reply

Marsh Posté le 15-02-2006 à 15:32:37    

skeye a écrit :

euh...pour quelle raison? :??:


0,N => Associations multiples => Nouvelle table
0,1 => Ca ouai je veux bien.
 

skeye a écrit :

euh...pour quelle raison? :??:


 

maxpower44 a écrit :

 :non: du 0,N. Il vaut mieux y penser au debut que d'etre coincer apres ...


 
Comma l'a très justement dit skeye, la nationnalité n'est d'une importance capitale alors si on en a déjà une c'est bon ! Alors je maintiens le 1,1 ou 0,1.

Message cité 3 fois
Message édité par dwogsi le 15-02-2006 à 15:35:58
Reply

Marsh Posté le 15-02-2006 à 15:34:55    

dwogsi a écrit :

0,N => Associations multiples => Nouvelle table


Bien sur que oui il faut une table des nationalités! [:pingouino]
Ca peut être une table pré-remplie, avec un nombre d'enregistrements relativement faible, ce n'est pas de faire une jointure là-dessus qui va te "plomber la base"...[:mlc]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-02-2006 à 15:37:38    

dwogsi a écrit :

Comma l'a très justement dit skeye, la nationnalité n'est d'une importance capitale alors si on en a déjà une c'est bon ! Alors je maintiens le 1,1 ou 0,1.


 
Non, un film peut avoir plusieurs nationalités, une personne aussi. Tu délires, là, franchement. Non seulement tu ne permets pas de stocker toutes les infos, mais en plus dans certains cas tu obliges à stocker de l'info qui n'existe pas.[:pingouino]


Message édité par skeye le 15-02-2006 à 15:38:35

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-02-2006 à 15:37:57    

skeye a écrit :

Bien sur que oui il faut une table des nationalités! [:pingouino]
Ca peut être une table pré-remplie, avec un nombre d'enregistrements relativement faible, ce n'est pas de faire une jointure là-dessus qui va te "plomber la base"...[:mlc]


Oui mais l'association de nationnalité à acteur va nous créer une nouvelle table! Si on a du N des deux coté c'est forcé....
 
Donc ca rajoute une table qui n'est pas forcément indispensable. Bon le mot "plombe" est un peu fort pour ce que je voulais dire.

Message cité 1 fois
Message édité par dwogsi le 15-02-2006 à 15:38:26
Reply

Marsh Posté le 15-02-2006 à 15:39:21    

dwogsi a écrit :

Oui mais l'association de nationnalité à acteur va nous créer une nouvelle table! Si on a du N des deux coté c'est forcé....
 
Donc ca rajoute une table qui n'est pas forcément indispensable. Bon le mot "plombe" est un peu fort pour ce que je voulais dire.


 
Mais oussa une nouvelle table? Il faut UNE table des nationalités, point barre!!!


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-02-2006 à 15:42:25    

skeye a écrit :

Mais oussa une nouvelle table? Il faut UNE table des nationalités, point barre!!!


[Acteur]0,N---------|ETRE DE|--------0,N[NATIONNALITE]
 
Dis moi simplement comment, dans la pratique, tu va faire la correspondance entre les deux????


Message édité par dwogsi le 15-02-2006 à 15:42:48
Reply

Marsh Posté le 15-02-2006 à 15:44:28    

euh oui, très juste.[:petrus75]
 
Dans la pratique, pour pas alourdir la structure, je collerais probablement plusieurs champs de nationalité dans acteur.[:petrus75]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-02-2006 à 15:45:46    

dwogsi a écrit :

Comma l'a très justement dit skeye, la nationnalité n'est d'une importance capitale alors si on en a déjà une c'est bon ! Alors je maintiens le 1,1 ou 0,1.


A priori, fredhali2000 est le seul juge pour savoir si c'est indipensable ou non :D
 

skeye a écrit :

Mais oussa une nouvelle table? Il faut UNE table des nationalités, point barre!!!


Bien sur qui va creer une nouvelle table :
personne (id_personne, ...)
nationalite (id_nationnalite, ...)
relation_persone_nationnalite (id_personne, id_nationnalite)

Reply

Marsh Posté le 15-02-2006 à 15:46:59    

maxpower44 a écrit :

Bien sur qui va creer une nouvelle table :
personne (id_personne, ...)
nationalite (id_nationnalite, ...)
relation_persone_nationnalite (id_personne, id_nationnalite)


 
C'est bon, j'avais oublié de réfléchir.[:petrus75]
Mais dans la pratique jamais tu fais ça, tu rajoutes un champs ou deux dans personne et basta.[:dawao]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-02-2006 à 15:47:21    

skeye a écrit :

euh oui, très juste.[:petrus75]
 
Dans la pratique, pour pas alourdir la structure, je collerais probablement plusieurs champs de nationalité dans acteur.[:petrus75]


 
 :non: pas tres pratique pour lister tous les acteurs d'une certaine nationnalite ... Et si tu veux ajouter une troisieme nationnalite pour une persone, tu doit non seulement modifier la base de donnee mais aussi l'application ..

Message cité 1 fois
Message édité par maxpower44 le 15-02-2006 à 15:48:55
Reply

Marsh Posté le 15-02-2006 à 15:47:47    

maxpower44 a écrit :

A priori, fredhali2000 est le seul juge pour savoir si c'est indipensable ou non :D
 
 
Bien sur qui va creer une nouvelle table :
personne (id_personne, ...)
nationalite (id_nationnalite, ...)
relation_persone_nationnalite (id_personne, id_nationnalite)


 
MERCI!!! :jap: :jap: :jap:
Je commencais à me demandais si j'étais con???!!! Je m'enervais sur mon pauvre clavier....
 
Ouai j'aurais dû balancer un MLD moi aussi ca aurait été plus clair!


Message édité par dwogsi le 15-02-2006 à 15:48:32
Reply

Marsh Posté le 15-02-2006 à 15:48:25    

maxpower44 a écrit :

:non: pas tres pratique pour lister tous les acteurs d'une certaine nationnalite ...


euh.
select nom from acteur where (cod_nat1 = 'truc' or cod_nat2 = 'truc' or cod_nat3 = 'truc' ) [:pingouino]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-02-2006 à 15:49:57    

Tu fais trop de php, toi.[:pingouino]
 
[edit]
 
ah tiens, message effacé.[:dawa]

Message cité 1 fois
Message édité par skeye le 15-02-2006 à 15:50:17

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-02-2006 à 15:50:49    

skeye a écrit :

euh.
select nom from acteur where (cod_nat1 = 'truc' or cod_nat2 = 'truc' or cod_nat3 = 'truc' ) [:pingouino]


tu peux me donner ton vrai nom ? que je mette ton CV directement a la poubelle si tu postule dans ma boite   :p

Message cité 1 fois
Message édité par maxpower44 le 15-02-2006 à 15:51:08
Reply

Marsh Posté le 15-02-2006 à 15:51:39    

skeye a écrit :

euh.
select nom from acteur where (cod_nat1 = 'truc' or cod_nat2 = 'truc' or cod_nat3 = 'truc' ) [:pingouino]


c'est d'un laid.
et s'il en a 4 ??  
et s'il en a pas ?
 
beurk

Reply

Marsh Posté le 15-02-2006 à 15:53:12    

maxpower44 a écrit :

tu peux me donner ton vrai nom ? que je mette ton CV directement a la poubelle si tu postule dans ma boite   :p


bah écoute mon CV tu le verras jamais si t'es pas capable de comprendre que parfois faut savoir faire des choix de ce genre pour pas bloater ta structure.[:itm]
 
Je bosse quotidiennement sur un soft avec une base oracle de plusieurs gigas comportant plus de 400 tables, et oui pour ce genre de conneries il arrive qu'on utilise des astuces de ce style. Et non, la structure n'est pas de moi.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-02-2006 à 15:54:11    

lorill a écrit :

c'est d'un laid.
et s'il en a 4 ??  
et s'il en a pas ?
 
beurk


 
[:kiki]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-02-2006 à 15:54:34    

skeye a écrit :

Tu fais trop de php, toi.[:pingouino]
 
[edit]
 
ah tiens, message effacé.[:dawa]


 
Ouai parcequ'en faites je me suis dis une chose :
Avec la fonction in_array(), on a un tableaux dans lequel on stock les valeurs. Or dans le cas de ta requêtes c'est les différents noms de champs qu'il faut chercher et ça ne peut pas vraiment fonctionner avec in_array(). Quoique en fait si on donnait les valeurs des champs au tableau ca marcherais... Enfin bon ca existe pas, ou alors je suis pas au courant.
 
Et oui je fais trop de php, en plus je suis sûr que l'algo de recherche tiens pas compte du tri ou non, enfin bon.... J'sui HS là...

Message cité 1 fois
Message édité par dwogsi le 15-02-2006 à 15:56:15
Reply

Marsh Posté le 15-02-2006 à 15:55:54    

dwogsi a écrit :

Ouai parcequ'en faites je me suis dis une chose :
Avec la fonction in_array(), on a un tableaux dans lequel on stock les valeurs. Or dans le cas de ta requêtes c'est les différents noms de champs qu'il faut chercher et ça ne peut pas vraiment fonctionner avec in_array(). Quoique en fait si on donnait les valeurs des champs au tableau ca marcherais... Enfin bon ca existe pas, ou alors je suis pas au courant.


Non, les tableaux on appelle ça des tables, en sql...[:god]
Evidemment la solution idéale au point de vue conception est d'avoir une table dédiée à l'association personne/nationalité...;)


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-02-2006 à 15:59:22    

skeye a écrit :

Non, les tableaux on appelle ça des tables, en sql...[:god]
Evidemment la solution idéale au point de vue conception est d'avoir une table dédiée à l'association personne/nationalité...;)


 
En fait j'pensais à un truc du genre (pour ta conception a toi ou tu met plusieurs champs nationnalité) :
select nom from acteur where in_array('id_nat',array(cod_nat1,cod_nat2,cod_nat3))
 
Et là on pourrait en mettre à la pelle sans se compliquer la vie.

Reply

Marsh Posté le 15-02-2006 à 15:59:46    

'fin bref, c'est un choix à faire. Sur une grosse base, créer une table spécifique risque de te bouffer des perfs pour une utilisation marginale.
 
A contrario, sur une petite base niveau perfs tu verras pas la différence, et c'est nettement plus propre.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-02-2006 à 15:59:48    

skeye a écrit :

bah écoute mon CV tu le verras jamais si t'es pas capable de comprendre que parfois faut savoir faire des choix de ce genre pour pas bloater ta structure.[:itm]
 
Je bosse quotidiennement sur un soft avec une base oracle de plusieurs gigas comportant plus de 400 tables, et oui pour ce genre de conneries il arrive qu'on utilise des astuces de ce style. Et non, la structure n'est pas de moi.


tres impressionnant   :lol:  
 
Ou est ce qu'il as ecrit qu'il voulait faire une base de donnees de 400 tables ? j'ai du louper un message :) pour le moment j'en compte que 8 et de toutes manieres l'optimisation doit se faire apres la modelisation  
 

Reply

Marsh Posté le 15-02-2006 à 16:01:23    

maxpower44 a écrit :

tres impressionnant   :lol:  
 
Ou est ce qu'il as ecrit qu'il voulait faire une base de donnees de 400 tables ? j'ai du louper un message :) pour le moment j'en compte que 8 et de toutes manieres l'optimisation doit se faire apres la modelisation


Moi je vois plus une base bien construite et après une bonne optimisation du traiment et de l'utilisation, au niveau du programme donc.

Reply

Marsh Posté le 15-02-2006 à 16:02:30    

dwogsi a écrit :

En fait j'pensais à un truc du genre (pour ta conception a toi ou tu met plusieurs champs nationnalité) :
select nom from acteur where in_array('id_nat',array(cod_nat1,cod_nat2,cod_nat3))
 
Et là on pourrait en mettre à la pelle sans se compliquer la vie.


 
euh il faut garder à l'esprit que c'est un choix d'implémentation pour des cas très spécifiques, et où on sait qu'un des N de ta relation (N,N) a une valeur très faible.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-02-2006 à 16:03:35    

dwogsi a écrit :

Moi je vois plus une base bien construite et après une bonne optimisation du traiment et de l'utilisation, au niveau du programme donc.


sur ce coup la, skeye a raison, il faut parfoit faire des concessions au niveau de la base de donnees, mais dans le cas qui nous concerne, ca ressemble plus a une base perso

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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