Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/06/2008, 08h43   #1
Membre habitué
 
Inscription : septembre 2007
Messages : 357
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 357
Points : 118
Points : 118
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
whitespirit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2008, 10h59   #2
Expert Confirmé
 
Avatar de Alain Defrance
 
Homme Alain DEFRANCE
Project Lead
Inscription : août 2007
Messages : 1 993
Détails du profil
Informations personnelles :
Nom : Homme Alain DEFRANCE
Âge : 24
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Project Lead

Informations forums :
Inscription : août 2007
Messages : 1 993
Points : 2 919
Points : 2 919
Envoyer un message via MSN à Alain Defrance Envoyer un message via Skype™ à Alain Defrance
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 - http://www.alain-defrance.com
Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
Project Lead eXo Social
Java Black Belt - Java Black Belt Coach
Alain Defrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2008, 16h49   #3
Membre habitué
 
Inscription : septembre 2007
Messages : 357
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 357
Points : 118
Points : 118
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.
whitespirit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2008, 19h16   #4
Expert Confirmé
 
Avatar de Alain Defrance
 
Homme Alain DEFRANCE
Project Lead
Inscription : août 2007
Messages : 1 993
Détails du profil
Informations personnelles :
Nom : Homme Alain DEFRANCE
Âge : 24
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Project Lead

Informations forums :
Inscription : août 2007
Messages : 1 993
Points : 2 919
Points : 2 919
Envoyer un message via MSN à Alain Defrance Envoyer un message via Skype™ à Alain Defrance
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 - http://www.alain-defrance.com
Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
Project Lead eXo Social
Java Black Belt - Java Black Belt Coach
Alain Defrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2008, 10h03   #5
Membre habitué
 
Inscription : septembre 2007
Messages : 357
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 357
Points : 118
Points : 118
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
whitespirit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 00h36   #6
Membre Expert
 
Avatar de Sivrît
 
Inscription : février 2006
Messages : 953
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2006
Messages : 953
Points : 1 189
Points : 1 189
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...
Sivrît est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 09h40   #7
Membre habitué
 
Inscription : septembre 2007
Messages : 357
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 357
Points : 118
Points : 118
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 !
whitespirit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 19h31   #8
Membre habitué
 
Inscription : mai 2005
Messages : 130
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 130
Points : 105
Points : 105
Envoyer un message via ICQ à MeDioN Envoyer un message via AIM à MeDioN Envoyer un message via MSN à MeDioN
Citation:
La couper en 2 tables serait uniquement pour des questions d'optimisation
Ca sert à rien.
MeDioN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 09h17   #9
Expert Confirmé
 
Avatar de Alain Defrance
 
Homme Alain DEFRANCE
Project Lead
Inscription : août 2007
Messages : 1 993
Détails du profil
Informations personnelles :
Nom : Homme Alain DEFRANCE
Âge : 24
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Project Lead

Informations forums :
Inscription : août 2007
Messages : 1 993
Points : 2 919
Points : 2 919
Envoyer un message via MSN à Alain Defrance Envoyer un message via Skype™ à Alain Defrance
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 - http://www.alain-defrance.com
Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
Project Lead eXo Social
Java Black Belt - Java Black Belt Coach
Alain Defrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h02.


 
 
 
 
Partenaires

Hébergement Web