Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en 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 05/07/2006, 15h07   #1
Membre éclairé
 
Avatar de nicoaix
 
Homme
Chef de projet MOA
Inscription : décembre 2004
Messages : 561
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 561
Points : 325
Points : 325
Par défaut Optimisation de développement

Bonjour,
Je ne suis pas certain de poster au bon endroit... on verra bien.

J'aimerai des avis et/ou conseils concernant la conception d'une base de données d'une application, notammant concernant le point suivant:
Vaut-il mieux Une table avec beaucoup de champs ou plusieurs tables avec peu de champs? Par exemple : Vaut-il mieux:
-une table Clients avec les champs nom, prenom, date de naissance, telephone fixe , telephone mobile, telephone domicile, fax, adresse, ville, code postal...
-ou une table client avec les champs nom, prenom, date de naissance et une table tel avec les champs fixe, mobile, domicile, fax et une table adresse avec les champs numero, rue, code postal, ville
?

Mon problème est que la multiplication des tables risque de compliquer la programmation de l'application derrière.
Par exemple quand je vais vouloir afficher toutes les informations relatives à un client, je vais être obligé de faire des jointure sur 3 tables (dans le cas des tables éclatées).

Merci.
nicoaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2006, 15h16   #2
Membre Expert
 
Avatar de Adjanakis
 
Inscription : avril 2004
Messages : 734
Détails du profil
Informations personnelles :
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : avril 2004
Messages : 734
Points : 1 281
Points : 1 281
Bonjour,

Pour ma part, c'est surtout les champs de grande contenance que j'ai tendance à séparer du reste des infos d'une table. J'entends par la des champs TEXT ou encore BLOB. En effet, ils ont tendance à ralentir les recherches.

Dans ton cas précis, je ne suis pas persuadé qu'une telle séparation soit nécessaire, surtout si tu dois t'amuser à faire des JOIN derrière. Sinon, en s'appuyant sur le fait, par exemple, que MySQL va plus vite en traitant les lignes de taille fixe (pas de VARCHAR et cie), on peut surement imaginer des choses censée améliorer la rapidité, mais sans avoir de statistique précises il est impossible de te donner une réponse convenable.
__________________
Pensez au tag
Adjanakis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2006, 19h23   #3
Rédacteur
 
Avatar de Biglo
 
Inscription : juillet 2002
Messages : 537
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : juillet 2002
Messages : 537
Points : 561
Points : 561
Salut

Citation:
Envoyé par nicoaix
Mon problème est que la multiplication des tables risque de compliquer la programmation de l'application derrière.
Par exemple quand je vais vouloir afficher toutes les informations relatives à un client, je vais être obligé de faire des jointure sur 3 tables (dans le cas des tables éclatées).
Si tu récupères souvent toutes les infos propres à un client, il vaut mieux oublier de séparer tes données. C'est bon si tu as des données qui sont accédées régulièrement et d'autres (généralement encombrantes) qui ne sont accédées que de temps en temps.

L'exemple de Adjanakis montre vraiment un cas où il peut être intéressant de séparer des données d'une table.
Biglo 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 21h28.


 
 
 
 
Partenaires

Hébergement Web