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

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

Schéma Discussion :

comment gérer la redondance d'information? [MCD]


Sujet :

Schéma

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut comment gérer la redondance d'information?
    Bonjour à tous,

    J'ai un dilemme sur la position d'une entité car cela me provoque une redondance d'information, et je ne sais pas trop comment m'en sortir...
    Je travaille sur des observations naturalistes : j'ai trois entités [ESPECES], [COMMUNES] et [LIEUX_DITS]

    Nous avions au départ cette relation :
    [ESPECES]--0,n--(observer)--0,n--[COMMUNES]

    Mais pour préciser le lieu d'observation, nous allons ajouter une entité [LIEUX_DITS]. C'est une liste de lieux-dits prédéfinis, toujours rattaché à une commune, ça nous donne cette relation :
    [ESPECES]--0,n--(observer)--0,n--[LIEUX_DITS]--1,1--(se trouve)--0,n--[COMMUNES]

    Et là ce serait parfait si à chaque observation on avait le lieu-dit, mais très souvent le lieu-dit est inconnu. Dans ce cas il nous faut quand même la commune. Et là je ne sais pas trop comment faire : si on garde le modèle ci-dessus, il faudrait rajouter dans notre liste de lieu-dit autant d'enregistrement que de commune pour les lieux-dits "inconnu", ex : inconnu-caen, inconnu-rouen, inconnu-ifs etc. Du coup, on aurait une énorme table LIEUX_DITS avec la moitié des enregistrement correspondant en fait à des communes...

    ou alors je pourrais relier [ESPECE] à [LIEUX_DITS] ET à [COMMUNES] et là j'ai une boucle :
    [ESPECES]--0,n--(observer)--0,n--[LIEUX_DITS]--1,1--(se trouve)--0,n--[COMMUNES]--0,n--(observer)--0,n--[ESPECES]

    L'association (observer) est la même entre [ESPECES]-[LIEUX_DITS] et [ESPECES]-[COMMUNES] (désolée je n'ai pas pris le temps de faire le MCD sous un logiciel pour avoir une image plus compréhensible). Mais là j'ai une boucle et je ne sais même pas si ce MCD est correct. Mais dans ce cas, dans l'association [OBSERVER] on aurait les champs suivant :
    #espece = clé étrangère, nom de l'espèce vue
    #lieu_dit = clé étrangère, nom du lieu-dit (qui sera rattaché à une commune et là dans access j'aimerais afficher la colonne liée nom_commune dans la table OBSERVATION
    #commune = clé étrangère, correspondant au nom de la commune, SI le lieu-dit n'est pas indiqué... et mon problème c'est que dans ce cas, j'aurais 2 champs correspondant à la commune d'observation...

    je ne sais pas si j'ai énoncé clairement mon problème, ce n'est pas un problème très compliqué mais je ne sais pas quoi faire, en terme de taille de base de données, comme il y a énormément de données d'observation, il me faudrait une solution qui alourdirait le moins possible la base. Est-ce qu'il vaut mieux 2 champs correspondant à la même entité, ou une très grosse table? Le MCD avec la boucle est-il correct?
    Bref, si vous pouviez m'aider!

    Merci d'avance! à bientôt, Neary

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Tu peux avoir les deux associations "observer" à condition de les exclure l'une l'autre. En MCD et avec un logiciel approprié ou le bon vieux crayon sur un papier, ça se représente en traçant des pointillés entre les deux associations et en mettant au milieu des pointillés un X dans un petit rond.
    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
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Vous avez la possibilité de procéder à une généralisation des entités géographiques :



    (AGL : PowerAMC, mais avec le crayon ça marche aussi).
    (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.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Toujours aussi fort fsmrel ! Je n'y avais pas pensé ; cette solution est plus élégante !
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Merci à tous les deux pour vos réponses, merci pour ton MCD fsmrel, c'est très clair. Mais une dernière question... Mes cours de modélisation datent un peu et ce n'étaient pas très approfondi...je n'ai jamais vu ce type de relation (avec le X), après un tour dans la faq, c'est ce qu'on appelle une contrainte d'exclusivité? L'entité COMMUNE et LIEU_DIT, c'est ce qu'on appelle des sous-type?
    donc une entité géographique est soit une commune, soit un lieu-dit, ok... mais après pour le passage en MLD et pour la création des tables sous Access, je ne sais pas comment faire avec cette relation...
    Dans l'exemple donné dans la faq, avec les entités IMPRIMANTE, PERIPHERIQUE et LECTEUR_CD, on crée 2 tables PERIPHERIQUE_IMPRIMANTE et PERIPHERIQUE_LECTEUR CD, je ne comprends pas bien cet exemple. En fait je ne sais pas comment me tépatouiller avec les clés étrangères...
    Pouvez-vous me dire si mes tables sont corrects en partant du MCD de fsmrel?
    J'ai les tables suivantes:
    [ESPECES]
    id_espece
    nom_espece

    [OBSERVATIONS]
    id_observation
    ref_espece
    ref_entitegeo

    [ENTITE_GEO]
    id_entitegeo
    nom_entite

    [COMMUNES]
    ref_entitegeo
    code_insee
    nom_commune

    [LIEUX_DITS]

    ref_entitegeo
    ref_commune
    nom_lieudit

    Mais du coup la table [ENTITE_GEO] correspond à la fusion des communes et des lieux-dits, non? donc est ce que je ne peux pas faire une seule table entité geographique, avec tout confondus? Et si je garde donc les 2 tables communes et lieux-dits, je ne vois pas comment sous Access, je peux, en donnant l'identifiant de l'entité géo, avoir le nom soit de la commune soit du lieu-dit puisque c'est dans 2 tables?
    Ahh désolée de mes questions qui sont vraiment bêtes, ça fait longtemps que je n'ai pas fait de base données, et là je bloque!
    Merci pour votre aide,

    Neary

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 620
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 620
    Points : 56 857
    Points
    56 857
    Billets dans le blog
    40
    Par défaut
    bonjour Neary,

    Citation Envoyé par Neary Voir le message
    ... Et si je garde donc les 2 tables communes et lieux-dits, je ne vois pas comment sous Access, je peux, en donnant l'identifiant de l'entité géo, avoir le nom soit de la commune soit du lieu-dit puisque c'est dans 2 tables?
    tout est expliqué là:

    Héritage dans une base de données Access

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

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par Neary
    je n'ai jamais vu ce type de relation (avec le X), après un tour dans la faq, c'est ce qu'on appelle une contrainte d'exclusivité? L'entité COMMUNE et LIEU_DIT, c'est ce qu'on appelle des sous-type?
    Le X symbolise effectivement une contrainte d’exclusion : une entité géographique est soit une commune soit un lieu-dit. Par ailleurs le X est souligné : c’est le mickey qu’on utilise avec PowerAMC quand on veut signifier que les seuls lieux géographiques sont des communes ou des lieux-dits. Autrement dit, X plus souligné = contrainte de partitionnement.


    Citation Envoyé par Neary
    L'entité COMMUNE et LIEU_DIT, c'est ce qu'on appelle des sous-type?
    De fait, les entités-types COMMUNE et LIEU_DIT correspondent à des sous-types (entités-types spécialisées), tandis que l’entité-type ENTITE_GEO correspond à un surtype porteur des propriétés communes aux entités-types spécialisées.


    Citation Envoyé par Neary
    Pouvez-vous me dire si mes tables sont correctes en partant du MCD de fsmrel ?
    Table ESPECE : OK.

    Table ENTITE_GEO : La clé de la table est représentée par la paire {ref_espece, ref_entitegeo}. L’attribut id_observation est inutile et disparaît.

    Table ENTITE_GEO : OK.

    Table COMMUNE : l’attribut nom_commune fait double emploi (redondance) avec l’attribut nom_entite de la table ENTITE_GEO et doit donc disparaître.

    Table LIEU_DIT : même remarque concernant l’attribut nom_lieudit.


    Citation Envoyé par Neary
    Mais du coup la table [ENTITE_GEO] correspond à la fusion des communes et des lieux-dits, non?
    Non. Elle correspondrait à la « fusion » si les attributs propres aux entités-types spécialisés (par exemple le code Insee de la commune) étaient intégrés à ENTITE_GEO. Or justement, le but de la manœuvre est de faire en sorte que les lieux-dits ne soient pas dotés d’attributs qui ne concernent que les communes et que les communes ne soient pas dotées d’attributs qui ne concernent que les lieux-dits.


    Citation Envoyé par Neary
    est ce que je ne peux pas faire une seule table entité geographique, avec tout confondus?
    En vertu de ce qui précède, non.

    Avec ACCESS Le MLD doit ressembler à ceci :




    Quelques exemples :










    Jointure naturelle ENTITE_GEO et COMMUNE :






    Les lieux-dits et leur rattachement :






    Etc.
    (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.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    wouah merci beaucoup fsmrel d'avoir pris le temps de faire ces exemples, merci f-leb pour le tutoriel, je l'avais vu dans la faq sans m'y attarder, du coup je mis met.
    C'est plus claire, maintenant à voir si j'arrive à mettre ça en pratique.

    Milles merci pour votre aide.

    à bientôt, Neary

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

Discussions similaires

  1. Comment gérer une lettre d'information
    Par oldos dans le forum Outils
    Réponses: 7
    Dernier message: 03/10/2006, 16h22
  2. Comment gérer plusieurs icones dans son exécutable ?
    Par declencher dans le forum Langage
    Réponses: 5
    Dernier message: 15/10/2003, 10h49
  3. Comment gérer ma carte réseau en ASM
    Par will1974 dans le forum Assembleur
    Réponses: 6
    Dernier message: 23/09/2003, 17h08
  4. Comment gérer la touche echap ?
    Par Adrael dans le forum C
    Réponses: 28
    Dernier message: 11/07/2003, 13h15
  5. Comment gérer les espaces blancs?
    Par Lambo dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 16/05/2003, 09h44

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