1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2010
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2010
    Messages : 105
    Points : 116
    Points
    116

    Par défaut Organisation de données

    Bonjour,
    J'ai une organisation de données que je n'arrive pas à modéliser correctement, pourriez-vous m'aider ?

    Ce que j'ai, une table pour chaque entité :
    1. Machine
    2. Configuration
    3. Parameter
    4. Value


    Et des liens :
    1. Machine 1 - N Configuration => J'ai mis MachineID dans la table Configuration
    2. Configuration 1 - N Value => J'ai mis ConfigurationID dans la table Value
    3. Machine N - N Parameter => J'ai créé une table de liaison (avec un ID) avec MachineID et ParameterID
    4. MachineParameter 1 - N Valeur => J'ai mis MachineParameterID dans la table Value


    Mon problème est qu'en partant de la table Value, je peux prendre 2 chemins différents pour connaitre la Machine !!! Et bien sûr le gros problème est que je pourrais avoir 2 machines différentes.

    Je n'ai encore rien programmé mais je sais que j'ai ce problème dans mon modèle alors j'aimerais pouvoir le résoudre avant de passer à la construction.

    En branchant Value directement à Parameter (Parameter 1 - N Value), je sais que le problème est réglé mais ce que je cherche à faire, c'est de n'autoriser la saisie de valeur que pour les paramètres de la machine considérée. Or en faisant ce branchement (Parameter 1 - N Value), je peux mettre une valeur dans n'importe quel paramètre et pas que ceux de la machine considéré.

    Comment résoudre ce problème ?

    J'espère avoir été suffisament clair.

    Merci à la communauté.

  2. #2
    Modérateur
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    15 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    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 : 15 633
    Points : 30 816
    Points
    30 816
    Billets dans le blog
    4

    Par défaut

    Machine 1 - N Configuration => J'ai mis MachineID dans la table Configuration
    Donc (R1) une configuration est celle d'une seule machine et ne machine peut avoir plusieurs configurations.

    Configuration 1 - N Value => J'ai mis ConfigurationID dans la table Value
    Donc (R2) une Value est celle d'une configuration et une configuration peut avoir plusieurs values.

    Machine N - N Parameter => J'ai créé une table de liaison (avec un ID) avec MachineID et ParameterID
    Donc (R3) une machine peut avoir plusieurs paramètres et un paramètre peut appartenir à plusieurs machines.

    MachineParameter 1 - N Valeur => J'ai mis MachineParameterID dans la table Value
    Donc (R4) un couple {machine, paramètre} peut avoir plusieurs values et une value n'appartient qu'à un seul couple {machine, paramètre}.

    Que représente la table Value ?
    Quelle est sa structure ?
    La value d'une configuration est-elle sémantiquement équivalente à la celle d'un couple {machine, paramètre} ?

    Le problème de votre modèle est qu'une Value est à la fois celle d'une configuration et celle d'un couple {machine, paramètre}.
    J'ai l'impression que ce sont là deux choses différentes qui ne devraient pas être dans la même table.
    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 !

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2010
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2010
    Messages : 105
    Points : 116
    Points
    116

    Par défaut

    Citation Envoyé par CinePhil Voir le message
    Donc (R1) une configuration est celle d'une seule machine et ne machine peut avoir plusieurs configurations.


    Donc (R2) une Value est celle d'une configuration et une configuration peut avoir plusieurs values.


    Donc (R3) une machine peut avoir plusieurs paramètres et un paramètre peut appartenir à plusieurs machines.


    Donc (R4) un couple {machine, paramètre} peut avoir plusieurs values et une value n'appartient qu'à un seul couple {machine, paramètre}.
    Tout à fait exact
    Citation Envoyé par CinePhil Voir le message
    Que représente la table Value ?
    La table Value contient les valeurs des paramètres
    Citation Envoyé par CinePhil Voir le message
    Quelle est sa structure ?
    Il n'y a qu'une seule information dedans, la valeur du paramètre auquel elle fait référence
    Citation Envoyé par CinePhil Voir le message
    La value d'une configuration est-elle sémantiquement équivalente à la celle d'un couple {machine, paramètre} ?

    Le problème de votre modèle est qu'une Value est à la fois celle d'une configuration et celle d'un couple {machine, paramètre}.
    J'ai l'impression que ce sont là deux choses différentes qui ne devraient pas être dans la même table.
    Un peu plus de précisions du coup :
    Une machine peut avoir plusieurs configurations mais une seule à un instant t.
    Cette configuration est caractérisée par un ensemble de valeurs de paramètres d'entrée.
    La table Parameter défini les paramètres mais pas leurs valeurs qui sont dans la table Value.
    Mais la machine configurée va aussi retourner des paramètres de sortie dont leurs valeurs seront également stockées dans la table Value dans la configuration utilisée.

    J'espère que c'est plus clair

  4. #4
    Modérateur
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    15 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    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 : 15 633
    Points : 30 816
    Points
    30 816
    Billets dans le blog
    4

    Par défaut

    Un peu plus de précisions du coup :
    Une machine peut avoir plusieurs configurations mais une seule à un instant t.
    Cette configuration est caractérisée par un ensemble de valeurs de paramètres d'entrée.
    La table Parameter défini les paramètres mais pas leurs valeurs qui sont dans la table Value.
    Donc les règles de gestion ne sont pas tout à fait les mêmes...

    R1 : Une machine peut avoir plusieurs configurations et une configuration appartient à une seule machine.
    R2 : Une configuration est composée de un à plusieurs paramètres et un paramètre peut entrer dans la composition de plusieurs configurations.

    MCD (méthode Merise) :
    Machine -0,n----avoir----(1,1)- Configuration -1,n----composer----0,n- Parametre

    Tables :
    te_machine_mch (mch_id,...)
    te_configuration_cfg (cfg_id_machine, cfg_num, ...) <== identification relative de la configuration par rapport à la machine
    te_parametre_prm (prm_id, prm_code, prm_libelle...)
    tj_cfg_composer_prm_ccp (ccp_id_machine, ccp_num_config, ccp_id_parametre, ccp_valeur...) <== 2 clés étrangères : le couple {ccp_id_machine, ccp_num_config} qui fait référence à te_configuration_cfg et le singleton {ccp_id_parametre} qui fait référence à te_parametre_prm.

    S'il n'y a pas besoin d'historiser le valeurs pour une même configuration, alors je pense que ceci est suffisant.
    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 !

  5. #5
    Expert éminent

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    3 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 3 671
    Points : 8 325
    Points
    8 325
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par CinePhil Voir le message
    S'il n'y a pas besoin d'historiser le valeurs pour une même configuration, alors je pense que ceci est suffisant.
    Cette modélisation ne permet pas de vérifier la règle

    Citation Envoyé par ypelissier Voir le message
    Une machine peut avoir plusieurs configurations mais une seule à un instant t.
    Il faut donc, au niveau conceptuel, créer une relation à date entre machine et configuration, puis après avoir généré le MLD, supprimer l'attribut identifiant de la configuration de la PK dans la table résultante de cette relation ternaire, pour que le couple machine+date ait une configuration unique

    Ce qui donne le MCD suivant
    Nom : MCD_machines_V01.png
Affichages : 73
Taille : 21,8 Ko
    Notez la flèche (faite "à l'arrache" avec paint ) qui symbolise la CIF d'unicité de la configuration pour un couple (machine, date)

    Et le MLD, après correction, dans lequel l'attribut CF_id a été évacué de la PK de la table "appliquer" issue de la relation ternaire.
    C'est ce qui permet de garantir le lien unique entre une configuration et une machine à un instant "t"
    Nom : MLD_machines_V01.png
Affichages : 74
Taille : 27,3 Ko


    La table issue de l'entité-type "calendrier" sera ou non générée en fonction du besoin

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2010
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2010
    Messages : 105
    Points : 116
    Points
    116

    Par défaut Reformulation

    hmmmmm Merci mais ce n'est pas ça, je vais reformuler mon environnement (et tu as bien vu qu'il faut bien sûr garder l'historique de tout ça)

    Donc je reprends avec ton formalisme qui me plait beaucoup.

    1 - Environnement :
    Machine = Entité "Machine" caractérisée par un nom et une adresse IP.
    Configuration = Entité "Configuration" caractérisée par un nom (pour une sélection pour une liste déroulante).
    Paramètre = Entité "Parameter" caractérisée par un nom.
    Adresse = Entité "Address" caractérisée par une adresse de paramètre pour une machine.
    Production = Entité "Run" caractérisée par un début et une fin de production.

    2 - Besoins :
    Les machines peuvent être différentes.
    Pour une machine, les paramètres sont définis par leurs adresses.
    Un même paramètre peut avoir des adresses différentes selon les machines.
    Une machine à plusieurs configurations possibles mais qu'une seule à un instant t.
    Une configuration est défini par sa liste de paramètres dont les valeurs ont été renseignées en entrée.
    Il n'est pas forcément nécessaire de renseigner toutes les valeurs des paramètres de la machine pour une configuration.
    En cours de production, la machine va également renvoyer des paramètres de mesure (également connu à l'avance par la machine a son adresse) qu'elle doit enregistrer pour la configuration de l'instant t.
    Tout changement dans la configuration doit être gardé pour en consulter l'historique...

    3 - Règles de gestion :
    R1 => Une machine défini plusieurs paramètres par leur adresse et un paramètre peut être utilisé par plusieurs machines à des adresses différentes.
    R2 => Une machine peut avoir plusieurs configurations mais une configuration n'appartient qu'à une seule et unique machine.
    R3 => Une configuration à plusieurs productions mais une production n'a qu'une seule configuration.
    R4 => Une production a besoin et va produire un ensemble de valeurs de paramètre aux adresses de la machine dont elle appartient et une valeur de paramètre n'a qu'une seule et unique adresse et qu'une seule et unique production.

    4 - MCD :
    Machine -1,n----avoir----0,n- Configuration -1,n----avoir----0,n Production
    Machine -1,n----nécessiter----0,n- Adresse de Paramètre -0,n----définir----1,n- Paramètre ou peut-être dis comme ça Machine -0,n---adresser----0,n- Paramètre
    Production -1,n----composer----0,n- Adresse de paramètre

    5 - Table :
    te_Machine_mch (ID, Nom, IP)
    te_Parameter_prm (ID, Nom)
    te_Address_adr (ID, MachineID, ParameterID, Address)
    te_Configuration_cfg (ID, MachineID, Nom)
    te_Production_prd (ID, ConfigurationID, Start, Stop)
    tj_prd_Composer_adr (ProductionID, AddressID, Value)

    6 - A partir de tj_prd_Composer_adr, selon le chemin parcouru ("te_Production_prd---te_Configuration_cfg---te_Machine_mch" ou "te_Address_adr---te_Machine_mch"), je n'aurais pas la même machine. Comment puis-je assurer la machine est la bonne ?

    Merci pour ton attention... et celle des autres aussi

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2010
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2010
    Messages : 105
    Points : 116
    Points
    116

    Par défaut

    Merci escartefigue, je n'avais pas vu ton message pendant que je faisais le mien.
    Je le regarde après manger...

  8. #8
    Expert éminent

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    3 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 3 671
    Points : 8 325
    Points
    8 325
    Billets dans le blog
    1

    Par défaut

    De rien, je n'ai d'ailleurs traité qu'une partie de l'exposé, l'essentiel du travail a été fait par Cinephil

    Je vois que vous avez enrichi votre énoncé avec de nouveaux acteurs, il faudrait expliquer un peu mieux le contexte pour clarifier le propos
    Par exemple le rôle de "production" m'échappe, quels sont les attributs de cette ET outre les dates début et fin ?
    De même pour adresse, c'est quoi une adresse de paramètres (en langage courant pour un non initié )

    N'hésitez pas à illustrer votre propos par des exemples

  9. #9
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    septembre 2006
    Messages
    6 215
    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 : 6 215
    Points : 20 902
    Points
    20 902
    Billets dans le blog
    16

    Par défaut

    Bonjour à tous,

    Je n’ai pas eu le temps de me pencher sur la discussion et de venir faire le 4e.

    Mais pour ton dessin à l’arrache, sache Capitaine, qu’AMC peut t’aider plus rapidement, en te permettant d’agir directement sur la patte d’association :


    L’image ci-dessus est en relation avec la discussion ici.

    Bon courage à vous trois !
    Faites simple, mais pas plus simple ! (A. Einstein)
    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 »)

    Je ne réponds pas aux questions techniques par MP. Les forums sont là pout ça.
    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench

  10. #10
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2010
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2010
    Messages : 105
    Points : 116
    Points
    116

    Par défaut

    Effectivement, ça prend de l'ampleur car à force d'étudier ce que je dois faire, je pose des questions à mon chef de projet... Et il me donne d'autres petites informations "évidentes" mais qui ne le sont pas quand tu débarques dans le projet.
    Je viens de récupérer un code fait par une autre personne et quand j'ai vu les 2 tables de 500 champs , une de 100 et une de 16 , j'ai tout simplement bondit et dit qu'avec ça il va droit dans le mur Sans compter que parfois ce devrait être 500 et parfois 512... Et demain ???
    Maintenant que j'ai commencé à décortiquer le code, j'ai des adresses écrites en dur dans le code !!! Je passe sur l'état du code (VB.Net 4.0 écrit comme en VB6... Héritage, héritage...).
    Bref, j'ai tout à refaire et quitte à refaire, autant refaire bien... En commençant par le début, la base, la base de données

    Donc, dans une machine, chaque paramètre a ou non une adresse pour accéder à sa valeur (certain système se base sur le nom du paramètre, d'autres sur l'adresse dans la machine, un peu comme si dans un programme je voulais récupérer le contenu d'une variable soit par son nom [classique] soit par son adresse mémoire [pointeur]).
    La notion de production correspond bien à ce que vous avez proposé, à savoir "Appliquer une configuration sur une machine entre 2 dates (pour être en production)" (d'ailleurs, pourquoi mettre la date dans une table, j'ai déjà vu ça dans du Business Intelligence une fois mais sinon ???).

    Sachant que certain paramètres sont des paramètres d'entrée pour configurer la machine et d'autres sont des paramètres de sorties (mesures) de la machine ayant appliqué la configuration. Je ne sais pas encore s'il y a des paramètres qui seraient en entrée-sortie mais ce sera ma prochaine question au chef de projet...

    Voilà où j'en suis (sachant que d'autres acteurs sont déterminés mais n'interviennent pas dans cette partie comme le client chez qui la machine est installée ou le fournisseur de la machine).

    En espérant faire bonne route avec vous, merci pour vos retours.

  11. #11
    Modérateur
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    15 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    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 : 15 633
    Points : 30 816
    Points
    30 816
    Billets dans le blog
    4

    Par défaut

    Donc, dans une machine, chaque paramètre a ou non une adresse pour accéder à sa valeur
    1) Si je comprends bien, un paramètre peut s'appliquer à plusieurs machines ?
    Exemple fictif : la vitesse de rotation est un paramètre mais qui sera réglé sur la machine M1 grâce à l'adresse A11 de la carte d'entrées et sur la machine M2 à l'adresse A12 ?

    Il n'est pas forcément nécessaire de renseigner toutes les valeurs des paramètres de la machine pour une configuration.
    2) Donc une machine dispose d'un ensemble de paramètres et une configuration donne les valeurs à appliquer sur un sous-ensemble de ces paramètres ?

    En cours de production, la machine va également renvoyer des paramètres de mesure
    3) Sont-ce bien des "paramètres de mesure" (relever la température du liquide L au temps T après le démarrage de la machine) ou bien des relevés de mesures (valeur de la température du liquide L) ?

    Les réponses à ces questions peuvent changer les règles de gestion et donc le MCD à réaliser.
    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 !

  12. #12
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2010
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2010
    Messages : 105
    Points : 116
    Points
    116

    Par défaut

    Citation Envoyé par CinePhil Voir le message
    1) Si je comprends bien, un paramètre peut s'appliquer à plusieurs machines ?
    Exemple fictif : la vitesse de rotation est un paramètre mais qui sera réglé sur la machine M1 grâce à l'adresse A11 de la carte d'entrées et sur la machine M2 à l'adresse A12 ?
    Exactement
    Citation Envoyé par CinePhil Voir le message
    2) Donc une machine dispose d'un ensemble de paramètres et une configuration donne les valeurs à appliquer sur un sous-ensemble de ces paramètres ?
    Parfaitement
    Citation Envoyé par CinePhil Voir le message
    3) Sont-ce bien des "paramètres de mesure" (relever la température du liquide L au temps T après le démarrage de la machine) ou bien des relevés de mesures (valeur de la température du liquide L) ?
    Pas tout à fait, il y a des paramètres d'entrée (consignes avec des valeurs définissant la configuration) et les paramètres de sortie (mesures de valeurs dans la configuration appliquée).
    Citation Envoyé par CinePhil Voir le message
    Les réponses à ces questions peuvent changer les règles de gestion et donc le MCD à réaliser.
    Oh oui, je le sais bien et c'est bien pour cela que je travaille ce MCD avant de partir en développement de la base et du reste... enfin je.... avec vous
    En tout cas je vois que j'ai encore pas mal de progrès à faire sur le vocable à utiliser et pour me faire comprendre correctement. C'est un bel exercice que de devoir vous exposer les choses ici car ça m'aidera aussi pour la prochaine fois.

    Merci à tous.

  13. #13
    Modérateur
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    15 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    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 : 15 633
    Points : 30 816
    Points
    30 816
    Billets dans le blog
    4

    Par défaut

    Citation Envoyé par ypelissier
    Citation Envoyé par CinéPhil
    3) Sont-ce bien des "paramètres de mesure" (relever la température du liquide L au temps T après le démarrage de la machine) ou bien des relevés de mesures (valeur de la température du liquide L) ?
    Pas tout à fait, il y a des paramètres d'entrée (consignes avec des valeurs définissant la configuration) et les paramètres de sortie (mesures de valeurs dans la configuration appliquée).
    Donc nous avons des paramètres en entrées et des mesures en sortie. Sémantiquement, ce n'est pas tout à fait la même chose, il me semble.
    D'autant plus que, peut-être, les paramètres s'appliquent à une configuration (qui peut être celle de plusieurs productions) alors que les mesures sont à associer à la production P sortant de la machine M avec la configuration C ?

    Si j'ai juste, nous avons les règles de gestion suivantes :
    R1 : Une machine peut appliquer plusieurs paramètres et un paramètre peut s'appliquer à plusieurs machines.
    R2 : Une configuration s'applique à une machine et une machine peut appliquer plusieurs configurations. ==> (Voir question 1 plus bas)
    R3 : Une configuration comprend de un à plusieurs paramètres et un paramètre peut être compris dans plusieurs configurations.
    R4 : Une production est réalisée suivant une configuration et une configuration peut réaliser plusieurs productions.
    R5 : Une configuration peut nécessiter plusieurs mesures et une mesure être nécessitée par une seule configuration. ==> (Voir question 2 plus bas)
    R6 : Une production peut enregistrer plusieurs mesures et une mesure peut être enregistrée sur plusieurs productions.

    MCD :
    - D'après R1 :
    Machine -0,n----appliquer----0,n- Parametre

    - D'après R2 :
    Configuration -(1,1)----appliquer----0,n- Machine

    - D'après R3 :
    Production -(1,1)----réaliser----0,n- Configuration

    - D'après R4 :
    Configuration -0,n----nécessiter----(1,1)- Mesure

    - D'après R5 :
    Production -0,n----enregistrer----0,n- Mesure

    Questions :
    1) Une configuration peut-elle s'appliquer à plusieurs machines ?
    => Cela changerait R2 et le morceau de MCD qui en découle.

    2) Une mesure peut-elle être nécessitée par plusieurs mesures ?
    => Cela changerait R5 et le morceau de MCD qui en découle.

    3) Y a t-il plusieurs machines physiques du même modèle ou une seule machine par modèle ?
    => La production P1 serait à associer à la machine physique M1 alors que mes règles de gestion et MCD ci-dessus ne considèrent pour le moment qu'il n'y a que les machines sont toutes de modèle différent.

    Dans les morceaux de MCD ci-dessus, les cardinalités entre parenthèses signifient une identification relative... qui sera bien pratique pour éviter les effets de boucles du MCD si mes règles de gestion R2 et R5 sont justes.
    Sinon, il y aura une mécanique conceptuelle à faire pour contrer les boucles.

    À partir de maintenant, ce serait bien que vous commenciez à dessiner votre MCD. Il existe des logiciels de modélisation gratuits tels que DB-Main, JMerise, Open Modelsphere...
    Si vous comptez réaliser la BDD sur MySQL, vous pouvez aussi utiliser MySQL Workbench mais ce ne sera pas véritablement un MCD et le modèle utilisé par ce logiciel permet davantage les erreurs de modélisation.

    Ne vous précipitez pas sur les tables.

    Vous remarquerez que je n'ai pas considéré les adresses, qui sont selon moi une propriété de l'association R1, ni les valeurs, qui sont selon moi une propriété des associations R3 et R6.
    Revenez nous voir avec un MCD.
    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 !

  14. #14
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2010
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2010
    Messages : 105
    Points : 116
    Points
    116

    Par défaut

    Citation Envoyé par CinePhil Voir le message
    Questions :
    1) Une configuration peut-elle s'appliquer à plusieurs machines ?
    Non

    Citation Envoyé par CinePhil Voir le message
    2) Une mesure peut-elle être nécessitée par plusieurs mesures?
    J'imagine que tu voulais dire configurations.
    Non [modif]Oui si tu considères une mesure comme étant un paramètre d'entrée, non si tu considères une mesure comme une valeur mesurée, voir mon schéma plus bas[/modif]

    Citation Envoyé par CinePhil Voir le message
    3) Y a t-il plusieurs machines physiques du même modèle ou une seule machine par modèle ?
    Bien qu'il y ai un modèle de base, toutes les machines sont spécifiques donc différentes, pas de machines en série. Une configuration ne peut être associée qu'à une seule et unique machine physique.

    Citation Envoyé par CinePhil Voir le message
    Dans les morceaux de MCD ci-dessus, les cardinalités entre parenthèses signifient une identification relative... qui sera bien pratique pour éviter les effets de boucles du MCD si mes règles de gestion R2 et R5 sont justes.
    Sinon, il y aura une mécanique conceptuelle à faire pour contrer les boucles.
    Qu'est-ce qu'une identification relative ?

    Citation Envoyé par CinePhil Voir le message
    Revenez nous voir avec un MCD.
    Nom : MCD.PNG
Affichages : 69
Taille : 40,5 Ko

    Je précise que la date dans la relation "Nécessiter en entrée" à pour objet de garder l'historique de la configuration de l'instant t car elle pourrait évoluer au cours du temps (quand on prend une configuration, on prend toujours les paramètres dont la date est la plus récente, bien que je ne me sois pas encore posé la question de la disparition d'un paramètre dans la configuration).

    Il y a tout de même quelques points qui me chiffonnent dans ce MCD :
    1. une configuration pourrait nécessiter un paramètre en entrée (ou en sortie) qui n'est pas connu de la machine,
    2. un paramètre pourrait être mesuré alors qu'il n'est pas connu de la machine
    3. un paramètre pourrait être mesuré alors qu'il n'est pas demandé en sortie


    Un exemple :
    Une machine M1 connait le paramètre P1 et possède la configuration C1.
    Une machine M2 connait le paramètre P2 et possède la configuration C2.

    Qu'est-ce qui empêche C1 de demander P2 en entrée ?

    Bien qu'apprenant plein de choses avec vous, c'est ça qui m'embête le plus depuis le début.

    En tout cas merci pour DB-Main, j'ai eu un peu de mal au début mais ça évite de refaire des dessins papier-crayon-gomme à la main et rien que ça c'est très bien

  15. #15
    Expert éminent

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    3 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 3 671
    Points : 8 325
    Points
    8 325
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par ypelissier Voir le message
    Qu'est-ce qu'une identification relative ?
    cf. ce sujet https://www.developpez.net/forums/d1...tify-relation/

  16. #16
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2010
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2010
    Messages : 105
    Points : 116
    Points
    116

    Par défaut

    Merci escartefigue même si je n 'ai pas tout lu à cause de la longue des posts. Je pense néanmoins avoir compris.

  17. #17
    Expert éminent

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    3 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 3 671
    Points : 8 325
    Points
    8 325
    Billets dans le blog
    1

    Par défaut

    En effet, la page 2 du sujet en référence aborde d'autres notions qui sont sans rapport direct avec votre question

    Exemple de numérotation absolue
    Facture n° 0001 composée des lignes 01 à 05
    Facture n° 0002 composée des lignes 06 à 08

    Exemple de numérotation relative
    Facture n° 0001 composée des lignes 0001-01 à 0001-05
    Facture n° 0002 composée des lignes 0002-01 à 0002-03


    J'ajoute pour compléter, que l'utilisation ou non de l'identification relative peut avoir un impact très significatif sur les performances.

    Sans rentrer trop dans les détails, car là il s'agit de considérations physiques qui dépendent de pas mal de facteurs tels que le choix du SGBD, le choix de l'index cluster, le taux de remplissage, de fragmentation... Je dirai pour simplifier que l'identification relative est propice aux performances car elle permet de stocker physiquement les lignes de l'entité-type fille d'une même entité-type mère dans un espace contigu ou en tout cas peu fragmenté.

  18. #18
    Modérateur
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    15 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    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 : 15 633
    Points : 30 816
    Points
    30 816
    Billets dans le blog
    4

    Par défaut

    Je vois que j'avais ajouté la règle de gestion R3 mais que je n'avais pas inséré le morceau de MCD en résultant...

    Donc reprenons :
    Citation Envoyé par CinéPhil
    R3 : Une configuration comprend de un à plusieurs paramètres et un paramètre peut être compris dans plusieurs configurations.
    MCD :
    Configuration -1,n----comprendre----0,n- Parametre

    À moins que j'aie mal compris, on peut répéter la configuration C1 pour les productions P1 et P2 étant faites sur la même machine ?
    Donc si on va effectivement mettre une valeur dans l'association Necessiter_en_entree, pourquoi y mettre la date qui serait plutôt celle de la production, non ?
    Si on change la valeur d'un paramètre dans une configuration, on change de configuration, non ?

    Ou alors il faut que vous précisiez les termes que vous employez.

    Citation Envoyé par ypelissier
    Qu'est-ce qu'une identification relative ?
    Cela veut dire que l'entité-type "faible", ici Configuration, n'aura pas son identifiant propre. La table issue du MCD aura dans sa clé primaire l'identifiant de l'entité-type "forte" à laquelle elle est associée, ici Machine.
    Concrètement, les tables seront de ce genre :
    Machine (mac_id, mac_nom...)
    Configuration (cfg_id_machine, cfg_numero...)

    La machine 1 aura les configuration {1, 1}, {1, 2}, {1, 3} et la machine 2 aura les configurations {2, 1}, {2, 2}...

    Quel logiciel de modélisation avez-vous employé ?

    Citation Envoyé par ypelissier
    Citation Envoyé par CinéPhil
    2) Une mesure peut-elle être nécessitée par plusieurs mesures?
    J'imagine que tu voulais dire configurations.
    Effectivement, j'ai buggué dans ma phrase ! Oui, je voulais dire : Une mesure peut-elle être nécessitée par plusieurs configurations.

    Par contre, à ton tour :
    Non [modif]Oui si tu considères une mesure comme étant un paramètre d'entrée, non si tu considères une mesure comme une valeur mesurée, voir mon schéma plus bas[/modif]
    Je suppose que tu voulais dire : "Oui si tu considères une mesure comme étant un paramètre de sortie" ?
    Pour moi, la mesure est ce que l'on fait sur la production (pendant ou à la suite de). Mais elle peut effectivement être requise par la configuration en tant que paramètre de sortie. Je la considère donc comme une exigence de sortie mais d'une nature différente des paramètres en entrée (réglages de la machine, j'imagine ?).

    Donc reprenons mes règles de gestion :
    Citation Envoyé par CinePhil
    R5 : Une configuration peut nécessiter plusieurs mesures et une mesure être nécessitée par une seule configuration.
    R6 : Une production peut enregistrer plusieurs mesures et une mesure peut être enregistrée sur plusieurs productions.
    Le morceau de MCD qui en découle est le suivant :
    Production -(1,1)----effectuer----0,n- Configuration -0,n----exiger----(1,1)- Mesure
    |----------------------0,n----enregistrer----0,n---------------------------------------------|

    Grâce à l'identification relative, j'évite d'enregistrer des mesures qui ne sont pas celles de la configuration de la production.

    Production (prd_id_machine, prd_num_configuration, prd_numero...)
    Mesure (mes_id_machine, mes_num_configuration, mes_numero...)
    prd_enregistrer_mes (pem_id_machine, pem_num_configuration, pem_num_production, pem_num_mesure, valeur...)

    Clés étrangères :
    - le couple {prd_id_machine, prd_num_configuration} référence la configuration (elle même identifiée relativement à la machine) ;
    - le couple { mes_id_machine, mes_num_configuration} référence la configuration comme ci-dessus ;
    - dans la table prd_enregistrer_mes il y a une clé primaire composée du mélange des deux clés étrangères précédentes puisque c'est une table associative : le triplet {pem_id_machine, pem_num_configuration, pem_num_production} référence la table Production et le triplet {pem_id_machine, pem_num_configuration, pem_num_mesure} référence la table Mesure.
    Comme il n'y a qu'un couple de colonnes {pem_id_machine, pem_num_configuration} identifiant la configuration, les enregistrements sur la production P1 réalisée selon la configuration C1 sont bien ceux des mesures exigées par la configuration C1.
    => L'effet de boucle présent dans le MCD sans identification relative est contré sans avoir besoin de programmer une contrainte d'intégrité fonctionnelle.
    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 !

  19. #19
    Expert éminent

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    3 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 3 671
    Points : 8 325
    Points
    8 325
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par ypelissier Voir le message
    Il y a tout de même quelques points qui me chiffonnent dans ce MCD :
    1. une configuration pourrait nécessiter un paramètre en entrée (ou en sortie) qui n'est pas connu de la machine,
    2. un paramètre pourrait être mesuré alors qu'il n'est pas connu de la machine
    3. un paramètre pourrait être mesuré alors qu'il n'est pas demandé en sortie
    Je rejoins a priori Cinéphil dans sa remarque
    Citation Envoyé par CinePhil Voir le message
    Donc nous avons des paramètres en entrées et des mesures en sortie. Sémantiquement, ce n'est pas tout à fait la même chose, il me semble.
    Sans doute quelques exemples de configurations avec leurs paramètres et mesures et les explications qui vont avec éclaireraient notre lanterne
    Par exemple, à partir d'un court extrait de votre jeu de données (anonymisez si besoin de confidentialité), décrivez un cas fonctionnel

  20. #20
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2010
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2010
    Messages : 105
    Points : 116
    Points
    116

    Par défaut

    Citation Envoyé par escartefigue Voir le message
    Exemple de numérotation absolue
    Facture n° 0001 composée des lignes 01 à 05
    Facture n° 0002 composée des lignes 06 à 08

    Exemple de numérotation relative
    Facture n° 0001 composée des lignes 0001-01 à 0001-05
    Facture n° 0002 composée des lignes 0002-01 à 0002-03
    C'est bien ce que j'avais compris

    Citation Envoyé par escartefigue Voir le message
    J'ajoute pour compléter, que l'utilisation ou non de l'identification relative peut avoir un impact très significatif sur les performances.
    Oui mais aussi un impact sur le volume de la base de données car il faut garder le lien référentiel en plus de la clé composée.

    Citation Envoyé par CinePhil Voir le message
    Quel logiciel de modélisation avez-vous employé ?
    Toujours est-il que j'avance sur mon modèle que j'ai intégralement fait sur DB-Main.

    Mais aujourd'hui, le chef m'a donné une autre priorité... Je reviendrais donc sur le message de CinePhil un peu plus tard avec un risque que ce ne soit que lundi...

    Merci les gars (enfin je suppose)

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

Discussions similaires

  1. Problème d'organisation des données dans un jeu de stratégie
    Par khayyam90 dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 15/06/2007, 17h13
  2. Organiser les données d'un fichier
    Par virtuadrack dans le forum C
    Réponses: 29
    Dernier message: 01/05/2007, 08h44
  3. Organisation de données
    Par jeremy_chauvel dans le forum PHP & MySQL
    Réponses: 7
    Dernier message: 10/01/2007, 17h10
  4. tomcat, upload et organisation des donnèes
    Par Pikwik dans le forum Tomcat
    Réponses: 2
    Dernier message: 05/09/2006, 10h59
  5. [SWT]organisation des données dans un gridlayout
    Par whilecoyote dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 19/12/2005, 17h24

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