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

Langage SQL Discussion :

Bien structurer ma base, une table ou plusieurs ?


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2
    Par défaut Bien structurer ma base, une table ou plusieurs ?
    Bonjour a tous, voila une question que je me pose depuis longtemps. sur la bonne structure d'une base sql.

    est il plus optimisé pour une requette select sur une table comprenant des milliers d'enregistrement (propriété de différent titulaires) qu'elle soit structuré comme ceci :

    MATABLE_TOUT_TITULAIRE
    id_titulaire | donnée | donnée | date | heure | ... |

    ou

    MATABLE_ID_TITULAIRE
    donnée | donnée | date | heure | ... |

    donc :

    que tout les titulaires soit mélangés
    ou au contraire créer une table pour chaque titulaire.

    Donc la requette serais soit :

    where id_titulaire = 'sonchiffre' | ou | un select from MATABLE_ID_TITULAIRE

    ya t'il une différence de performance ? sachant que chaque utilisateur peux avoir rapidement des milliers d'info, la base devra pouvoir supporter des milliers d'utilisateurs.

    voici la structure actuelle pour vous aider :
    CREATE TABLE `tab_compte_bancaire` (
    `id_mouvement` int(10) NOT NULL auto_increment,
    `id_titulaire` int(4) NOT NULL default '0',
    `id_etablissement` int(4) NOT NULL default '0',
    `id_compte` int(4) NOT NULL default '0',
    `id_type` int(4) NOT NULL default '0',
    `id_categorie` int(4) NOT NULL default '0',
    `id_abonnement` int(4) NOT NULL default '0',
    `intituler` varchar(255) default NULL,
    `montant` decimal(10,2) default NULL,
    `date` date NOT NULL default '0000-00-00',
    PRIMARY KEY (`id_mouvement`),
    KEY `id_etablissement` (`id_titulaire`),
    KEY `id_compte` (`id_compte`),
    KEY `id_categorie` (`id_categorie`),
    KEY `id_abonnement` (`id_abonnement`),
    KEY ` id_type_paiement` (`id_type`),
    KEY `id_etablissement_2` (`id_etablissement`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1

  2. #2
    Membre éprouvé
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Par défaut
    Bonjour,

    Soit je n'ai pas compris ce que tu veux faire ...
    soit il faut que tu détailles comment tu détermines quelle table MATABLE_ID_TITULAIRE tu dois lire ?

    A +

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    Plus petites seront les tables, plus rapide seront les accès aux données, plus la base pourra supporter de nombreux utilisateurs et un volume de données conséquent.

    Un petit exemple de ce qu'il faut faire : http://sqlpro.developpez.com/cours/optimiser/#L5

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2
    Par défaut
    SQL pro, merci de ta réponse, j'ai lu juste apres l'article, tres bon d'ailleur.

    EN effet en toute logique le fait de diviser mes tables le plus possible me paraissait cohérent, mais j'avais un doute. Désolé de faire doublont sur le forum. Merci à vous.

  5. #5
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Si j'ai bien compris la question, c'est à dire créer une table par titulaire, je suis très étonné que SQLPro entérine cette solution, surtout pour quelques milliers d'utilisateurs ce qui reprèsente quelques milliers de tables et ce pour quelques milliers d'info, c'est à dire un nombre énorme de tables (pour capturer la même chose) et pour quelques millions de lignes, c'est à dire une volumétrie très raisonnable pour un vrai SGBDR).
    D'autant plus que la question de TheLeadingEdge reste cruellement posée ...

  6. #6
    Membre confirmé Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Par défaut
    Effectivement, j'avais cru comprendre qu'un SGBD était conçu pour gérer dans ses tables bon nombre de lignes... dont les "milliers" mentionnés par jeyspy.

    Et puis TheLeadingEdge a effectivement me semble-t-il mis le doigt sur un problème non négligeable...

    Alors évidemment je partage la stupéfaction de Médiat quant à la réponse de SQLPro...

Discussions similaires

  1. [AC-2003] Requête mise à jour d'un champ d'une Table dans plusieurs bases ACCESS
    Par alainfbsi dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 02/05/2013, 20h35
  2. [MySQL] Répartition d'une table sur plusieurs base de données
    Par jerome572 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 23/05/2011, 17h58
  3. faire une table avec plusieurs tables issues de base différentess
    Par adelsunwind dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/03/2009, 14h12
  4. Creation d'une table avec plusieurs clés
    Par mic79 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 21/06/2005, 11h17
  5. [postgresql]creer une table avec plusieurs clés primaire??
    Par perlgirl dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2004, 17h24

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