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

 MySQL Discussion :

Regroupement de table


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 58
    Par défaut Regroupement de table
    Bonjour,

    J'ai une table Devis, une autre Facture,commande client et Bon de livraison pour chacune de ces tables, j'ai des lignes c'est à dire ligneDevis,ligneFacture, etc ...
    Toutes ces tables ont les même champs à l'exception d'un seul champ.
    Est ce que je peux regrouper dans 2 tables toutes ces entités, Documents et ligneDocuments, par exemple?
    LigneDocuments peux avoir un nombre d'eregistrement de l'ordre de 200 000 ou 300 000 lignes, sur ce point on me dit que ce n'est vraiment pas grand chose.
    Est ce une bonne pratique de tout regrouper (avec une colonne type), ou bien vaut mieux tout séparer y compris si les tables ont les même champs?
    Merci

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    bonjour,

    à lire sur l'héritage : http://sqlpro.developpez.com/cours/m...tion/heritage/

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 58
    Par défaut
    Merci pour la réponse
    J'ai déjà lu ce tuto, je sais qu'on peux le faire mais au niveau des performances ? avec l'héritage je vais devoir faire des jointures supplémentaire est ce un choix judicieux?
    En fait je me pose je vois 3 solutions
    1) l'héritage, une entité Documents, et des entités fille devis, facture etc ...
    mais pour une lecture d'une facture je vais devoir faire une jointure avec l'entité Documents, et bien gérer l'insertion etc ... .
    2)je mets tout dans une seule table, la limitation dans ce cas que je vois c'est le nombre d'enregistrements concernant les ligneDocuments (ligneDevis,ligneFacture,ligneCommande,ligneBonLivraison) ça peut faire beaucoup.
    3) je créer des tables uniquement pour les entités fille, mais dans ce cas j'ai des champs commun, ce qui est pas très normalisé, du moins en UML
    Quelle solution est appliquée en général? laquelle ferait un bon compromis entre respect des standard et les performances ?

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Dans une grande majorité des cas, le respect des standards engendre de bonne performances : il n'y a pas de compromis à faire. Pour les cas restants, il convient de s'assurer qu'une dénormalisation est nécessaire avant de la mettre en œuvre.

    Je comprend votre inquiétude concernant ce regroupement, mais le fait qu'il y ait 200 000 lignes dans une table ne veut pas dire que les 200 000 lignes seront systématiquement lue pour chaque requête portant sur la table en question. Poser les bon index permet de restreindre la quantité de données à lire pour répondre aux requêtes.

    Par ailleurs, dans votre cas, il me semble que la quantité globale de données pourrait être réduit par une telle opération.(mais je ne connais pas votre workflow pour pouvoir l'affirmer) :
    J'imagine qu'un bon de livraison fait suite à une commande client, laquelle fait suite à un devis et engendre une facture. Vous n'aurez donc plus qu'une ligne dans votre table mère, au lieu d'une ligne dans chaque table (devis, commande, ...).

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 58
    Par défaut
    Donc je peux tout mettre dans une seule table? en faisant ça j'évite en plus la redondance de ligne lors d'un transfert de devis en commande ce serait juste le type à changer? c'est bien ça?

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 58
    Par défaut
    Encore une question est ce que le fait de mettre une table Document, et laisser des tables différentes pour les lignes ligneDevis,ligneFacture etc ..., est une bonne idée, ou est ce qu'il vaut mieux mettre tout dans une seule tables?

Discussions similaires

  1. [Requête] [03] Regrouper 2 tables
    Par NiKoTiNe dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 27/04/2007, 10h50
  2. regroupement des tables
    Par azde7015 dans le forum Access
    Réponses: 5
    Dernier message: 31/01/2007, 10h54
  3. requete avec regroupement multi tables
    Par Fxg dans le forum Requêtes et SQL.
    Réponses: 21
    Dernier message: 26/07/2006, 21h53
  4. [débutant] Comment regrouper deux tables ?
    Par maysa dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 27/10/2004, 18h50
  5. regrouper deux tables
    Par Shabata dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/05/2003, 15h02

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