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 :

[NF] redondances dans les entités et 1ere forme normale


Sujet :

Schéma

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 52
    Points : 38
    Points
    38
    Par défaut [NF] redondances dans les entités et 1ere forme normale
    Dans un modèle ou existe par exemple 4 entités dans lesquelles il y'a l'attribut nom, prenom, adresse, et tel (redondances).
    Est ce qu'il est obligatoire de créer une entité qui contient ces données et puis la relié avec les 4 entités par une relation d'héritage. ou bien si on décompose l'adresse (code postal,ville,rue...) est il nécessaire de creér une entité adresse et la relié avec une association aux autres entités.
    qu'elle est la solution optimale.
    Est ce que c'est "moche" de garder les 4 entités avec les redondances sans créer d'autres entités.

  2. #2
    Membre régulier Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Points : 97
    Points
    97
    Par défaut
    Je trouve ta question très intéressante. D'autant plus que cette notion d'héritage fait couler beaucoup d'encre semble-t-il et qu'en plus je suis en plein dedans !

    Ce n'est pas moi qui vais t'apporter une réponse d'évangile,cela dit, j'ai envie de te répondre :
    tout dépend de ta volumétrie. Si tu gères 100, 10000, 1.000.000 ou plus de contacts, cela doit avoir une incidence.
    A l'heure où les serveurs sont plus performants et où l'espace disque ne coûte plus des millions comme il y a ... 20 ans .... je pense qu'optimiser pour optimiser cela se traduit par plus d'ennuis qu'autres choses.
    Le principal c'est à mon sens de restituer les choses dans leur contexte dans une approche multi critère.
    Combien d'utilisateurs dans ta base, combien de fois une table est utilisée par jour, quel type de base de données, etc ...
    Qui doit maintenir, qui saisie, etc ....

    En un mot, ta question est peut être trop générale pour le moment pour qu'un Gourou d'ici t'apporte une réponse pertinente.
    Non ? Qu'en penses-tu ? quelles sont-tes inquiétudes en posant cette question ?
    Mieux vaut penser avant d'agir que d'agir en rêvant.

  3. #3
    Membre averti Avatar de Soutou
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 328
    Points : 378
    Points
    378
    Par défaut
    Citation Envoyé par sarah_insat Voir le message
    Dans un modèle ou existe par exemple 4 entités dans lesquelles il y'a l'attribut nom, prenom, adresse, et tel (redondances).
    Je ne vois qu'une entité (Personne) qui contient des attributs qui ne sont pas redondant. Aucun héritage n'est utile ici. Que veux tu dire par redondance?

  4. #4
    Membre régulier Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Points : 97
    Points
    97
    Par défaut
    Dans un modèle ou existe par exemple 4 entités dans lesquelles il y'a l'attribut nom, prenom, adresse, et tel
    4 entités qui partagent des attributs en commun .. non ?
    Mieux vaut penser avant d'agir que d'agir en rêvant.

  5. #5
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 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
    Citation Envoyé par sarah_insat Voir le message
    Dans un modèle ou existe par exemple 4 entités dans lesquelles il y'a l'attribut nom, prenom, adresse, et tel (redondances).
    Est ce qu'il est obligatoire de créer une entité qui contient ces données et puis la relié avec les 4 entités par une relation d'héritage. Ou bien si on décompose l'adresse (code postal, ville, rue...) est il nécessaire de créer une entité adresse et la relié avec une association aux autres entités.
    Est ce que c'est "moche" de garder les 4 entités avec les redondances sans créer d'autres entités.
    Au niveau d’un modèle conceptuel, disons Merise, il est d’usage de ne pas multiplier les noms des propriétés :
    "Une propriété ne peut qualifier qu’un seul objet ou une seule relation."
    [Ministère de l'Industrie, Mission à l'Informatique, Centre Technique Informatique, Méthode de Définition d'un Système d'Informations, Fascicule 4. Juin 1979]

    En conséquence de quoi, Nom, Prénom, Adresse et Tel ne devraient figurer qu’une seule fois dans le modèle. En revanche, si vous avez quatre attributs qui sont des variations sur le thème du type Nom : Nom du client, Nom du fournisseur, Nom du développeur, Nom du service de l'entreprise, tels que chacun de ces attributs figure dans une entité-type appropriée (respectivement Client, Fournisseur, Développeur, Service), du point de vue de la forme il n’y a rien à dire, il n’y a pas redondance et ça n’est pas "moche".

    Cela dit, il y a manifestement une alternative, dès que l’on précise le sens des attributs.

    Vous aurez observé en passant que l’exposé de votre problème est vague, car vous n'en prenez pas en compte la dimension sémantique : A quoi correspond chaque entité-type ? Client, fournisseur, salarié de l’entreprise, service, chamouflard, etc.? A défaut, on ne peut pas dire si votre modèle est "moche" du point de vue non plus de la forme, mais du fond.

    Appelons Client, Fournisseur, Développeur, Service, les entités-types initiales. Supposons que les attributs dont vous avez fourni la liste soient en fait sémantiquement comparables : vous pouvez alors les regrouper en une seule entité-type Personne et ne laisser dans Client, Fournisseur, Développeur, Service que les attributs spécifiques, non sémantiquement comparables (le salaire d’un employé de l’entreprise n’a pas de sens pour les clients, de même que le numéro de Siren d’une entreprise n’a pas de sens pour l’employé). Le procédé de regroupement des attributs qui le méritent, s’appelle Généralisation. L'entité-type Personne correspond à ce que l’on appelle un surtype et Client, Fournisseur, Développeur et Service correspondent aux sous-types de Personne. La relation entre surtype et sous-types est de type EST UN (IS A).

    Concernant l’adresse, vous ne mettez en œuvre une entité-type Adresse que si pour une valeur de Personne — donc pour une personne — vous pouvez avoir plus d’une adresse. Adresse entretient alors une relation R avec Personne :

    Personne --- 0,N ---R --- 1,1 --- Adresse

    Quant à décomposer l’adresse en code postal etc., vous ne le faites que si c’est utile pour les applications utilisant la base de données. En l’occurrence, c’est donc à vous, en relation avec les utilisateurs de définir le niveau atomique de l’adresse. Et si vous devez décomposer, alors appuyez-vous tant qu’à faire sur les normes de La Poste, de l’AFNOR, de votre entreprise ou que sais-je, mais ne réinventez pas l'eau tiède.



    Citation Envoyé par sarah_insat
    qu'elle est la solution optimale.
    Il n’y a jamais de solution optimale, mais plutôt une solution que l’on estime a priori meilleure que d’autres, sur la base par exemple de son aptitude à permettre une évolution sans douleur de la base de données. En effet, un système d’information n’est pas figé et les coups peuvent venir de partout. Souvenez-vous du passage à l’euro ou à l’an 2000. Plus modestement, imaginez la charge de travail à venir, voire la panique, le jour où le système d’immatriculation des voitures en France changera...
    Et puis, le niveau conceptuel est une chose, mais le niveau logique (relationnel) en est une autre, et là bien des choses peuvent être remises en question, car on ne joue plus sur le nom des attributs (propriétés) et d'autres paramètres interviennent. Quoi qu’il en soit, le niveau conceptuel reste quand même déterminant pour la suite et il ne faut pas rater son coup.

    Pour la petite histoire, c'est quand même généralement au stade de la modélisation logique et physique que les choses finissent par se dénouer : conservation ou éclatement de la table Personne en 2, 3 ou 4 tables, même chose pour les adresses, sans oublier que par le mécanisme des vues d'union et de jointure, on sait recomposer l'équivalent des entités conceptuelles. Le SGBD n'est pas neutre dans cette affaire et vous ne procèderez pas de la même façon si vous avez un SGBD classique ou bien une machine base de données du genre Teradata, avec des processeurs en parallèle à foison, machine avec laquelle l'éclatement est inutile, car celui-ci se passe sous le capot...
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

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

  6. #6
    Membre habitué
    Inscrit en
    Avril 2005
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 123
    Points : 132
    Points
    132
    Par défaut
    Avant de prendre en compte une information élémentaire (nom, adresse...), il faut s'assurer qu'il n'est pas polysème (un mot qui a plusieurs sens) ou qu'il n'a pas de synonymes( deux mots qui ont le même sens) dans tout le MCD.

    Si l'info est polysème (Ex: entité Employé avec propriété nom, entité département avec propriété nom), il faut la nommer de manière très précise (nom_employé et nom_departement).

    Si l'info a un synonyme, il y a redondance, dans ce cas là, il faut soit fusionner avec son synonyme, soit deplacer l'info dans la relation entre les entités qui la prennent en compte.
    Je vis dans un ghetto sale et repugnant communément appelé "Service informatique".

    Pour ceux qui ne l'ont pas remarqué, je suis gaucher (Fallait le dire plus tôt!!!)

Discussions similaires

  1. [MySQL] Redondances dans les résultats d'une requête
    Par illidan05 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 29/09/2014, 09h49
  2. Redondance dans les constructeurs
    Par Invité dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 30/04/2011, 20h16
  3. [Normalisation] propriété calculée dans un MCD et 1ere forme normale
    Par new_wave dans le forum Schéma
    Réponses: 10
    Dernier message: 06/10/2008, 00h40
  4. [FORMS] Ecrire dans les zones de texte
    Par popov2 dans le forum Oracle
    Réponses: 7
    Dernier message: 17/08/2005, 15h53

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