Précédent   Forum du club des développeurs et IT Pro > Général Développement > ALM > Modélisation > Schéma
Schéma Modélisation Relationnelle (Dépendances Fonctionnelles, Formes Normales, Entité-relation, MCD, MPD ...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 08/01/2013, 10h52   #1
le sportif
 
Homme
Étudiant
Inscription : mars 2012
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2012
Messages : 24
Points : -4
Points : -4
Par défaut mcd vers mld

bonjour,
je veux savoir pourquoi est ce que les clès primaires migrent des entités de cardinalités fortes vers les entités de cardinalités faibles ?
en fait comment est ce qu'on peut expliquer cette règle du passage du mcd vers le mld ?
merci beaucoup d'avance pour toute réponse
le sportif est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 11h05   #2
CinePhil
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 13 659
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 49
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 13 659
Points : 25 568
Points : 25 568
Envoyer un message via MSN à CinePhil
Qu'entendez-vous par "cardinalités fortes" ou "faibles" ?

Sur mon blog, je donne tous les cas de cardinalités entre deux entités types et leurs conséquences pour l'implémentation des tables dans la BDD, donc les clés étrangères dans le MLD.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/01/2013, 20h56   #3
fsmrel
Expert Confirmé Sénior

 
Avatar de fsmrel
 
Homme François de Sainte Marie
Spécialiste en bases de données
Inscription : septembre 2006
Messages : 3 623
Détails du profil
Informations personnelles :
Nom : Homme François de Sainte Marie
Localisation : Autre

Informations professionnelles :
Activité : Spécialiste en bases de données
Secteur : Conseil

Informations forums :
Inscription : septembre 2006
Messages : 3 623
Points : 9 108
Points : 9 108
Par défaut Au sujet de l'identification relative

Bonsoir,


Considérez le bordereau de saisie des commandes ci-dessous :




Fin des années soixante-dix, avec Merise (1re génération) on modélisait les lignes de commande au moyen d’une association (Commander dans l’exemple) :




Ou en appelant un chat, un chat :



Sémantiquement parlant, la ligne de commande peut être néanmoins considérée non pas comme une association entre la commande et le produit, mais, à l’image de ce qu’on perçoit dans le bordereau de saisie, plutôt comme une propriété multivaluée de la commande : LigneCommande est une entité-type faible (weak entity-type) au sens de Chen, Codd et tutti. Avec Merise 2e génération, on a eu la possibilité d’utiliser l’identification relative pour implémenter cela. Avec PowerAMC :




Avec WinDesign (noter la dépendance fonctionnelle merisienne LigneCommande -> Commande) :




Les AGL transforment ainsi le MCD en MLD :




La clé de la table est la paire {CommandeId, NoLigne}. L’attribut CommandeId de la table LigneCommande est par construction hérité de l’attribut CommandeId de la table Commande. Par convention (mais ça n’est pas un impératif), pour une valeur C de l’attribut CommandeId de la table LigneCommande, si la commande C comporte Nc lignes de commande, l’attribut NoLigne est numéroté de 1 à N, ligne de commande par ligne de commande. Même principe pour chaque commande.

Mais attention, pour une commande et un produit donnés il n’y a qu’une quantité et un montant (ce qui est garanti quand la ligne de commande fait l’objet d’une association, comme dans les exemples ci-dessus faisant référence à Merise 1re génération). Il faut donc définir une contrainte sous forme de clé alternative {CommandeId, ProduitId} pour la table LigneCommande :




Quoi qu’il en soit, Pour mettre en œuvre la numérotation des lignes de commande (attribut NoLigne), voyez le billet Trigger pour incrémentation relative proposé par CinePhil.
__________________
_
Faites simple, mais pas plus simple ! (A. Einstein)
E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

__________________

Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !)
fsmrel est déconnecté   Envoyer un message privé Réponse avec citation 40
Vieux 08/01/2013, 23h49   #4
le sportif
 
Homme
Étudiant
Inscription : mars 2012
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2012
Messages : 24
Points : -4
Points : -4
Merci à tous pour les réponse mais ma question n'est pas "comment passer du mcd au mld ?" je metrise la méthode mais
ma question est pourquoi si on a d'une part (1,n) et de l'autre (1,1) la clès de la première sera inscrite dans la table de la seconde ?
merci d'avance pour toute réponse
le sportif est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 00h19   #5
CinePhil
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 13 659
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 49
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 13 659
Points : 25 568
Points : 25 568
Envoyer un message via MSN à CinePhil
Ben tu as la réponse dans mon billet de blog !

Citation:
pourquoi si on a d'une part (1,n) et de l'autre (1,1) la clès de la première sera inscrite dans la table de la seconde ?
Tu as l'association suivante :
A -1,n----associer----1,1- B

Elle est issue de la règle de gestion suivante :
Un A est associé à un à plusieurs B et un B est associé à un seul A.

Le MLD détermine la composition des tables de la future BDD. Et dans un SGBDR, les tables sont associées par des clés étrangères référençant les clés primaires d'autres tables.

Dans le cas de cette association, si je mets dans la table A une clé étrangère référençant B, je ne pourrai au maximum référencer qu'un seul B pour un A, ce qui est contraire à la règle de gestion et aux cardinalités 1,n du MCD. Par contre, en mettant dans B une clé étrangère référençant A, j'obéis bien à la règle de gestion et aux cardinalités 1,1 du MCD et je n'interdit nullement qu'un A soit référencé par plusieurs B.

Pour respecter totalement la règle de gestion et le MCD, il faudra tout de même prévoir, dans le SGBD, un processus, trigger ou procédure, pour que, lors de la création d'un A, au moins un B lui soit immédiatement associé. Et comme le B en question ne peut être associé qu'à un seul A, il faut donc créer le B en même temps que le A.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 20
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h29.


 
 
 
 
Partenaires

Hébergement Web