Bonjour,
Cette question m'obsède depuis quelques jours :
Lorsque l'on créé une base de données, il faut éviter de concevoir des tables avec des valeurs nulles. Ainsi, il est préférable d'utiliser plusieurs tables, liées par des index.
Mais si nous devons récupérer un certains nombre d'informations, réparties dans plusieurs tables, cela nous oblige à exécuter plusieurs requête au lieu d'une.
Comme je ne suis pas sûr d'être bien clair, je vais donner un exemple :
Imaginer une table contenant les champs suivants :
L'adresse email et le site étant facultatifs (pour l'exemple), je vais me retrouver avec une table contenant des valeures nulles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 id pseudo passe email site
Mieux vaudrait donc procéder ainsi :
Les 2 tables ci-dessus étant "liées" par les champs id.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Table 1 : id pseudo passe Table 2 : id email site
Maintenant, je veux récupérer les pseudo, passe, email et site.
Dans le premier cas, une simple requête suffit :
Mais dans le deuxième cas, la reqête est plus complexe (à peine mais c'était pour l'exemple), ou alors on peut faire 2 requêtes SELECT interrogeants les tables 1 et 2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT pseudo, passe, email, site FROM ma_table WHERE id=monID;
Ma question est la suivante :
(notez bien que je viens de décrire qu'un exemple, mais pour que les choses soient significatives, il faut imaginer une structure nettement plus complexe)
En terme d'optimisation (notamment côté serveur sql), quel choix faut-il prendre : accepter des valeurs nulles dans les tables pour simplifier les requêtes, ou construire ses tables correctement quit à utiliser des requêtes plus complexes ?
Merci pour vos avis avisés !! (j'espère avoir été clair...)
Partager