IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modélisation Discussion :

Impact d'une clef primaire multi composée.


Sujet :

Modélisation

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    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 : 5
    Points
    5
    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 .

  2. #2
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    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 !

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    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.

    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.

    ==> 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.

    ==> 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 Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 !

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    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 : 5
    Points
    5
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/07/2007, 18h06
  2. Probleme d'insertion d'une clef primaire OleAdo
    Par blondelle dans le forum C++Builder
    Réponses: 1
    Dernier message: 26/03/2007, 12h23
  3. [JDBC]Récuperer une clef primaire
    Par boubavic dans le forum JDBC
    Réponses: 11
    Dernier message: 24/10/2005, 12h17
  4. Générer une clef primaire aleatoire?
    Par 12_darte_12 dans le forum Administration
    Réponses: 4
    Dernier message: 18/07/2005, 18h10
  5. Comment comment définir une clef primaire dans une table??
    Par nek_kro_kvlt dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/02/2005, 21h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo