Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
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 30/11/2010, 14h24   #1
Invité régulier
 
Inscription : juillet 2006
Messages : 36
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 36
Points : 7
Points : 7
Par défaut Impact sur les performance d'un choix d'implémentation

Bonjour à tous,

Je suis actuellement en cour de création d'une base de données et je suis confronté à un dilem concernant la manière de stocker mes données.

Concretement, je dois stocker des articles divers (livres, dvd, figurines, etc..) et j'ai deux choix qui s'offre à moi :
  • Ou je créé une table "Item" et des tables dérivés "Book", "Figurine", "Movie", etc. Et je met chaque informations communes dans "Items" (ex: champs "Prix") et chaque informations spécifiques ds une table dérivée (ex : champs "Durée" dans la table "Movie").
  • Ou je créé une table "Item" avec un champs "Type" (livre, dvd, etc..) et je rajoute tous les champs spécifiques dedans. En fonction du type j'exploiterais donc les champs dont j'ai besoin.

D'un point de vue programmation, je partirais sur la 1ere solution qui est à mon avis beaucoup plus propre. Maintenant niveau performance, je ne suis pas un pro du sql, j'aurais donc voulu avoir votre avis :

Vaut il mieux requetter dans une seule table au risque de charger des informations dont je n'ai pas besoin ou faire plusieurs requetes dans plusieurs tables et ne charger uniquement que ce dont j'ai besoin ?

Je dirais que les avantages de l'un sont les inconvénients de l'autre et vise versa. Prenons le cas typique de quelqu'un qui recherche tous les articles en rapport avec tintin.

Qu'en pensez vous ? Que me conseillez vous ?

Merci à tous d'avance.
EmacLi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 14h29   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 957
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 957
Points : 18 165
Points : 18 165
Envoyer un message via MSN à CinePhil
La première solution est meilleure. Le modèle de données est ainsi plus normalisé.

Ensuite, tu peux créer des vues pour reconstituer l'ensemble item + sous-table et requêter directement sur ces vues.

Quant à la performance, pas d'inquiétude ! Tu auras des millions d'item dans ta BDD avant de commencer à constater une baisse de performance côté SGBD. La jointure est en effet l'opération la plus optimisée dans un SGBD.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 15h27   #3
Invité régulier
 
Inscription : juillet 2006
Messages : 36
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 36
Points : 7
Points : 7
Ca me rassure tout ça, merci beaucoup
EmacLi 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 03h39.


 
 
 
 
Partenaires

Hébergement Web