IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MySQL Discussion :

MySQL gestion & multi-tables


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 20
    Par défaut MySQL gestion & multi-tables
    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:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM voiture WHERE couleur= 'vert' AND version = '4x4'
    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".

    La requête devient, enfin je croi :

    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'
    Finalement mes questions:

    -> 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

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 057
    Par défaut
    Bonjour,

    Citation Envoyé par Belenos Voir le message
    Finalement mes questions:

    -> 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?
    Les réponses aux trois questions sont : OUI, OUI et OUI .
    C'est la bonne syntaxe (si ce n'était pas la bonne, tu aurais une erreur...).
    Ca accélère la requête pour plusieurs raisons : tu remplaces les champs texte par des champs clé numérique, qui sont automatiquement indexés, donc ça doit aller plus vite.
    Enfin, c'est la bonne façon de gérer ta base : sa conception est normalisée et ça évite les erreurs, les redondances...

    Citation Envoyé par Belenos Voir le message
    Bref commentez, guidez moi vers un tutos, je sais plus
    Commence par regarder ces tutoriels très complets : http://sql.developpez.com/

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 20
    Par défaut
    Citation Envoyé par ced Voir le message

    C'est la bonne syntaxe (si ce n'était pas la bonne, tu aurais une erreur...).

    ced
    Pas testé !
    La syntaxe je finirai bien par trouver mais il me fallait l'avis d'un expert pour la gestion en générale.

    Merci ! Maintenant que je suis sûr je peux passer à l'action !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. MySQL gestion & multi-table 2 le retour !
    Par Belenos dans le forum MySQL
    Réponses: 3
    Dernier message: 06/07/2009, 22h01
  2. [PDO] Requêtes MySQL multi-tables ?
    Par nabab dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/08/2007, 19h40
  3. [MySQL 3.23.58] delete multi-tables
    Par GLDavid dans le forum Requêtes
    Réponses: 8
    Dernier message: 07/08/2006, 11h45
  4. UPDATE multi-tables sous SQL Server
    Par Cybernet dans le forum Langage SQL
    Réponses: 8
    Dernier message: 25/03/2004, 15h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo