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

Access Discussion :

Scission d'une table en 2 [AC-2010]


Sujet :

Access

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut Scission d'une table en 2
    Bonsoir,
    Surement une question de base, mais je vous remercie par avance de votre aide
    J'ai une table de quelques milliers de lignes, que j'aimerai alléger un peu
    J'estime qu'un groupe de 5-6 champs n'est utilisé que dans 15-20% environ des lignes
    Afin de garantir l'intégrité référentielle, ces champs sont toujours remplis (avec une valeur par défaut, si non utilisé) et donc pèsent sur la tailel de la table
    Si je sépare ma table en 2, je ne gagnerai donc pas en taille

    J'ai donc pensé créer une table secondaire (un peu à la manière d'une table de jonction entre 2 tables, mais cette fois ci avec lien que vers la table principale) ainsi seules les lignes contenant les champs réellement utilisés seraient présentes

    Est ce une bonne idée ?
    Si oui, dois je mettre un N° auto dans cette table secondaire ?
    ou puis je reprendre le N° auto de la table principale ? (si je fais cela, cela ne reviendrait il pas à séparer simplement ma table en 2, avec pour chaque ligne des valeurs par défaut ?)

    Je ne sais pas si ma demande est bien claire, mais par avance merci
    Cordialement
    Bertrand

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 612
    Points : 56 717
    Points
    56 717
    Billets dans le blog
    40
    Par défaut
    Bonjour,

    Si je prends un exemple classique de table des commandes :
    Commande (idCommande, #idClient, DateCommande, AnnulationCommande)

    AnnulationCommande est un booléen signalant que la commande est annulée si sa valeur est Vrai.

    Supposons qu’en cas de commande annulée, on veuille connaître certaines informations supplémentaires comme la date d’annulation, le motif de l’annulation, l’employé qui a validé l’annulation etc.

    Commande (idCommande, #idClient, DateCommande, AnnulationCommande, DateAnnulation, MotifAnnulation, #idEmployeAnnulation)

    Et si on suppose qu’une minorité de commande soit annulée, nous voilà avec une majorité de lignes remplis avec des champs bêtement à vides (ou remplis par défaut), consommateurs de mémoire comme tu as pu le constater.

    Solution===> Une table des commandes annulées en relation "un à un":
    Commande-1-----------1-CommandeAnnulee

    Commande (idCommande, #idClient, DateCommande) (plus besoin du booléen AnnulationCommande)
    CommandeAnnulee(#idCommande, DateAnnulation, MotifAnnulation, #idEmployeAnnulation)

    (CommandeAnnulee.idCommande (entier long) à la fois clé primaire et clé étrangère reliée à Commande.idCommande)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Commande :
    idCommande	idClient	DateCommande
    1		23		15/03/2011
    2		42		20/04/2011
    3		263		01/05/2011
    4		234		23/06/2011
    …
    
    CommandeAnnulee :
    idCommande	DateAnnulation		MotifAnnulation	idEmployeAnnulation
    3		02/05/2011		plus besoin		56
    Seule la commande n°3 est annulée et fait l’objet d’une ligne supplémentaire dans la table CommandeAnnulee.

    Voilà le principe…pas de champs vides (ou remplis par défaut) 

  3. #3
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour 105rn2 et Fabien,

    Je me permets de m'immiscer, Fabien...

    105rn2, , félicitation pour ta réflexion et la solution que tu as pressentie : il s'agit, en fait, d'une problématique bien connue dans le monde de la modélisation (l'excellent exemple du non moins excellent Fabien le montre). Le fait que, visiblement, tu sois parvenu à cette solution naturellement est remarquable (au sens littéral du mot : restons humbles !...).
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Bonjour Fabien, Bonjour Richard,
    Je vous remercie tout deux d'avoir pris le temps de me répondre et de m'encourager !
    Merci Fabien, pour cette démonstration très claire et pédagogique (par l'exemple)
    Ne me reste plus qu'à mettre en œuvre : je crois qu'Access a un outil pour séparer une table en 2, il ne me suffira alors qu'à supprimer les lignes inutiles.
    Merci encore de votre réponse, car je n'avais pas trouvé (peut être pas bien cherché) d'article sur ce sujet
    Bonne journée et de très agréables fêtes de fin d'année !
    Bertrand

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Bonjour à Tous,
    Voila j'ai fait les modifications, et ça marche super !
    La fonction scission d'Access ne voulant pas marcher (message d'erreur sur la version de la table ??) voila comment j'ai fait :
    -J'ai dupliqué la structure de la table 1 vers table 2
    -J'ai supprimé de la Table 2 les champs inutiles (voués à rester uniquement dans table 1)
    -Une petite Requête pour remplir la table 2 avec les lignes pertinentes (au passage, mon évaluation était complétement fausse : environ 1400 lignes sur 65000 au total)
    -Sur le Form de la Table 1, ajout d'un Sous Form de la Table 2 (rendu visible selon critère)
    -Vérification de la cohésion des infos en redondance entre les 2 Tables
    -Suppression dans table 1 des champs repris dans Table 2

    Je n'ai plus qu'à appliquer aux autres tables !
    Merci encore pour votre aide, et bonnes fêtes de fin d'année !
    Bertrand

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

Discussions similaires

  1. Récupération des noms de champs d'une table
    Par Battomura dans le forum SQL
    Réponses: 2
    Dernier message: 24/03/2003, 10h00
  2. Trouver le dernier enregistrement d'une table
    Par remi59 dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/03/2003, 14h54
  3. Erreur lors de modification d'une table
    Par seb.49 dans le forum SQL
    Réponses: 11
    Dernier message: 13/01/2003, 17h16
  4. Pb d'auto-incrément sur une table v7
    Par Nivux dans le forum Paradox
    Réponses: 9
    Dernier message: 26/12/2002, 12h05
  5. [ADO] Tester l'existence d'une table
    Par nd25 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 05/09/2002, 13h55

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