Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/12/2011, 23h28   #1
Candidat au titre de Membre du Club
 
Homme Bertrand
Inscription : octobre 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 47
Points : 14
Points : 14
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
105rn2 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/12/2011, 09h41   #2
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 447
Points : 4 447
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 :
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) 
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 20/12/2011, 10h12   #3
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 184
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 184
Points : 2 814
Points : 2 814
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 !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/12/2011, 10h57   #4
Candidat au titre de Membre du Club
 
Homme Bertrand
Inscription : octobre 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 47
Points : 14
Points : 14
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
105rn2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 11h59   #5
Candidat au titre de Membre du Club
 
Homme Bertrand
Inscription : octobre 2011
Messages : 47
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 47
Points : 14
Points : 14
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
105rn2 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h23.


 
 
 
 
Partenaires

Hébergement Web