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

Schéma Discussion :

[FN]Choix dans la conception


Sujet :

Schéma

  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 690
    Points : 20 211
    Points
    20 211
    Par défaut [FN]Choix dans la conception
    Bonjour à tous,

    Je planche actuellement sur la conception de la bdd d'un futur site web a (très) fort traffic et je suis face à une question.
    Dois je privilégier une structure "comme-on-dis-a-l-ecole" c'est à dire avec des forme normales les plus aboutis ou puis je penser "performance serveur" pendant ma conception ?

    Je m'explique,

    J'ai une base "jeux" dans la quelle j'ai ces champs :

    id + nom + id_categorie

    Puis une base "catégorie" qui se compose comme suit :

    id + libelle

    Sachant que un jeux peut avoir plusieurs catégories dois je opter pour une table qui fait la liaison entre les deux précédentes (donc au mnimum autant d'enregistrement que de jeux et une requete plus conséquente) ou alors dois je préféré un champs id_catégorie multivalué que je traite via php par la suite ?

    Sachant que nous utilisons mysql quel est le meilleur choix pour ne pas mettre le serveur à genoux lorsque quelques centaines de visiteurs seront connectés
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Sans hésitation, une table de liens. Non seulement c'est plus "académique", mais surtout ce sera nettement plus performant ! De plus, faire des champs multivalués rendrait à peu près impossible l'exécution d'une requête comme "Trouver tous les jeux de la catégorie Tartanpion", ou alors mettrait ton PC à genoux.

    Sache que faire une jointure est certe "coûteux", mais tout bon SGBDR possède de nombreuses façons d'optimiser cette opération (jointures tardives, index, ...). Fais-lui confiance pour faire la jointure de façon performante, c'est son boulot et il est impensable que du code php fait maison (ou pas fait maison d'ailleurs) batte les quelques 10 ans (au moins) d'historique de développement de ton SGBDR.
    Il est en général une très mauvaise idée de partir du principe que tu feras mieux que ta base de données et de faire les traitements / filtrage dans ton application. Procéder ainsi est une source de très grosses pertes de performances.

    Je te conseille vraiment de partir d'un schéma bien normalisé (ou presque) et de dénormaliser au cas par cas en fonction des besoins (avec des colonnes précalculées par des triggers par exemple).

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

Discussions similaires

  1. [Formulaire] filtrer liste par choix dans autre liste
    Par vatounet dans le forum Access
    Réponses: 4
    Dernier message: 05/10/2005, 16h57
  2. Variable qui évolue en fonction des choix dans formulaire
    Par stefou007 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/09/2005, 23h40
  3. Choix dans le développement d'un projet
    Par Azharis dans le forum C++
    Réponses: 10
    Dernier message: 08/06/2005, 09h13
  4. Choix dans les jointures externes
    Par WebPac dans le forum SQL
    Réponses: 2
    Dernier message: 21/01/2005, 13h34
  5. Réponses: 2
    Dernier message: 23/06/2004, 14h56

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