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 :

Débutant-Validation modélisation BDD inventaire d'optique [AC-2013]


Sujet :

Modélisation

  1. #1
    Membre régulier
    Femme Profil pro
    Ingénieur laser
    Inscrit en
    Septembre 2014
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur laser
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 98
    Points : 76
    Points
    76
    Par défaut Débutant-Validation modélisation BDD inventaire d'optique
    Bonjour,

    Voilà, j'ai proposé la création d'une BDD pour gérer les optiques de mon laboratoire (y en a beaucoup).
    Je pense que je serai la seule à entrer les informations dans cette base (au moins dans un premier temps).

    Donc voici les informations:

    Nous avons beaucoup d'optiques que j'aimerai identifier séparément (un numéro par optique, ce numéro permettant en outre de donner les caractéristiques des optiques). Cependant ces optiques sont très limitées dans leur type (miroirs, lentilles,...) et nous les commandons à un certain nombre de fournisseurs (pas tant que ça en fait).

    J'ai donc imaginer faire 4 tables:

    - Table Fournisseurs (nom, adresse, contact, info contact)
    - Table Produits fournisseurs (Réf fournisseur, caractéristiques de cette réf,...)
    - Table Commande (N°commande, Nom fournisseur, devis,...) Dois-je mettre le n° de mon optique, la réf du fournisseur ou les deux?
    - Table Optique (N°Optique, Réf fournisseur, N° commande, Info optique,...)

    Les relations que je vois entre les tables étant:
    Fournisseurs - Commandes: 1-N
    Fournisseurs - Produits fournisseurs: 1-N
    Commandes - Optiques: 1 -N

    Voilà mon idée, aurais-je omis de penser à quelque chose d'après-vous? Avez vous toutes les informations pour répondre à cette question? Sinon je me ferais un plaisir de vous répondre.

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Femtozaza,

    Voilà un modèle sur lequel tu peux te baser, l'ayant mis en oeuvre dans plusieurs de mes projets.

    Nom : Capture.JPG
Affichages : 2426
Taille : 66,5 Ko

    La table Commandes est baptisée en table Mouvements acceptant soit les les entrées et sorties (clé secondaire : #TypeMouvement). La nature de mouvements permettant de spécifier le motif du mouvement (achat, dons, vols, casse, vente., régularisation inventaire...)

    Chaque mouvement est rattaché à un bordereau (uniquement pour les achats).

    Un produit est rattaché à un fournisseur avec comme propriétés un id (clé primaire) et un code fournisseur. La gestion des familles permet de typer le type d'articles (miroirs, lentilles...).

    Ce modèle ne prends pas en charge le rapprochement entre des bons de commandes (gestion des reliquats...) ainsi que la gestion d'inventaire.

    JimBolion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  3. #3
    Membre régulier
    Femme Profil pro
    Ingénieur laser
    Inscrit en
    Septembre 2014
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur laser
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 98
    Points : 76
    Points
    76
    Par défaut
    Merci pour cette réponse très rapide et très intéressante.
    J'avais justement un problème pour la gestion de mes matériels car il est évident que les caractéristiques d'un miroir et d'une lentille ne sont pas les mêmes, et que donc pouvoir gérer le type d'optique à part me permettra probablement d'entrer les informations de façon plus efficace.

    Toutefois j'aimerai savoir ce que vous pensez de ma conversion de votre modèle:

    T_Mouvements => T_Commandes
    T_Produits => T_Produits (les réf et données fournisseur)
    {T_Fournisseurs;T_Adresses; T_CodesPostaux} => T_Fournisseurs - J'en profite pour demander l'intérêt de séparer les 3 informations
    T_Familles => T_Type (d'optique: Miroir, lentille,...)

    Et alors je suis un peu coincée pour l'optique numérotée, comme vous me dites que ce modèle ne convient pas à un inventaire je suis sceptique, mais je pourrai peut-être simplement ajouter une table T_Optique qui contiendrai le N° d'optique bien sûr, le N° de commande (sachant qu'il peut y avoir plusieurs optique dans une commande mais pas l'inverse), le type d'optique et les informations d'usure, de disponibilité et de position (si l'optique est utilisée).

    En tout cas merci de m'aider, ça m'évitera sans doute des erreurs grossières.

    Edit:

    Je vais tacher d'expliquer mon soucis:
    Dans T_Familles, vous avez 2 champs: un champ id et un champ description.
    Or de mon coté, dans T_Type, je voulais mettre Lentille, miroir, .... Or je peux avoir des miroirs de différents types, des lentilles avec des focales différentes,...
    J'ai alors pensé faire une Table caractéristiques, mais au final je ne vois pas trop comment je pourrais m'en servir.
    Donc en gros ma question est: dois-je faire abstraction des caractéristiques utiles en fonction du type d'optique pour l'instant et ne les faire apparaître qu'au moment de la mise en place des formulaires?

    Voici un début de ce que pourrait être ma Base, ça vous aidera peut-être à mieux cerner ce qui m'intéresse, bien que j'ai un peu l'impression d'être partie de travers:
    http://img15.hostingpics.net/pics/42...BDDOptique.jpg

    Je pense que je n'entrevoie pas encore bien les possibilités (bien que je me rende compte qu'elles sont énormes), et surtout la façon dont tout ceci va travailler ensemble.
    Je précise que j'ai lu le tuto sur les bases d'access et que j'ai commencé celui sur les requêtes.

  4. #4
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Femtozaza bonsoir,

    T_Mouvements => T_Commandes
    T_Produits => T_Produits (les réf et données fournisseur)
    {T_Fournisseurs;T_Adresses; T_CodesPostaux} => T_Fournisseurs - J'en profite pour demander l'intérêt de séparer les 3 informations
    T_Familles => T_Type (d'optique: Miroir, lentille,...)
    Concernant le nom de T_Mouvements, elle me semble plus logique car il s'agit d'intégrer ici à la fois les sorties et entrées. La notion de commandes ayant pour vocation uniquement les entrées. Personnellement j'appelle commande un état prévisionnel des entrées (reliquats, erreurs à la livraison).
    Pour les types à ta guise (type est généralement réservé pour les typages de données et quelque peu abstrait).

    Concernant les adresses mon modèle me permet de gérer également les clients (famille et même adresse). Dans ton cas, tu peux effectivement intégrer la notion d'adresse dans la fiche fournisseur. Concernant la table codePostaux, je conserverai cette table pour éviter toute redondance et faciliter les opérations de maintenance (une erreur sur une ville implique une seule modification).

    Et alors je suis un peu coincée pour l'optique numérotée, comme vous me dites que ce modèle ne convient pas à un inventaire je suis sceptique, mais je pourrai peut-être simplement ajouter une table T_Optique qui contiendrai le N° d'optique bien sûr, le N° de commande (sachant qu'il peut y avoir plusieurs optique dans une commande mais pas l'inverse), le type d'optique et les informations d'usure, de disponibilité et de position (si l'optique est utilisée).
    Le modèle intègre bien évidemment le stock théorique (que tu obtiendras aisément par requête sur les tables des mouvements : Somme des achats - somme des ventes) mais ne reflète en rien le stock physique. Un inventaire nécessite une ressaisie complète des articles (facilement identifiable grâce aux codes : prévoir l'impression d'étiquettes avec code barre dans ce cas). Une table T_inventaires permet donc à l'issue de la saisie de matcher (faire correspondre) les deux stocks et afficher les écarts.

    autopub : http://jimbolion.developpez.com/articles/generateur/

    Je vais tacher d'expliquer mon soucis:
    Dans T_Familles, vous avez 2 champs: un champ id et un champ description.
    Or de mon coté, dans T_Type, je voulais mettre Lentille, miroir, .... Or je peux avoir des miroirs de différents types, des lentilles avec des focales différentes,...
    J'ai alors pensé faire une Table caractéristiques, mais au final je ne vois pas trop comment je pourrais m'en servir.
    Donc en gros ma question est: dois-je faire abstraction des caractéristiques utiles en fonction du type d'optique pour l'instant et ne les faire apparaître qu'au moment de la mise en place des formulaires?
    Oui je connais cette problématique, et plusieurs écoles à ce sujet. Il faut identifier l'article de manière unique (exemple un pantalon avec sa couleur, sa taille, sa longueur de jambe). La notion de coloris peut être interprétée de différentes façons (caractéristique ou propriété de l'article). La notion de matière également peut être ambiguë (cette propriété modifie t'elle son prix d'achat et dans ce cas elle est considérée comme une propriété et non une caractéristique).
    Rien ne t'empêche d'intercaler entre la table article et mouvements une table T_produitsCaracteristiques(id, #idproduit, caracteristique1, carac2,... prix d'achat).
    Dans ce cas ce n'est plus l'id du produit dans la table mouvements mais l'idcaracteristique (attention le prix doit être également identifié dans la table mouvements : remise ponctuelle, article offert...). Certains modèles prévoit un champ dans la table mouvements afin d'identifier de manière unique un article (N° de série par exemple). A toi d'évaluer si cette contrainte est nécessaire.

    Pour l'élaboration d'un projet, l'étape d'architecture est essentielle car elle impacte ton développement futur (mauvais modèle = mauvais projet) comme un architecte en terme de construction immobilière. Il faut que celui-ci évalue tes décisions futures en termes évolutifs (rien de plus désagréable que de casser des pans entiers de l'application et j'ai des anecdotes à revendre).

    N'hésites pas à prendre conseil auprès des personnes du forum et sur le chat afin de valider la viabilité de ta conceptualisation. Tu as adopté la bonne méthode et ton approche était déjà le fruit d'une réflexion intelligente.

    Par contre un index (nom_fournisseur) comme proposé ne convient pas du tout. La normalisation est aussi un aspect crucial dans l’élaboration (pas d'espaces, pas d'accents, attention aux mots réservés). Regardes ici : http://office.microsoft.com/fr-fr/ac...sreservedwords

    Cordialement

    JimboLion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  5. #5
    Membre régulier
    Femme Profil pro
    Ingénieur laser
    Inscrit en
    Septembre 2014
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur laser
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 98
    Points : 76
    Points
    76
    Par défaut
    Merci encore pour ta réponse,
    Je crois qu'il faut que je réfléchisse encore car j'ai l'impression que ton modèle ne peut pas aller pour mon cas (mais toutes les infos que tu donnes sont intéressantes et me donnent à réfléchir). Je m'explique:

    Imaginons que j'ai 2 lentilles identiques, toutes les caractéristique identiques, tout pareil comme dirait l'autre... Et bien je dois pouvoir les identifier de façon unique car au cours du temps l'une risque de s'ébrécher par exemple mais être toujours utilisable pour certains montages, mais surtout pas à d'autres endroits plus critiques. D'où la question qui me vient (sans recul aucun) dois-je garder un historique de mes optiques (mais ça personne ne peut répondre à ma place).

    Il faut que je peaufine le but précis de l'outil que je veux créer sinon je risque de tourner en rond (mais la difficulté c'est que ne maîtrisant pas toutes les possibilités, je m'étais auto-limitée, j'ai découvert que beaucoup de choses sont possibles je vais donc tenter de prévoir l'outil idéal en m'autorisant à rêver).

    Je reviens vite ici pour préciser mon cahier des charges et présenter ma modélisation.
    Merci encore pour le temps consacré à mon problème.

  6. #6
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Femtozaza,

    Oui là encore je ne connais que trop bien ta problématique !
    Ton exemple précis donne à réfléchir : j'ai deux produits en tout point identiques dont l'un revient ébréché mais réutilisable. Dans ce cas ton modèle doit interdire des quantités différentes de un dans ta table mouvements (que l'application t'y autorise est une chose, mais l'injection doit se faire de manière unique). Cela te permets de garder la traçabilité au niveau du mouvement (ton id mouvement devenant alors le numéro interne de ton produit).

    Avec un exemple précis on peut matérialiser ton modèle. Mais ta source de réflexion ne fait que prétendre à la viabilité de ton projet.

    JimboLion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  7. #7
    Membre régulier
    Femme Profil pro
    Ingénieur laser
    Inscrit en
    Septembre 2014
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur laser
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 98
    Points : 76
    Points
    76
    Par défaut
    Voilà! La base de ma base (?!) de données est bien de numéroter mes optiques de façon unique pour chacune d'elle..
    Tout ceci pour pouvoir facilement identifier leurs caractéristiques, les retrouver, pouvoir en racheter. Effectivement aussi garder en mémoire ce à quoi on les a utilisé (car parfois on remonte une manip 6 mois plus tard ça peut-être bien de savoir quelle optique on a utilisé), des fois d'un même fabricant avec la même référence on peut avoir des surprise....

    Bref, faut que je précise exactement ce que je veux faire de façon optimale en sachant qu'il y a peu de limite finalement j'ai l'impression (à part ma maîtrise qui est au point zéro hihi).
    Je vais y travailler sérieusement d'ici vendredi (faut quand même que je les utilise un peu ces optiques aussi ) et je reviendrai avec tout ce que j'aurai mis en place.
    Merci encore.

  8. #8
    Membre régulier
    Femme Profil pro
    Ingénieur laser
    Inscrit en
    Septembre 2014
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur laser
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 98
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    Me revoilà avec de nouvelles questions.
    Ne maîtrisant rien, je commence tout juste à appréhender un certain nombre de possibilités, je suis un peu bloquée pour la modélisation de mon système.



    En fait j'ai du mal avec les relations entre ma table Commandes et mes tables Optiques fournisseur et Optiques.

    -Je n'arrive pas à voir comment créer une table qui pourra m'indiquer la quantité d'optiques fournisseur commandé, sachant qu'il peut y avoir plusieurs références fournisseur dans une seule commande, et bien sur plusieurs commandes peuvent contenir la même référence fournisseur. Je comprends qu'il s'agit d'une relation plusieurs à plusieurs et qu'il va donc me falloir créer une table intermédiaire mais j'avoue que j'ai du mal à le mettre en place (je suis un peu boulet parfois, et là je fais un blocage, malgré les tuto intéressants que j'ai lu).

    -Je n'arrive pas non plus à relier ma table optique...
    En fait je viens de me rendre compte que je suis débile (je le savais déjà mais je viens de me prendre une bonne piqûre de rappel ^^). Pour les tables commande/optiques, il me suffit de mettre le numéro de commande dans la base optique vu qu'une optique ne peut venir que d'une commande... Donc après c'est en créant un état que je pourrais (si ça m'intéresse) voir toutes les optiques commandées sur la même commande. Je vais rajouter la relation.

    Du coup, est-ce que vous pourriez me dire si je prends bien la bonne direction pour ma base?
    J'ai l'impression que la création de la "table lien" entre mes tables commandes et optiques fournisseurn'est pas bien compliquée (il en est question dans le cours sur les bases d'access), mais je n'arrive pas à voir comment le mettre en place. Et dois-je faire apparaitre ma table dans ma modélisation sachant que, je suppose, c'est une requête qui va me permettre la création de cette table.

    Je pense qu'il doit être possible de créer un historique des mouvements d'optique (sur une manip, en stock,...) j'ai donc ajouté un champ DateLoc, mais je ne vois pas bien comment m'en servir, je suppose que je vais devoir créer une requête sur cette date, mais est-il possible d'avoir un historique qui se ferait automatiquement dès que je change le champ DateLoc?

    Question subsidiaire: Je n'arrive pas à appliquer l'intégrité référentielle avec ma table fournisseur, je suppose que c'est parce que j'utilise le nom du fournisseur. Sera-t-il possible au moment de la saisie des informations que le logiciel retrouve l'IdFourn tout seul à partir du nom de ce founisseur? (Sachant qu'il n'y a pas deux fournisseurs ayant le même nom)?

    Voilà, beaucoup de choses dans ce message, peut-être que je pars un peu dans tous les sens, n'hésitez pas à me dire.
    Merci d'avance pour vos réponses.

  9. #9
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Vous êtes en train de vous poser des questions sur le « comment », mais il faut d’abord être clair sur le « quoi ».
    Il serait bien de décrire de façon précise votre système, énoncer les règles de gestion des données.

    Êtes-vous d’accord avec les règles de gestion suivantes, relatives à votre société (que je surnommerai Optices) ?

    (R1) Un fournisseur donné propose un catalogue pouvant comporter plusieurs références d’optiques ;

    (R2) Un fournisseur donné peut faire l’objet de plusieurs commandes de la part d’Optices ;

    (R3) Une commande n’est passée qu’à un seul fournisseur ;

    (R4) Une commande comporte au moins une ligne de commande et au plus plusieurs ;

    (R5) Chaque ligne de commande porte sur une seule référence du catalogue du fournisseur et fait mention de la quantité commandée ;

    (R6) Une optique se réfère à une seule référence du catalogue du fournisseur.

    Remarque. Vous avez écrit :

    Citation Envoyé par Femtozaza Voir le message
    Une optique ne peut venir que d’une commande.
    On ajoute donc la règle de gestion correspondante :

    (R7) Une optique se réfère à une seule commande.

    Le diagramme classique traduisant les règles de gestion des données ci-dessus est le suivant (je n’ai pas fait figurer les attributs qui figurent dans votre diagramme, mais là n’est pas l’important) :




    J’attire votre attention sur le fait que, pour une ligne de commande donnée, en suivant le chemin

    LIGNE_COMMANDE -> COMMANDE -> FOURNISSEUR

    alors on peut atteindre un certain fournisseur, tandis qu’en suivant le chemin

    LIGNE_COMMANDE -> FOURNISSEUR_CATALOGUE -> FOURNISSEUR

    alors rien n’interdit qu’on atteigne un autre fournisseur : ça fait désordre, c’est une anomalie (cette observation vaut aussi pour la table OPTIQUE, mutatis mutandis).

    Pour empêcher cela, il est nécessaire de mettre en œuvre ce qu’on appelle une contrainte de chemin, en fait un trigger dans le contexte des SGBD SQL du moment, mais programmer ça avec ACCESS c’est plutôt coton.

    Un mot en passant sur les clés primaires et les clés alternatives. Examinons un échantillon de fournisseurs :




    L’attribut FournisseurId est artificiel et n’est pas visible par l’utilisateur, lequel ne connaît que la clé « naturelle » {FournisseurRef}. L’attribut FournisseurId fait l’objet de la clé primaire {FournisseurId} de la table FOURNISSEUR, tandis l’attribut FournisseurRef, fait l’objet d’une clé alternative {FournisseurRef} (unicité garantie, comme dans le cas de la clé primaire).

    Pour assurer le coup en ce qui concerne la contrainte de chemin, vous pouvez utiliser l’identification relative, c'est-à-dire identifier les commandes relativement aux fournisseurs :

    La 1re commande passée auprès du fournisseur Volfoni, la 2e commande passée auprès de ce même fournisseur, puis la 3e, etc. Pour les autres fournisseurs, même principe :

    Un échantillon de commandes :




    On utilise aussi l’identification relative pour le catalogue fournisseurs (table FOURNISSEUR_CATALOGUE), et au bout du compte le diagramme devient le suivant :




    Dans ce diagramme, la table COMMANDE a pour clé primaire la paire {FournisseurId, CommandeId}, tandis que l’attribut CommandeNumero y fait l’objet d’une clé alternative singleton {CommandeNumero}. Là encore, la clé primaire n’est pas visible par l’utilisateur, lequel ne connaît que la clé naturelle {CommandeNumero} qui est la seule pour laquelle il porte un intérêt.

    De la même façon, La table FOURNISSEUR_CATALOGUE a pour clé primaire la paire {FournisseurId, OptiqueCatId}, tandis que l’attribut OptiqueReference fait l’objet d’une clé alternative {OptiqueReference}. Une fois de plus, la clé primaire est cachée pour l’utilisateur, qui ne connaît que la clé naturelle {OptiqueReference}.


    Pour sa part, la table OPTIQUE peut être branchée sur la table LIGNE_COMMANDE :





    Il y a d’autres choses à dire, mais auparavant, sommes nous d’accord sur le cœur du modèle ? En effet, j’ai pu mal interpréter les règles qui figurent dans vos messages et l'identification relative veut vous déboussoler...
    (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.

  10. #10
    Membre régulier
    Femme Profil pro
    Ingénieur laser
    Inscrit en
    Septembre 2014
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur laser
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 98
    Points : 76
    Points
    76
    Par défaut
    Tout d'abord merci pour votre réponse.
    Je dois dire qu'il m'a fallu du temps pour démêler ces histoires d'identifications relatives mais je crois que je commence à voir la lumière...

    Commençons par les règles de gestion. Je les avais pensé mais effectivement je ne les avais pas édictées comme ça, mais toutes sont vraies et j'ai l'impression qu'elles sont toutes là, merci pour cet éclaircissement.

    Ensuite pour l’identification relative je me heurte à un petit blocage en ce qui concerne la relation entre la table COMMANDE et la table LIGNE_COMMANDE. Puisque vous disiez auparavant qu'en suivant le chemin

    LIGNE_COMMANDE -> COMMANDE -> FOURNISSEUR

    je ne pouvais remonter qu'à un seul fournisseur, pourquoi faire cette double clé primaire?
    Sinon je comprends tout le reste et ça me semble correspondre à la base de ce qui m'intéresse effectivement.

  11. #11
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonjour,


    Citation Envoyé par Femtozaza Voir le message
    Pourquoi faire cette double clé primaire ?
    Le but est de propager l’attribut FournisseurId jusqu’au niveau de la ligne de commande, sans quoi on ne peut pas garantir la règle de gestion (R3).

    Revenons sur la modélisation classique :




    Avec le système d’identification utilisé (que j’appellerai « identification absolue »), bien que ce ne soit pas légitime, il est parfaitement légal de produire ce qui suit, et aucun SGBD n’aura de raison de rouspéter :



    La règle de gestion (R3) n’est pas respectée dans la mesure où, via COMMANDE, la commande 1 fait référence à Volfoni Frères alors que, via FOURNISSEUR_CATALOGUE, pour cette commande, la 1re ligne fait manifestement référence à Delafoy Père & Fils (concerto 5 en quantité 10), tandis que la 2e ligne fait référence à Fernand Naudin (Montauban vert en quantité 3) : on a une commande faisant — directement ou non — référence à trois fournisseurs, ça fait vraiment désordre et il suffit d’un moment d’inattention de la part de l’utilisateur pour arriver à ce genre de situation, errare humanum est.


    Si ce qu’on veut commander c’est du concerto 5 et du Montauban vert, alors dans le contexte de l’identification relative, les commandes ne pourront faire autrement que référence à Delafoy Père & Fils dans le 1er cas et à Fernand Naudin dans le 2e cas ; vous observerez qu’on n’arrivera pas à enfreindre la règle (R3) :




    En effet, la table LIGNE_COMMANDE comporte les paires d’attributs {FournisseurId, CommandeId} et {FournisseurId, OptiqueCatId} selon lesquelles c’est bien le même fournisseur auquel on fait référence, via COMMANDE d’une part, via FOURNISSEUR_CATALOGUE d’autre part. Sans la propagation de l’attribut FournisseurId jusqu’à LIGNE_COMMANDE, point de salut, sinon à mettre en place des triggers ou autres mécanismes de contrôle automatique.

    CQFD

    Do you agree ?
    (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.

  12. #12
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Addendum


    Je note que votre table OptiqueFournisseur a les attributs suivants :

    TypeOptique, TypeLentille, TypeMiroir.

    Les types correspondant à ces attributs sont-ils pertinents pour chaque optique ? Ne dépendent-ils pas à l'occasion les uns des autres ? (vous aviez écrit : « ces optiques sont très limitées dans leur type (miroirs, lentilles,...) »)
    (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.

  13. #13
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    fsmrel, Femtozaza bonjour


    Après la proposition de conceptualisation proposée par fsmrel, j'ai volontairement laissé celui-ci s'exprimer sur la question (et avec qualité je l'avoue) tout en suivant naturellement le fil de discussion. Une remarque avait été soulevé par Femtozaza et je cite :

    Imaginons que j'ai 2 lentilles identiques, toutes les caractéristique identiques, tout pareil comme dirait l'autre... Et bien je dois pouvoir les identifier de façon unique car au cours du temps l'une risque de s'ébrécher par exemple mais être toujours utilisable pour certains montages, mais surtout pas à d'autres endroits plus critiques. D'où la question qui me vient (sans recul aucun) dois-je garder un historique de mes optiques (mais ça personne ne peut répondre à ma place).
    Admettons donc que deux lentilles aient étés livrées le même jour, je ne vois dans le modèle aucune traçabilité sur l'entrée en stock de la lentille (une commande permettant n saisies de quantités). Ma proposition étant alors de coder chaque entrée (un id auto-increment de l'entité commande par exemple) et supprimer la notion de quantité (ou arbitrairement à 1).
    Reste à déterminer la suite du modèle (dotation, vente...) pour propager cette valeur.

    En effet, la table LIGNE_COMMANDE comporte les paires d’attributs {FournisseurId, CommandeId} et {FournisseurId, OptiqueCatId} selon lesquelles c’est bien le même fournisseur auquel on fait référence, via COMMANDE d’une part, via FOURNISSEUR_CATALOGUE d’autre part. Sans la propagation de l’attribut FournisseurId jusqu’à LIGNE_COMMANDE, point de salut, sinon à mettre en place des triggers ou autres mécanismes de contrôle automatique.
    Parfaitement bien vu, il n'est pas utopique d'imaginer le même code produit chez deux fournisseurs différents.

    La notion de prix a t'elle une importance, l'inventaire doit-il se réaliser quantitativement et valorisée ?

    Concernant les attributs d'un article, Femtozaza un peu plus d'explications. J'ai dans mon métier des spécifiés similaires (une référence portant plusieurs centaines de combinaisons possibles lorsque celui-ci est décliné en rayon, diamètre, dioptries...).

    JimBolion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  14. #14
    Membre régulier
    Femme Profil pro
    Ingénieur laser
    Inscrit en
    Septembre 2014
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur laser
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 98
    Points : 76
    Points
    76
    Par défaut
    Merci à vous deux!

    fsmrel, je comprends mieux la "double identification" sur les commandes aussi, merci.
    Pour ta question sur les types, effectivement ils dépendent un peu les un des autres:

    Si TypeOptique est lentille, je n'ai aucune raison de demander de quel type de miroir il s'agit. Par contre pour la suite j'ai besoin de savoir si elle est cylindrique ou sphérique (focalisation sur un axe ou un point).
    De même pour les miroirs car il est possible d'avoir des optiques qui sont des miroirs sphériques qui donc réfléchissent et focalisent la lumière.

    Je me rend compte en l'écrivant que du coup peut-être qu'il serait plus judicieux de regrouper les champ typeOptique et TypeLentille et TypeMiroir, il me suffirait de faire la séparation dans TypeOptique (Miroir, Miroir Sphérique, Miroir Cylindrique,...), ça simplifierai sans doute l'ensemble.

    Jimbolion, je pense qu'effectivement pour l'instant il n'y a pas tous les attributs dans la base, mais si j'ai bien compris on en est à la gestion de base. J'imagine que la suite va venir, notamment en ajoutant des informations dans la base OPTIQUE.
    Pour la traçabilité, avec le ComId (aussi présent dans la table OPTIQUE), on pourra remonter aux informations de livraison, non?

    Pour ce qui est de l'importance du prix, elle en a sur la commande (intéressant pour nous de savoir combien coûtent certaines optiques, notamment celles qui sont sur mesure). Dans la table OPTIQUE_FOURNISSEUR, ce n'est pas important, c'est plus le côté historique du prix qui m'intéresse.

    Pour ce qui est des références, au niveau fournisseur, en général elles sont liées à un produit particulier, avec effectivement un début commun, pour des propriétés identiques, mais qui vont changer avec le diamètre, la focale,... De plus certain fournisseurs, vont coder en premier la taille de l'optique et d'autre le traitement... donc pour ce qui est des attributs intéressants pour moi, il me semble les avoir fait apparaître dans le dernier modèle que j'ai présenté. Tout en sachant qu'effectivement, toutes les optiques n'auront pas besoin de toutes les informations (ex: inutile de donner la focale d'un miroir plan,...)

    Après je ne maîtrise pas du tout ACCESS mais je vous avoue avoir une petite idée en tête: La numérotation automatique de mes optiques en fonction de leur Caractéristiques (différent d'un simple Id automatique, mais si j'ai bien compris, il sera peut-être plus simple de garder les deux ID).

    Merci de m'aider, je visualise mieux un certain nombre de choses, j'apprends du vocabulaire,... et j'imagine que ce n'est pas fini.

  15. #15
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir,



    Citation Envoyé par Femtozaza Voir le message
    il serait plus judicieux de regrouper les champ typeOptique et TypeLentille et TypeMiroir, il me suffirait de faire la séparation dans TypeOptique (Miroir, Miroir Sphérique, Miroir Cylindrique,...), ça simplifierait sans doute l'ensemble.
    C’est effectivement une possibilité.

    Une autre solution fonctionnellement « plus riche » consiste à spécialiser les optiques. En l’occurrence, les diagrammes à la ACCESS ne permettent pas de prendre en compte formellement la spécialisation des types d'entités, il faut en passer par un digramme de classes UML ou un MCD merisien (ou plus généralement entité/relation). Quoi qu’il en soit, cette spécialisation permet de mettre en évidence les caractéristiques propres à tel ou tel type d’optique.

    Pour illustrer la modélisation de la spécialisation des types d’entités, considérons le cas du référentiel PERSONNES de l'entreprise Dubicobit (que je présente ici), selon lequel :

    — Une personne peut être un collaborateur Dubicobit ou un tiers ;

    — Un collaborateur peut être un directeur ou un employé ;

    — Un tiers peut être un client ou un fournisseur de Dubicobit.


    Représentons les choses au moyen d’un diagramme de classes UML :





    Vous observerez qu’on ne mélange pas tout dans une seule entité-type (ou classe en UML) PERSONNE et que chaque concept propre à une entité-type spécialisée (sous-classe) ne concerne bien que cette dernière : ainsi, un taux de remise ne vaut que pour un fournisseur. Si l’on s’intéresse aux taux de remise, du point de vue de la programmation c’est simple, on accédera directement à la table dérivée de l’entité-type (sous-classe) FOURNISSEUR.





    Pour en revenir aux optiques, à vous de voir si une modélisation « repliée » suffit ou si cela vaut le coup de spécialiser les optiques.

    En passant, tenir compte à l’occasion de l’heuristique papoue !




    Citation Envoyé par jimbolion Voir le message
    Une remarque avait été soulevé par Femtozaza et je cite :

    Admettons donc que deux lentilles aient étés livrées le même jour, je ne vois dans le modèle aucune traçabilité sur l'entrée en stock de la lentille (une commande permettant n saisies de quantités). Ma proposition étant alors de coder chaque entrée (un id auto-incrément de l'entité commande par exemple) et supprimer la notion de quantité (ou arbitrairement à 1).
    Chaque chose en son temps. Comme je l’ai précisé (cf. post #9), il s’agit d’abord de se mettre d’accord sur le cœur du modèle. On aura ensuite tout le loisir de compléter en fonction des besoins de l’application.

    Comme dit Femtozaza :
    Citation Envoyé par Femtozaza Voir le message
    J'imagine que la suite va venir, notamment en ajoutant des informations dans la base OPTIQUE.
    Si donc ce qui a déjà été fait tient la route, on pourra voir la suite du programme.


    Citation Envoyé par jimbolion Voir le message
    Parfaitement bien vu, il n'est pas utopique d'imaginer le même code produit chez deux fournisseurs différents.
    Le problème n’est pas là. Il s’agit fondamentalement d'interdire qu'une commande donnée contienne des lignes concernant des fournisseurs différents.
    (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.

  16. #16
    Membre régulier
    Femme Profil pro
    Ingénieur laser
    Inscrit en
    Septembre 2014
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur laser
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 98
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    Merci pour cette nouvelle réponse et ces explications (j'avoue que j'ai pas compris tout le vocabulaire de l'exemple que vous présentez dans votre cours, mais je comprends l'idée je crois).

    Si je dépliais il s'agirait de relier à un type d'optique un certain nombre de caractéristiques utiles pour cette optique, c'est ça? (j'espère que j'ai compris, je ne maîtrise pas du tout le sujet, et je me lance dans un projet ambitieux mais c'est très intéressant).

    J'aime l'heuristique papoue en tout cas, ça me va bien comme façon de compter

    Dans mon cas, j'ai effectivement plein de sortes d'optiques mais quand même toujours un peu les même. Le modèle déplié proposé me semble plus souple. La question est "est-ce que ça vaut vraiment la peine?" Et là pour répondre, je dois demander, est-ce que ça rajoute énormément de choses? Est-ce que du coup le modèle se complexifie beaucoup (surtout sous access)?

    En tout cas, merci encore de m'aider à réfléchir la base de ma table, je trouve ça impressionnant.

  17. #17
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir Femtozaza,


    Citation Envoyé par Femtozaza Voir le message
    Si TypeOptique est lentille, je n'ai aucune raison de demander de quel type de miroir il s'agit. Par contre pour la suite j'ai besoin de savoir si elle est cylindrique ou sphérique (focalisation sur un axe ou un point).
    De même pour les miroirs car il est possible d'avoir des optiques qui sont des miroirs sphériques qui donc réfléchissent et focalisent la lumière.

    Je me rend compte en l'écrivant que du coup peut-être qu'il serait plus judicieux de regrouper les champ TypeOptique et TypeLentille et TypeMiroir, il me suffirait de faire la séparation dans TypeOptique (Miroir, Miroir Sphérique, Miroir Cylindrique,...), ça simplifierai sans doute l'ensemble.
    Vous pouvez faire au plus simple et conserver dans la table FOURNISSEUR_CATALOGUE les attributs caractérisant les optiques (Dimensions, Epaisseur, Traitement, etc., en supposant qu’ils ont un sens pour tous les types d’optiques), et y supprimer les attributs TypeLentille, TypeMiroir. C’est l’attribut TypeOptiqueId qui, par référence à une table de types (appelons-la par exemple TYPE_OPTIQUE), permettra de savoir s’il s’agit d’une lentille ou d’un miroir (voire d’un biglotron, si tant est qu’un biglotron puisse faire l’objet d’un type d’optique...)





    D’où le diagramme :





    Vous pouvez aussi avoir une représentation moins basique de la table TYPE_OPTIQUE puisque vous distinguez les miroirs sphériques des miroirs cylindriques et autres raffinements :




    Notez que j’ai ajouté un attribut TypeOptiqueCode au cas où l’utilisateur souhaiterait disposer comme il l’entend d’une nomenclature des types d’optique. Vous noterez aussi en passant que, dans mes diagrammes, tous les attributs qui se terminent par « Id » (FournisseurId, CommandeId, OptiqueCatid, etc.) sont doublés d’un attribut dont les valeurs ont un sens pour l’utilisateur : FournisseurRef, CommandeNumero, OptiqueReference, etc.) A la suite d’Yves Tabourier, J’applique ici une règle fondamentale qu’il a développée dans son ouvrage (De l’autre côté de MERISE, page 80), et c’est une règle d’or qui reste malheureusement trop souvent méconnue, malgré ses plus de 25 ans d’âge :

    « ... la fonction d’une propriété est de décrire les objets (et les rencontres), alors que l’identifiant ne décrit rien. Son rôle fondamental est d’être sûr de distinguer deux jumeaux parfaits, malgré des descriptions identiques.
    L’expérience montre d’ailleurs que l’usage des “identifiants significatifs” (ou “codes significatifs”) a pu provoquer des dégâts tellement coûteux que la sagesse est d’éviter avec le plus grand soin de construire des identifiants décrivant les objets ou, pis encore, leurs liens avec d’autres objets... »

    Pour avoir effectué bien des audits de SI (systèmes d’information), j’ai pu constater ces dégâts, entraînant souvent la refonte des SI, victimes de la non application de cette règle de bon sens. Ainsi un identifiant n’est porteur d’aucune signification et donc est invariant.



    Citation Envoyé par Femtozaza Voir le message
    Si je dépliais il s'agirait de relier à un type d'optique un certain nombre de caractéristiques utiles pour cette optique, c'est ça?
    L’utilisation du verbe « relier » est certes possible, mais il faut viser le niveau sémantique. Dans l’exemple que j’ai donné, une prime de bilan ne vaut que pour les collaborateurs qui sont directeurs, ainsi c’est le verbe être qu’il faut employer : un directeur est un collaborateur, un employé est un collaborateur, et un collaborateur est soit un directeur, soit un employé. On peut dire qu’on a spécialisé plutôt que déplié l’entité-type COLLABORATEUR en DIRECTEUR d’une part et EMPLOYE d’autre part, parce qu’il se trouve que s’ils ont des caractéristiques communes (un matricule, un nom, un prénom, etc.), directeurs et employés ont néanmoins des caractéristiques qui les différentient radicalement, telles que la prime de bilan, ou le profil.

    Il en va des collaborateurs comme des tiers (lesquels, incidemment ne sont pas des personnes physiques, mais des personnes morales, au moins dans l’exemple) : ces derniers ont un numéro Siret, une raison sociale, et sans doute d’autres caractéristiques communes. Par contre on les spécialise en clients et fournisseurs car certaines caractéristiques diffèrent là aussi : les rabais que l’on consent aux clients sont sémantiquement différents des paliers de remise négociés avec les fournisseurs.

    Notez encore que le pendant de la spécialisation est la généralisation. Ainsi, constatant par exemple que les collaborateurs ont une adresse, tout comme les tiers (qui peuvent en avoir plusieurs), on peut très bien envisager de mutualiser ce genre de caractéristiques, en inventant une entité-type PERSONNE qui sera la généralisation des entités-types COLLABORATEUR et TIERS, alors que celles-ci sont a priori indépendantes. Désormais, un collaborateur est une personne, un tiers est une personne, tandis qu’une personne est soit un collaborateur, soit un tiers. Une fois cette généralisation effectuée, on rattachera une entité-type ADRESSE à l’entité-type PERSONNE : cette fois-ci c’est le verbe avoir qui évidemment s’impose : une personne a une (ou plusieurs adresses) :




    Ainsi, on a mutualisé la gestion des adresses des directeurs, des employés, des clients, et des fournisseurs. C’est du meccano, mais c’est rentable.


    Je ne sais pas si ça vaut le coup de procéder à la spécialisation/généralisation des optiques, intellectuellement, ou plutôt sémantiquement, c’est certainement un jeu intéressant, mais quant à la mise en oeuvre ça peut se discuter, il ne faut pas non plus monter une usine à gaz qui laisserait perplexes les papous (à spécialiser en papous papas et papous pas papas comme tout monde sait... )


    Encore bon courage...

    (Et n'oubliez pas de voter quand une réponse pu vous aider...)
    (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.

  18. #18
    Membre régulier
    Femme Profil pro
    Ingénieur laser
    Inscrit en
    Septembre 2014
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur laser
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 98
    Points : 76
    Points
    76
    Par défaut
    Merci encore pour ces précisions et la remarque sur l'importance d'un Id sans signification pour l'utilisateur pour le référencement.

    J'ai l'impression que pour mon cas il ne faut effectivement mieux pas faire une usine à gaz et je laisserai donc le type d'optique dans la table FOURNISSEUR_CATALOGUE.
    Du coup le modèle que vous m'aviez proposé au départ devrait correspondre non? En rajoutant les champs manquant bien sûr.

    Je pensais écrire de nouvelles règles mais en fait je n'ai pas l'impression que ce soit utile et j'avoue qu'à chaque fois je me laisse submergée par le comment... Ce qui m'empêche un peu d'avancer.
    Je vais donc poster ma pale copie de modélisation très inspirée de ce que vous aviez posté au départ. J'espère que vous pourrez continuer à me guider.

  19. #19
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonjour Femtozaza,


    Citation Envoyé par Femtozaza Voir le message
    Merci encore pour ces précisions et la remarque sur l'importance d'un Id sans signification pour l'utilisateur pour le référencement.
    Je dois donc ajouter des règles à celles que vous aviez écrites au départ non?
    Si les règles que vous voulez ajouter concernent seulement les identifiants artificiels, vous pouvez vous abstenir.

    Les règles de gestion sont là pour nous guider dans l’architecture, l’organisation de la structure des données à modéliser, et ceci est capital en ce qui concerne les relations entre les objets, d’où mon insistance à ce propos dans le post #9. Elles se rapportent exclusivement au « quoi », et passent sous silence les aspects purement techniques tels que la mise en œuvre d’identifiants artificiels « Tabourier » : quand je lis un diagramme, je vérifie rapidement si ces identifiants sont bien là, et s’ils sont absents je les ajoute d’office, mécaniquement, ce que je ne peux évidemment pas faire pour les règles de gestion puisque celles-ci relèvent exclusivement du « métier ».


    Les identifiants artificiels binôment avec les identifiants naturels (lesquels, relèvent du métier), et donnent lieu aux clés primaires des tables de la base de données, clés qui jouent un rôle essentiel sous le capot (opérations de jointure entre tables). En revanche, d’un point de vue sémantique, métier, ils n’apportent rien à l’utilisateur qui n’en a cure, ils ne font pas l’objet d’une description particulière, leur présence dans l’en-tête des entités-types (donc des tables dans le contexte ACCESS) suffit largement avec peut-être d’un bref rappel à la Tabourier quant à leur rôle, pour que le lecteur découvrant le dossier de conception ne se perde pas en conjectures quant à la présence de ces choses-là...
    (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.

  20. #20
    Membre régulier
    Femme Profil pro
    Ingénieur laser
    Inscrit en
    Septembre 2014
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur laser
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 98
    Points : 76
    Points
    76
    Par défaut
    Merci pour cette nouvelle réponse, j'étais en train de modifier mon texte pendant que vous m'avez écrit
    Du coup j'étais arrivée à la conclusion de ce que vous venez de dire toute seule ^^
    Je vous copie ici mon message précédent suivant ()

    J'ai l'impression que pour mon cas il ne faut effectivement mieux pas faire une usine à gaz et je laisserai donc le type d'optique dans la table FOURNISSEUR_CATALOGUE.
    Du coup le modèle que vous m'aviez proposé au départ devrait correspondre non? En rajoutant les champs manquant bien sûr.

    Je pensais écrire de nouvelles règles mais en fait je n'ai pas l'impression que ce soit utile et j'avoue qu'à chaque fois je me laisse submergée par le comment... Ce qui m'empêche un peu d'avancer.
    Je vais donc poster ma pale copie de modélisation très inspirée de ce que vous aviez posté au départ. J'espère que vous pourrez continuer à me guider.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [C#][débutant] Appz avec bdd
    Par Kerod dans le forum Windows Forms
    Réponses: 5
    Dernier message: 14/05/2006, 17h28
  2. Réponses: 1
    Dernier message: 22/04/2006, 19h08
  3. [Débutant] validator plug-in
    Par SrK dans le forum Struts 1
    Réponses: 4
    Dernier message: 18/04/2006, 09h31
  4. [Débutant][Conception] Modéliser une pile d'entiers
    Par philippe123 dans le forum Général Java
    Réponses: 45
    Dernier message: 20/02/2006, 21h42
  5. Réponses: 2
    Dernier message: 08/02/2006, 12h29

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