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

Requêtes MySQL Discussion :

1 tables avec 40 champs ou 2 tables de 20


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Points : 170
    Points
    170
    Par défaut 1 tables avec 40 champs ou 2 tables de 20
    Bonjour,

    Ma question peut paraitre bête et si je n'avais pas vu ce cas je ne me la serai pas poser : j'ai une grosse table contenant 40 champs et je me disais que la charger à chaque fois va peut-être me poser des problèmes de lenteur à un moment donné. Mais de toute façon lorsque je dois afficher les informations, tout doit apparaitre dans une même page (si c'est problématique d'ailleurs, je peux le faire dans 2 pages).

    Alors, quelle est la solution qui serait la mieux adapté ? 40 champs dans une table, c'est une folie, il faut l'optimiser en découpant en plusieurs tables (j'ai vu ça dans une base de données d'un OpenSource réputé mais la bd date de 2003).

    Sinon, j'ai déjà mis des indexes...

    Merci de vos conseils

  2. #2
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Bonjour,

    Impossible de te répondre avec certtitude avant que tu nous expose ton domaine de gestion, mais il est généralement préférable, de séparer les informations en plusieurs tables.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Points : 170
    Points
    170
    Par défaut
    Par exemple, mes deux tables les plus grandes (les seules d'ailleurs) sont celles représentant un bon de commande et un devis. J'ai plusieurs types d'informations :
    - Les infos concernant les prix (ht, ttc, remise, etc.)
    - Les infos concernant les dates (date de livraison proposé, donné, création, etc)
    - Les infos concernant le contact (nom, prenom...)
    - Les clés étrangères (donnant suite aux jointures : mode de reglement, udm, devise...)
    - Les infos génériques à toutes les tables (archivés, visibles, date de dernière modif...)

    Voilà, le tout fait au moins 40 champs facile.

  4. #4
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Bonjour,

    je verrais bien une table de contact par exemple.

    En suite pour (sauf pour certaines optimisations), il est bien d'éviter de stocker des données calculables.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Points : 170
    Points
    170
    Par défaut
    Bonjour,

    Pas de table contact : il s'agit d'un contact fournisseur, cad la personne qui a répondu au devis.
    Pas de données calculable : il s'agit uniquement (c'est ce qui est triste) de données élémentaires.

    Merci

  6. #6
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Citation Envoyé par whitespirit Voir le message
    Pas de table contact : il s'agit d'un contact fournisseur, cad la personne qui a répondu au devis.
    Il devrait s'agir par exemple d'une donnée qui revient pas mal, ce qui laisse penser que tout ça n'est pas très normalisé.

    La question sera probablement de savoir s'il y a des requêtes qui passent outre les indexes. S'il y en a et qu'elles peuvent n'utiliser qu'une des 2 tables le gain pourrait être appréciable. Si c'est pour réaliser un accès indexé et de toute façon sortir toutes les données ça ne changera probablement pas grand chose. Je m'avance peut-être un peu, mais est-ce qu'un trafic important est attendu ? Parce que pour saturer une BDD en tirant 1 enregistrement (même avec 40 champs) via un indexe pour l'affichage d'une page il faudra y aller...

  7. #7
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Points : 170
    Points
    170
    Par défaut
    Non, il n'y aura pas de trafic sur ce site, une 10-15aines de personnes connectés en même temps, vraiment au grand max ! Sinon, j'aurai en moyenne 3-4 personnes travaillant quotidiennement sur l'application.

    Du coup, je me casse la tête pour rien ?

    PS: j'ai bien identifié les données élémentaires dans cette table. La couper en 2 tables serait uniquement pour des questions d'optimisation mais maintenant, est-ce que j'ai réellement besoin d'optimiser à ce niveau ? Je n'ai pas la réponse !

  8. #8
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 130
    Points : 134
    Points
    134
    Par défaut
    La couper en 2 tables serait uniquement pour des questions d'optimisation
    Ca sert à rien.

  9. #9
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Citation Envoyé par MeDioN Voir le message
    Ça sert à rien.
    Ce n'est pas que ça sert a rien, ça évite la redondance d'information (chose que le modèle MERISE s'efforce d'éradiquer).

    Une jointure est l'une des opérations les plus lourdes que l'on peut demander a un SGBD, même si grâce aux index, elles deviennent raisonnablement utilisables.
    Et comme l'on sait, on nous conseille de séparer au maximum les informations en plusieurs tables.
    Les puristes conseilleraient même d'avoir une table par propriétée ...
    Le nombre de jointure devient alors énorme et donc lourd pour le SGBD.
    Il convient alors d'utiliser des vues pour regrouper les différentes entiées, et leurs donner ainsi un sens plus prononcé au sein du domaine de gestion.

    Au final on a peu de redondance et peu de jointure puisque l'on utilise uniquement les vues pour acceder aux données, certains experts irons jusqu'a dire qu'il ne devrais pas être autrement, et que l'acces aux informations devrais se faire uniquement au travers de vues.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

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

Discussions similaires

  1. Jointure de 3 tables avec un champ commun
    Par desperado007 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/08/2005, 15h35
  2. [C#] Remplir une combobox avec le champs d'une table Access
    Par Damsou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/06/2005, 15h31
  3. UPDATER le champ d'une table 1 avec le champ d'une table 2
    Par alain.dissoir dans le forum Oracle
    Réponses: 2
    Dernier message: 08/06/2005, 13h07
  4. Problème avec les champs de type table
    Par devdev dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 16/12/2004, 16h05
  5. Afficher tous les champs d'une table avec dbexpress et MySQL
    Par LHT dans le forum Bases de données
    Réponses: 2
    Dernier message: 25/06/2004, 17h11

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