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 :

Normalisation problématique pour de la gestion de stock [MCD]


Sujet :

Schéma

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Points : 35
    Points
    35
    Par défaut Normalisation problématique pour de la gestion de stock
    Salut tout le monde,

    Je dois faire une BDD pour de la gestion de stock (matériel informatique), et j'ai une difficulté sur une partie du MCD, notamment concernant 3 entités :
    - modèles (regroupe le nom du modèle, sa marque, ses caractéristiques, ...)
    - produits (regroupe l'état dans lequel est un produit, son numéro de série, sa date de fin de garantie, ...)
    - sites (regroupe le nom de la vile, le bâtiment, l'étage, ... dans lequel est un produit)

    "produits" est lié à "modèles" par l'association "être du".
    "produits" est lié à "sites" par l'association "être situé dans".

    On a donc, avec les cardinalités :

    |SITES| {1,n}----(être situé dans)----{1,1} |PRODUITS| {1,1}----(être du)----{0,n} |MODELES|

    Le souci c'est que pour normaliser un MCD, quand une entité peut être remplacée par une association, il faut le faire ; en l'occurence, PRODUITS et ses associations latérales peuvent être remplacés par une seule association, à cause des cardinalités (cf http://cyril-gruau.developpez.com/merise/#LII-A-6).

    J'obtiens donc :

    |SITES| {1,n}----(être utilisé dans)----{0,n} |MODELES|

    L'association "être utilisé dans" contenant bien évidemment les attributs de la malheureusement décédée entité PRODUITS.

    Mais, nouveau problème, d'après la normalisation des attributs des associations (cf http://cyril-gruau.developpez.com/merise/#LII-B), les attributs d'une association doivent dépendre directement des identifiants de toutes les entités en association. Or, en prenant l'identifiant du modèle, et l'identifiant du site, on n'aboutira pas à un unique produit, puisqu'il peut tout à fait y avoir sur un même site plusieurs modèles identiques mais de numéro de série différents (normal quoi). Donc il faudrait une entité juste pour représenter les produits. Et donc je me retrouve dans la situation du début (boucle infinie spotted).

    Comment est-ce que je pourrais me sortir de ce mauvais pas ? Ai-je fait quelque chose de travers (j'ai pas encore trop d'expérience avec les MCD) ?

    J'ai pu lire qu'il n'était pas forcément obligatoire d'avoir un MCD normalisé, mais j'aurais quand même bien aimé y parvenir...

    Merci d'avance aux personnes qui prendront le temps de me lire !

  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Donnez svp vos règles de gestion.

    Je vous donne un exemple d'une règle bien formulée :
    Un CHEF DE PROJET peut diriger plusieurs PROJETs et un PROJET est dirigé par un CHEF DE PROJET
    En majuscule, le nom des entités concernée. Le verbe des 2 propositions représente votre association.

    Et voici un billet de blog qui pourra grandement vous aider je pense.

    Une fois vos règles de gestion définies, nous pourrons vous aider à établir un MCD correctement normalisé.
    Kropernic

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Points : 35
    Points
    35
    Par défaut
    Merci de votre réponse.

    Voici mes règles de gestion (j'ai renommé les associations pour mieux les exprimer dans les règles de gestion) :
    - Un PRODUIT représente un seul MODELE et un MODELE peut être représenté par plusieurs PRODUITs.
    - Un SITE contient plusieurs PRODUITs et un PRODUIT est contenu dans un seul SITE.

    Le schéma mis à jour :
    |SITE| {1,n}----(contenir)----{1,1} |PRODUIT| {1,1}----(représenter)----{0,n} |MODELE|

    Cependant j'avoue ne pas comprendre l'utilité de votre demande ; ne le prenez surtout pas mal (ce n'est pas mon intention), mais étant donné que j'ai déjà mis les cardinalités sur mon schéma et expliqué à quoi correspondent les entités, d'une part donner les règles de gestion me semble redondant, et d'autre part, comme je l'ai dit plus tôt, c'est plutôt la normalisation qui me pose problème.

  4. #4
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Y a pas de mal

    Un MCD découle des règles de gestions. Certes, vous aviez indiqué représenté un MCD avec les cardinalités mais l'erreur est humaine et je préfère vérifier que les bases sont correctes avant d'aller plus loin.

    Maintenant que les bases sont-là, pour ma part, la normalisation repose sur les attributs que l'on place dans chaque entité-type et entité-association.

    Il va donc falloir nous en dire plus sur vos produits, modèles et sites .

    J'ai brièvement regarder l'article derrière les 2 liens que vous donnez et je ne suis pas d'accord avec le 2e. Dans son exemple, on perd alors l'information de savoir si une personne est un enseignant ou un étudiant. Plutôt que du fusionner, il faut utiliser l'héritage. C'est malheureux mais du coup, comment être sûr qu'il n'y a pas d'autres erreurs ?
    Comme référence sur la normalisation, je préfère cet article-ci.
    Kropernic

  5. #5
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut Ne pas confondre guitare et naviguer...
    Bonjour,


    D'une façon générale, les énoncés des règles de gestion permettent d’y voir plus clair dans un projet, mais sont surtout utiles pour présenter celui-ci : ainsi sont-elles sont exigées dans un dossier de conception digne de ce nom, et cela depuis toujours. Il n'en demeure pas moins qu'elles ne sont pas la panacée, car selon le talent du rédacteur elles sont souvent ambiguës, incomplètes, obscures, voire contradictoires : c'est pour cela qu'il est important de les accompagner d'un MCD ou un diagramme de classes, bref d'une représentation dont le formalisme (la grammaire) est reconnu, diagramme qui bien sûr ne résout pas tout non plus, mais est d'une aide particulièrement efficace pour comprendre l'univers du discours et aussi recenser les anomalies.

    Votre représentation est donc la bienvenue :
    SITE| {1,n}----(contenir)----{1,1} |PRODUIT| {1,1}----(représenter)----{0,n} |MODELE|
    N.B. Vous pouvez ôter les accolades, on les réserve pour les ensembles (au sens de la théorie des ensembles). Exemple (traduction en langage D de la représentation graphique) :
    Code D : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    VAR SITE BASE RELATION    
        {IdSite, NomSite, ...}
        KEY {IdSite} ;
    
    VAR MARQUE BASE RELATION    
        {IdMarque, NomMarque, ...}
        KEY {IdMarque} ;
    
    VAR PRODUIT BASE RELATION
        {IdSerie, NoSerie, DateFinGarantie, IdSite, IdMarque, ...} 
        KEY {IdSerie}
        KEY {NoSerie}
        FOREIGN KEY {IdSite} REFERENCES SITE
        FOREIGN KEY {IdMarque} REFERENCES MARQUE ;

    Dans la référence que vous proposez, je lis ceci :
    « Lorsqu'autour d'une entité, toutes les associations ont pour cardinalités maximales 1 au centre et n à l'extérieur, cette entité est candidate pour être remplacée par une association branchée à toutes les entités voisines avec des cardinalités identiques 0,n. »
    Il y a pas mal de remarques à faire sur la forme. Quant au fond, ce qui est écrit est parfois vrai, parfois faux, il ne faut surtout pas l’appliquer à la lettre. En ce sens je vous cite :
    Citation Envoyé par Elindur Voir le message
    Or, en prenant l'identifiant du modèle, et l'identifiant du site, on n'aboutira pas à un unique produit, puisqu'il peut tout à fait y avoir sur un même site plusieurs modèles identiques mais de numéro de série différents (normal quoi).
    Vous venez de montrer que la formulation de l’auteur auquel vous faites référence n'est pas vraie dans tous les cas, et mérite d’être sérieusement corrigée. C’est exactement comme si en logique on écrivait :

    Prémisses :

    1. Ma voiture est une Renault Clio ;

    2. Les établissements Volfoni m’ont vendu ma voiture ;

    Conclusion :
    3. Volfoni n’aura pu vendre de Renault Clio qu’à un seul client (moi en l’occurrence)...

    Moralité : ne prenez pas à la lettre ce qu’écrivent d’aucuns et qui vous choque.


    Citation Envoyé par Kropernic Voir le message
    Pour ma part, la normalisation repose sur les attributs que l'on place dans chaque entité-type et entité-association.
    Le tout est de se mettre d’accord sur le sens que l’on donne au mot « normalisation ». La référence que vous citez s’appuie sur la théorie relationnelle, mais, par exemple, Merise a sa propre définition (cf. le principal ouvrage de référence sur Merise : « H. Tardieu, A. Rochfeld, R. Colletti. La Méthode MERISE, Tome 1. Principes et outils. (Les Éditions d'organisation. 4ème impression, septembre 1989)) » :
    « La normalisation permet de s’assurer que chacune des propriétés ne peut être vérifiée sur un sous-ensemble de la collection de la relation-type »

    La normalisation selon l’auteur auquel vous faites référence est en fait un ensemble de conventions souvent utiles, mais à l’occasion trop simples et contestables.

    Bref, Elindur, conservez votre schéma initial et ne faites pas confiance les yeux fermés.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, 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
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Points : 35
    Points
    35
    Par défaut
    @Kropernic

    OK, je comprends mieux ^^

    Concernant le 2ème lien, l'exemple avec lequel vous n'êtes pas d'accord portait sur la normalisation des noms (et la fusion d'entités homogènes), donc je pense que l'auteur avait juste fait en sorte de donner un exemple simple de 2 entités similaires, pour que le lecteur comprenne ce qu'il voulait dire et sans aucun autre but. Mais je suis de votre avis, si c'était un cas réel, ne pas pouvoir différencier un étudiant et un professeur serait problématique (d'ailleurs il me semble que l'article parle d'héritage vers la fin).

    Le paragraphe auquel je faisais référence avec ce lien (http://cyril-gruau.developpez.com/merise/#LII-B-1) est en fait plus vers le bas de la sous-partie (malheureusement pas d'ancre directe vers lui...), et s'intitule :
    Normalisation des attributs des associations (importante) : les attributs d'une association doivent dépendre directement des identifiants de toutes les entités en association.

    @fsmrel

    Le sérieux des membres de développez.com m'étonnera toujours ; votre réponse est incroyablement complète et précise, merci beaucoup !

    J'ai été jeter un oeil sur l'article sur la normalisation dont vous et Kropernic parlez ; en fait je l'avait déjà apercu auparavant, et j'y avais lu en diagonale 2-3 choses. Les explications sont très complètes (à l'image de votre réponse puisque vous en êtes l'auteur), un peu trop peut-être ? Toujours est-il qu'en fait je comptais suivre la méthode MERISE et donc, devant une telle quantité d'informations, je n'ai pas plus approfondi, contrairement au document de Cyril Gruau.

    Concernant vos conseils à propos des directives/conventions de normalisation, c'est effectivement parce que j'avais un doute que je suis venu demander ici l'avis de membres plus expérimentés. L'article me semble fiable, mais comme vous dites, il vaut mieux considérer ces conventions comme des conseils éclairés valables de manière générale plutôt que comme des commandements absolus et gravés dans la roche.

    En tout cas, merci beaucoup à vous deux, sujet résolu !

    PS: Et la prochaine fois, je posterais au bon endroit ; je viens de m'apercevoir qu'en fait j'ai bêtement posté dans la section "ALM > Modélisation > Schéma" alors que j'aurais du le faire dans la section "ALM > Méthodes > Merise"...

  7. #7
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par Elindur Voir le message
    PS: Et la prochaine fois, je posterais au bon endroit ; je viens de m'apercevoir qu'en fait j'ai bêtement posté dans la section "ALM > Modélisation > Schéma" alors que j'aurais du le faire dans la section "ALM > Méthodes > Merise"...
    N'en faites rien, 9 fois sur dix ce qui a trait à la modélisation des données est transféré vers le forum Schéma...
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, 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
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

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

Discussions similaires

  1. Choix du langage pour logiciel de gestion de stock et commandes
    Par plex dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 15/09/2017, 16h29
  2. [AC-2013] Relations dans Access pour BD de gestion de stock
    Par florian1106 dans le forum Access
    Réponses: 5
    Dernier message: 18/10/2013, 17h26
  3. Réponses: 9
    Dernier message: 28/08/2006, 12h19
  4. Recherche base access pour gestion de stock avec picking
    Par Cedric1979 dans le forum Access
    Réponses: 3
    Dernier message: 15/02/2006, 14h37

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