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

Schéma Discussion :

insertion d'une identifiant incrémenté-


Sujet :

Schéma

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    958
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 958
    Points : 141
    Points
    141
    Par défaut insertion d'une identifiant incrémenté-
    Bonjour,

    Dans le schéma suivant:
    INGREDIENT(nom_ingrédient, lib_type_ingrédient)

    TYPE INGREDIENT(lib_type_ingredient,unité_mesure_ingredient)
    j'aimerais apporter une précision en transformant l'identifiant de chacune de ces entités en un numéro incrémenté, ce qui donnerait cela :

    INGREDIENT( num_ingredient,nom_ingredient, num_type_ingredient)

    TYPE_INGREDIENT(num_type_ingredient, lib_type_ingredient,unité_mesure_ingredient)

    Le problème est que l'on peut dire qu'il existe un Df entre lib_type_ingredient et unité_mesure_ingredient dans l'entité TYPE_INGREDIENT, et donc que ce schéma n'est pas en 3 FN.
    comment supprimer cette contradiction apparente?

    sinon, pouvez vous me préciser si la normalisation du MCD doit se faire après le passage du MCD au MLD ou pas forcément.

    Merci encore beaucoup de votre aide.
    Cordialement.

    Natahlie Harbonne
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. [SHADOKS]

  2. #2
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    comment supprimer cette contradiction apparente?
    En n'ajoutant pas les id, je dirais... A valider.
    Hervé Delannoy, Ingénieur études&développement.

    Je n'accepte pas les demandes de mise en relation MSN/yahoo sans motif.
    ------------------------------------------------------------------------
    Si , ni , ne peuvent vous aider, mais nous oui, pensez à un pti et au !
    Merci de vous relire
    ____________________________________________________________________________________
    Recherche joueurs de "Magic" sur Lille et environs.
    Donner plutôt que jeter.

  3. #3
    Membre chevronné
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2007
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2007
    Messages : 797
    Points : 2 060
    Points
    2 060
    Par défaut
    Bonjour Nathalie,

    Selon l'hypothèse de départ :
    • nom_ingrédient -> lib_type_ingrédient (1)
    • lib_type_ingredient -> unité_mesure_ingredient (2)


    L'ajout des numéros sous-entend les DF :
    • num_ingredient -> nom_ingredient (3)
    • num_ingredient -> num_type_ingredient (4)
    • num_type_ingredient -> lib_type_ingredient (5)
    • num_type_ingredient -> unité_mesure_ingredient (6)


    Ce schéma n'est pas en 3FN car la DF (6) n'est pas directe, elle peut être obtenue par (5) + (2).
    Le cas de lib_type_ingredient est un peu plus "bizarre" : cet attribut est déterminé par nom_ingredient (1) et par num_type_ingredient (5), mais pas par la concaténation des deux (sinon il aurait existé la DF {num_type_ingredient, nom_ingredient} -> lib_type_ingredient). Donc il dépend de l'identifiant de la table dans laquelle il se trouve, mais aussi d'un autre attribut extérieur à cette table.


    Solution 1 :

    Décomposition de TYPE_INGREDIENT :
    T1(num_type_ingredient, lib_type_ingredient)
    T2(lib_type_ingredient, unité_mesure_ingredient)

    Création d'une nouvelle table :
    T3(nom_ingrédient, lib_type_ingrédient)

    INGREDIENT reste telle quelle :
    INGREDIENT(num_ingredient, nom_ingredient, num_type_ingredient)

    Toutes les tables sont en 3FN et toutes les DF existantes sont satisfaites (mais pas toi, j'imagine !)


    Solution 2 :

    Remettre en cause l'hypothèse de départ, c'est-à-dire l'existence des DF (1) et (2) après ta 2e modélisation.
    Le fait de décider que les ingrédients doivent être identifiés par un numéro doit répondre à un besoin, sinon c'est inutile. Ce besoin est probablement que nom_ingrédient est un mauvais identifiant. Du coup, la DF (1) est caduque. De même pour num_type_ingrédient qui rend caduque la DF (2).
    Et la contradiction est levée.


    JPhi33
    N'oubliez pas de consulter les Cours Merise et la F.A.Q. Merise
    _______________________________________________________

    Les Règles du Club Developpez.com
    Vous avez votre réponse ? Merci de cliquer sur

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 06/09/2017, 09h27
  2. Insert vide pour auto-incrémenter l'identifiant, est-ce possible ?
    Par thedev44 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 22/05/2014, 10h52
  3. [MySQL] Insertion d'un identifiant auto-incrementé dans une autre table
    Par knebhi dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 30/07/2009, 11h25
  4. [DOM] [Xerces] Insertion d'une entité
    Par Traroth dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 19/05/2008, 09h28
  5. Insert ds une column identity
    Par Trahwn dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 06/10/2003, 15h14

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