Aide pour création Bdd client sous Acces [Fermé]

Signaler
-
phil_232
Messages postés
289
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
-
Bonjour,
Je viens ici car apparement l'aide est souvent pertinente au dire.
J'ai actuellement un problème avec le logiciel Access de Microsoft.
Lorsque je veux creer une requête il me signale "Incoherence de type dans une expression".

Alors pour rentrer dans le contexte, je suis en cours de création d'une base de données client pour une entreprise de distribution d'équipement sportif.

Ce que j'aimerais faire est de voir les clients qui achetent dans un rayon particulié du magasin à partir des produits qu'ils ont achetés sachant que chaque produit
est référencé dans le rayon.

Exemple: Rayon qui a pour critère Montagne, j'aimerais voir les clients qui ont acheté des produits de ce rayon

Pour celà j'ai crée 3 tables qui sont les suivantes :

CLIENT
[Clé Primaire] N°client (NuméroAuto) ex : 1
Nom client (Texte) ex : Dubois
Prénom client (Texte) ex : Pierre
Sexe (Texte) ex : H
Adresse client (Texte) ex : 7 rue de l'élysée
Code postal client (Texte) ex : 99000
Ville client (Texte) ex : Ailleurs
Telfixe client (Texte) ex : 03.....
Telport client (Texte) ex : 06..........
Achat produit (Texte) ex : 1,3,4,31,52 (ceux sont les références des produits qu'a acheté le client

faites par liste déroulantes à choix multiples depuis N°produit)

PRODUIT
[Clé primaire] N°produit (Numérique) ex : 31
Description produit (Texte) ex : Nike Air blanche
Prix TTC produit (Monétaire) ex : 110 €

RAYON
[Clé primaire] N°Rayon (Numérique) ex : 1
Secteur rayon (texte) ex : Montagne
Description rayon (texte) ex : Randonnée, Escalade, Alpinisme ....
Produits (texte) ex : 12,34,5,7,2 ... (ceux sont les références produits dans le rayon faites par

liste déroulantes à choix multiples depuis N°produit)


Voici ma relation : http://img378.imageshack.us/img378/8219/relationja8.jpg


Ma requète est http://img386.imageshack.us/img386/9376/requeteme6.jpg

et voilà ce qui m'est présenté http://img386.imageshack.us/img386/9376/requeteme6.jpg

J'espere avoir été assez clair.
J'attend vos réponses avec impatience merci . ^^
Bye

2 réponses

Messages postés
289
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
31
la relation est fait dans le mauvais sens. CLIENT ne DOIT PAS contenir une réf vers le produit mais PRODUIT doit contenir une vers le client. comme ça chaque achat est lié à un client. puis PRODUIT contient aussi une réf vers le rayon. Donc

CREATE TABLE PRODUIT
[Clé primaire] N°produit (Numérique) ex : 31
ClientID (Numérique),
RayonID (Numérique),
Description produit (Texte) ex : Nike Air blanche

Mettre le prix dans PRODUIT est dangereux ! Souvent on veut un rapport p.ex. à la fin de l'année. Si ton prix à changé dans l'année le chiffre d'affaire ne sera pas correcte. Mieux vaut une table avec les prix avec deux date qui indique leur validité

CREATE TABLE ProductPrice
[Clé primaire] ID (Numérique),
ProductID (Numérique),
Price (Numérique),
ValidFrom DateTime,
ValidTo DateTime
d'accord mais est-il possible de mettre plusieurs client dans la même ligne "ClientID" de produit ? (ex ClientID: 1;2;3;87;45)
Je sais qu'il y a se systeme de liste déroulante avec choix multiples, puis je l'utiliser pour celà ?
> batteurkev
Enfaite je veux savoir si il est possible de mettre plusieurs nombre dans le ClientID de la table produit, puisque nous savons qu'il n'y a pas un client par produit mais plusieurs. si oui, doit je separer les nombres par ";" ?
phil_232
Messages postés
289
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
31 > batteurkev
d'ailleurs : bien sur que c'est possible. mais va un peut voir sur www.TheDailyWTF.com . Il existe aussi en francais maintenant.

bref : mauvais design
Messages postés
289
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
31
aaaah, en fait j'aurai du y penser. D'abord, non! Ton approche est beaucuop trop lourd pour etre utilisable. Ce qu'on fait c'est un si-dite many-to many. Tu auras trois tables : une pour les clients, une pour les produits, une qui met en relation client et produit. Donc pour CLIENT rien ne change, dans PRODUIT on en ne met PAS la réf vers le client. La 3ième est bêtement

CRATE TABLE ProductsClient
ClientID numérique
ProductID numérique

clé primaire composée de ClientID, ProductID

----------- ------------------- -------------
-Clients- ProductClient Products -
---------- ------------------- -------------
ClientID--ClientID
^^^^^^ProductID -- ProductID

(je voulais faire un ASCII art mais ca marche pas trop bien ici)

en langage humain :
un client peut avoir (acheter) plusieurs produits, et un produit peut etre acheter par plusieurs client, d'où la table qui fait le lein entre les deux

ceci s'appelle Normalisation.