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 :

Modélisation 3FN ou une seule table?


Sujet :

Schéma

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 237
    Points : 120
    Points
    120
    Par défaut Modélisation 3FN ou une seule table?
    Bonjour,

    J'ai toujours utilisé la modélisation en 3FN parce que c'est ce qu'on m'a enseigné à l'université.
    Aujourd'hui je m'interroge sur sa pertinence dans certains cas. En terme de performance, vaut-il mieux avoir 2 tables et faire une jointure ou avoir toutes les données dans un seule table?
    Par exemple la table des ventes est en relation 1,1/0,n avec la table des produits. Pour une requête en lecture, ne serait il pas plus efficace d'avoir une seule table avec les ventes plus toutes les données produits plutôt que les 2 tables jointes par un inner join?

    Merci,
    Jean

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


    Si vous suivez la presse du cœur informatique et toutes les légendes qui courent depuis plus de trente ans, il vaut mieux violer la 3NF, car elle est source de jointures, or : « La jointure est un frein » qu’ils répètent comme des perroquets, en toute méconnaissance de cause. Si vous suivez les gens sérieux qui, sans être universitaires, ont baroudé pendant plus de trente ans dans les bases de données, et ont donc l’expérience concrète, vous ne violerez pas la 3NF. Maintenant, vous êtes en droit (comme je l’ai fait en permanence) de prototyper les performances, donc de comparer ensuite en toute objectivité : seule l’expérience peut vous guider, tout en ayant en tête que violer la 3NF pose des problèmes de redondance qui en général mettent à mal la validité de la base de données. Mieux vaut perdre 100 millisecondes sur une transaction que touiller de la m... de plus en plus vite (GIGO comme disent les anglo-ricains).

  3. #3
    Membre habitué Avatar de chewing-gum
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2009
    Messages : 105
    Points : 137
    Points
    137
    Par défaut
    Citation Envoyé par jpclabaux Voir le message
    Bonjour,

    J'ai toujours utilisé la modélisation en 3FN parce que c'est ce qu'on m'a enseigné à l'université.
    Aujourd'hui je m'interroge sur sa pertinence dans certains cas. En terme de performance, vaut-il mieux avoir 2 tables et faire une jointure ou avoir toutes les données dans un seule table?
    Par exemple la table des ventes est en relation 1,1/0,n avec la table des produits. Pour une requête en lecture, ne serait il pas plus efficace d'avoir une seule table avec les ventes plus toutes les données produits plutôt que les 2 tables jointes par un inner join?

    Merci,
    Jean
    Bonjour,

    Dans votre explication, vous n'expliquez pas comment vous arrivez à déterminer, à l'avance, le nombre de produits que vous vendrez à une personne.
    Dès lors, si vous ne faites qu'une seule table, il me paraît difficile de savoir combien de propriétés vous allez créer dans votre table pour stocker les informations des N produits vendus.
    A moins de "réserver" (créer à l'avance) des propriétés "dans les cas où" vous vendriez 30, 40, ou 50 produits... Bref, votre table contiendrait des champs certainement inutiles... Voire elle ne contiendrait pas assez de champs pour tout stocker. Sauf si vous utilisez une solution + flexible comme une base NoSQL.

    Tout comme l'a expliqué fsmrel, vous risquez aussi d'avoir des données redondantes et de devoir les mettre à jour régulièrement. Mais rien ne vous empêche d'essayer.

    Je préconise quand même de ne pas violer la 3ème forme normale.

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/11/2011, 11h34
  2. [Modélisation DW] Fait et Dimension dans une seule table ?
    Par anayathefirst dans le forum Conception/Modélisation
    Réponses: 6
    Dernier message: 14/04/2009, 18h02
  3. plusieurs tables dans une seule table
    Par scully2501 dans le forum Access
    Réponses: 1
    Dernier message: 10/10/2005, 09h19
  4. Réponses: 4
    Dernier message: 14/09/2005, 16h29
  5. Une seule table VS plusieurs tables
    Par LostControl dans le forum Requêtes
    Réponses: 1
    Dernier message: 11/08/2003, 10h56

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