Bonjour

On a tous connu ça :

Vous concevez la base de données... Les tables principales ont forcément dans leurs colonnes des clés étrangères référençant des tables de références. Les tables de références peuvent être volumineuses mais les données ne bougent pas beaucoup.

Par ex, une base de données référençant les espèces animales, avec pour chaque animal sa classe, son ordre, sa famille, son espèce etc...

Ensuite, pour gérer cette table, on crée une interface web avec une requête qui afficherait tous les enregistrements de la table, les clés étrangères remplacées par les libellés (c'est plus clair pour tout).

L'interface web offre la possibilité de filtrer la requête grâce aux clés étrangères. Le plus simplement, puisque pour chaque clé étrangère, la liste est sensée être "finie", du coup, j'utilise un élément de formulaire <SELECT>.

Et c'est là que j'ai besoin de vos avis :
Comment rempliriez vous cet élément <SELECT> ?

1ere solution : exporter les tables de ref dans des fichiers à inclure.
Pour éviter les aller-retour entre le site et la base, j'aurais tendance à exporter les tables de référence dans des fichiers en include avec les paires ID - Libelle et j'utiliserais ces fichiers pour remplir les balises <SELECT>. Les fichiers sont alors remis à jour à chaque fois que les tables de références sont mises à jour.

2me solution : faire de la requête SQL
Sinon, pour pas se crever, par balise SELECT, faire un select sur chacune des tables de références à chaque fois qu'on affiche la page web (donc si il y a 4 tables de références, il y a facilement au minimum 5 requêtes SQL sur la même page... mon petit doigt me dit que c'est pas très bon ça... mais je ne sais pas si mon petit doigt a raison)

En 2bis, je peux peut-être faire de la requête SQL en cachant les résultats... mais si les tables de référence changent ?

3me solution : les procédures stockées
Sinon, est-ce que le principe de procédures stockées en mysql peut m'aider dans ce que je veux faire ?

Merci pour votre aide.
Je cherche surtout une réponse argumentée parce que je ne maîtrise pas bien les contraintes de performance et je veux essayer de comprendre à partir de vos réponses. Merci