Précédent   Forum des professionnels en informatique > Général Développement > Conception > Modélisation
Modélisation Forum d'entraide pour les diagrammes UML et les MCD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/09/2011, 12h28   #1
Invité de passage
 
Homme
Développeur informatique
Inscription : septembre 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2011
Messages : 4
Points : 4
Points : 4
Par défaut Impact d'une clef primaire multi composée.

Bonjour,
Je suis en train de réaliser un mcd et je me demande si la silution suivante est adaptée et ce qu'elle va entrainer pour la création de mes futures tables :

Je fais une modélisation sur un projet de livraison, chaque livraison a un code par service exemple: 99k01k01.

Si le produit est correctement livré on passe à 99k02k01.

Si il y a un problème et que le produit est relivré on passe à 99k01k02.

Il faut donc que je trouve un système pour auto incrementer soit la partie 2 du code de livraison soit la partie 3. (partie 1: 99k(partie fixe), partie 2: 01, partie 3: k02.

J'ai pensé à plusieurs solutions:

1) entité livraison: pk: 99k, pk: 01, pk: k02 = clef primaire composée de plusieurs champs.

Avantages: ? Inconvénients: ? Impact sur les futures tables de la base
Faisabilité

2) entité livraison: pk: un identifiant que je créais (ex: livr1) seulement en faisant celà pas d'incrémentation auto par la suite!
Ensuite 3 champs: champ:99k, champ:01, champ:k02

Je m'excuse si ce n'est pas très clair, c'est ma première apparition sur ce forum . J'ai écumé le net pour trouver des réponses à mes questions mais rien sur l'impact d'une clef primaire multi composé sur la base de données et sur le mcd .
Berserk50 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 14h45   #2
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Bonjour Berserk50,

Juste une remarque clef primaire multi composée comporte un pléonasme : clef primaire composée suffit amplement.

Sinon, sur le fond:
Citation:
Envoyé par Berserk50
Je fais une modélisation sur un projet de livraison, chaque livraison a un code par service exemple: 99k01k01.
Si le produit est correctement livré on passe à 99k02k01.
Si il y a un problème et que le produit est relivré on passe à 99k01k02.
==> ce que tu présentes est un attribut/propriété d'une livraison, et non une clé (de surcroît primaire) :
le bon de livraison n° xxx passe du statut 99k01k01 au statut 99k02k01, si tout est OK, sinon il passe au statut 99k01k02.


Citation:
Envoyé par Berserk50
1) entité livraison: pk: 99k, pk: 01, pk: k02 = clef primaire composée de plusieurs champs.
Avantages: ? Inconvénients: ? Impact sur les futures tables de la base
Faisabilité
==> surtout pas !


Citation:
Envoyé par Berserk50
2) entité livraison: pk: un identifiant que je créais (ex: livr1) seulement en faisant celà pas d'incrémentation auto par la suite!
Ensuite 3 champs: champ:99k, champ:01, champ:k02
==> oui. Il faudrait que tu expliques la signification de ces 3 champs :
livraison(id_livraison, statut_1, statut_2, statut_3, ...)
ou, mieux :
livraison(id_livraison, #code_service, statut, ...)
#code_service étant la clé primaire de l'entité "service".
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 14h12   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 324
Points : 18 324
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par Richard_35 Voir le message
==> ce que tu présentes est un attribut/propriété d'une livraison, et non une clé (de surcroît primaire) :
Si cette propriété ne peut avoir que des valeurs uniques, c'est une clé candidate (ou alternative, subrogée... choisis le terme qui te plaît le plus). Mais cela constituerait en effet une mauvaise clé primaire pour la table.

Citation:
le bon de livraison n° xxx passe du statut 99k01k01 au statut 99k02k01, si tout est OK, sinon il passe au statut 99k01k02.
C'est une meilleure façon de voir les choses, si on le regarde du points de vue de la livraison à effectuer et pas du "bon de livraison" physique qui sera probablement un nouveau papier lorsque qu'il y aura re-livraison suite à problème.

Citation:
==> surtout pas !
Pour aller un peu plus loin que cet anathème de Richard_35, ce n'est aps tant le fait que la clé soit composite qui est mauvais mais plutôt le fait qu'elle soit alphanumérique.

Citation:
==> oui. Il faudrait que tu expliques la signification de ces 3 champs :
livraison(id_livraison, statut_1, statut_2, statut_3, ...)
ou, mieux :
livraison(id_livraison, #code_service, statut, ...)
#code_service étant la clé primaire de l'entité "service".
La livraison pourrait être identifiée relativement au service (livraison numéro N du service 99), ce qui donnerait la clé primaire suivante pour la table des livraisons :
livraison (liv_id_service, liv_numero, partie_2_du_code_service, partie_3_du_code_service) Partie 2 et partie 3 semblent en effet être des statuts. à Berserk50 de nous le dire.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 15h27   #4
Invité de passage
 
Homme
Développeur informatique
Inscription : septembre 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2011
Messages : 4
Points : 4
Points : 4
Bonjour,

En fait, c'est bien celà:

Au début, pour restituer un code de livraison composé de plusieurs caractéristiques et m'en servir comme clef primaire je voulais savoir s'il était possible de réaliser la chose suivante:

livraison(id_livraison, code_service, numero_commande ,status de la commande, d'autres attributs... ne rentrant pas dans la composition d'une clef primaire ) ou la clef primaire de livraison serait constituée de ces 4 attributs.

Soit id_livraison = 1,2 etc...
code_service = 99k
numero_commande = 01, 02 ect...
status de la commande = k01, k02 etc...(exemple si k02 cela signifie relivraison pour correction de la livraison.

Je m'étais bien éloigné du sentier de la vérité de notre bon Merise.

J'ai compris que cela n'était pas possible grâce à vos interventions, j'ai corrigé par:

livraison(id_livraison, #code_service soit 99k ou autre code d'un autre service, #code_commande soit commande du produit 01 ect.., #status_livraison soit k02 signifie correction de la livraison, attributs de livraison).

J'ai donc 3 autres entités reliées à livraison ce qui simplifie grandement les choses.

Je vous remercie Richard_35 et CinePhil de m'avoir accordé du temps.
Berserk50 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h02.


 
 
 
 
Partenaires

Hébergement Web