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

Requêtes MySQL Discussion :

Choix de conception


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut Choix de conception
    Je suis actuellement en train de développer un site en PHP/MySQL, et je tombe sur un "probleme" pour lequel je me demande quelle est la meilleur solution à adopter.

    En gros j'ai une liste de jeux, une liste de genres.
    Un jeu peux posseder plusieurs genres.

    Si on suis une conception normale d'une base de données, on devrait normalement se retrouver avec 3 tables :
    Jeux(`id`, `nom`, ...) = table qui contient tous les jeux
    Genres(`ìd`, `nom`, ...) = table qui contient tous les genre
    Jeux_Genres(`id_jeu`, `id_genre`) = association entre les 2 tables

    Mais je me demande si il ne serai pas plus interessant d'ajouter un champ supplémentaire (par exemple `genres`) dans la table jeux qui contiendra les id des genres du jeu séparé par des virgules par exemple afin de se passer de la table Jeux_Genres.
    L'avantage serai que si on récupere un jeu, on a en meme temps tous ses genres sans avoir a faire de jointure ou de requete supplémentaire.
    L'inconvégnant par contre va se situer au niveau des recherches, si l'on doit rechercher un jeu par genre, d'un, le champ ne sera plus numérique (donc plus lent) mais en plus il faudra s'amuser à identifier les genres séparé par des virgules.

    Qu'en pensez vous ?

  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 063
    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 063
    Par défaut
    Salut,

    Tu as parfaitement résumé la situation, avec avantages et inconvénients de chacune des solutions.
    La question qu'il faut alors se poser ne dépend que de toi : que veux-tu faire de l'application et quelle est la part entre performances (et encore, pas sûr qu'elles soient tant dégradées que ça par la table de passage) et la fonctionnalité de recherche par genres ?

    A toi de voir...

    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 éprouvé
    Inscrit en
    Septembre 2007
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 169
    Par défaut
    Au niveau performance, la jointure est comme l'a dit ced plutot performante, surtout avec des index, donc tu devrais pas perdre tant que ca.
    Au niveau de la syntaxe, si ta version le permet l'écriture en NATURAL JOIN reste très simple et lisible.
    Au niveau de l'exploitabilité, c'est plus maintenable (à mon sens) avec les 3 tables, pour ajouter des fonctionnalités par exemple.

  4. #4
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    Ok donc je pense que je vais resté sur la méthode 3 tables.

    Par contre c'est quoi NATURAL JOIN ?
    Je connais LEFT, RIGHT, INNER mais pas NATURAL

  5. #5
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 169
    Par défaut
    NATURAL JOIN fait une jointure dite naturelle, c'est à dire qu'il fait la jointure entre les 2 tables en utilisant les champs dont le nom est identique.
    Ex, en renommant tes champs comme ceci :
    Jeux (`id_jeu`, `nom_jeu`, ...) = table qui contient tous les jeux
    Genres(`ìd_genre`, `nom_genre`, ...) = table qui contient tous les genre
    Jeux_Genres(`id_jeu`, `id_genre`)

    Au lieu de ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM Jeux 
    INNER JOIN Jeux_Genres ON Jeux_Genres.id_jeu = Jeux.id_jeu 
    INNER JOIN Genres ON Jeux_Genres.id_genre = Genres.id_genre
    Tu peux écrire ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM Jeux 
    NATURAL JOIN Jeux_Genres 
    NATURAL JOIN Genres

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

Discussions similaires

  1. Choix de conception d'un script Perl
    Par mensoif dans le forum Langage
    Réponses: 4
    Dernier message: 30/04/2009, 09h52
  2. choix de conception pour un objet
    Par babedt dans le forum Langages de programmation
    Réponses: 11
    Dernier message: 16/05/2008, 17h22
  3. [Choix de Conception] JSF vs API JavaScript
    Par Jedy dans le forum JSF
    Réponses: 3
    Dernier message: 20/12/2007, 15h47
  4. choix de conception
    Par bibile dans le forum Requêtes
    Réponses: 11
    Dernier message: 18/07/2006, 16h19
  5. Eclaircissements sur choix de conception
    Par sozie9372 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/06/2006, 14h02

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