Bonjour,

Une question que je me pose : est-il préférable d'utiliser l'identifiant d'un enregistrement d'une table jointe pour faire un traitement PHP, ou vaut-il mieux utiliser son nom (libellé) ?

Je m'explique avec un exemple simple : on a un produit, stocké dans une table "produit" et un produit a une famille, stockée dans une table "famille". On a ainsi la clé étrangère "id_famille" dans la table "produit".

Première solution, que j'ai pris l'habitude de faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
// Si la famille est "Tablette"
if ($id_famille == 3) {traitement}
L'autre solution, avec jointure SQL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
if ($nom_famille == "Tablette") {traitement}
Les deux solutions ont des avantages et inconvénients :
- La première évite de faire la jointure SQL entre les 2 tables, puisque l'identifiant de la table "famille" est présent en clé externe dans la table "produit".
- La première évite d'impacter le code PHP si les noms de famille sont souvent modifiés dans la BDD, c'est surtout pour cette raison que j'utilise cette solution.
- La seconde est plus lisible et évite de mettre un commentaire pour expliquer que l'identifiant 3 de la table "famille" est 3.

Quelle solution utilisez-vous ? et pourquoi ?

Merci d'avance pour vos réponses