Bonjour tout le monde!
Je suis en train de réfléchir sur la structure de ma base donnée en MySQL. Je vais prendre un autre exemple en analogie pour simplifier le problème.
Je veut stocker un grand nombre (probablement des centaines) de voitures. Elle on chacune une plaque d'immatriculation, une couleur, une marque, une version, etc..
Le but c'est que si on cherche (via formulaire) une voiture verte 4x4 alors ça affiche toutes les voitures qui correspondent.
En bon débutant, premier réflexe, je fais une grosse table "voiture" avec les champs "plaque", "couleur", "marque", "version", etc.. La requête MySQL me parait assez simple:
Et puis je vois que j'ai 36 fois les mêmes marques, les mêmes couleurs, etc.. Alors je modifie la table "voiture", les champs deviennent "couleur_id", "marque_id", "version_id" et je garde le champ plaque tel quel normal. Puis je créer les tables "version", "couleur", "marque" avec les champs "id" et "nom".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT * FROM voiture WHERE couleur= 'vert' AND version = '4x4'
La requête devient, enfin je croi:
Finalement mes questions:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT * FROM voiture JOIN couleur ON couleur.id = voiture.couleur_id JOIN version ON marque.id = voiture.version_id WHERE couleur.nom = 'vert' AND version.nom = '4x4'
-> Est-ce que c'est la bonne syntaxe?
-> Est-ce que ça accélère la requête?
-> Est-ce que c'est la bonne façon de gérer ma BDD?
Bref commentez, guidez moi vers un tutos, je sais plus![]()
Partager