Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
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 12/08/2011, 09h07   #1
Invité de passage
 
Inscription : janvier 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 3
Points : 0
Points : 0
Par défaut problemes pour concevoir une BD

Bonjour,
Je gére une petite société de formation en entreprise. Je tente de dévepper sur access 2007 un appli qui me permet :
- faire un bilan de toutes les formations de l'année (clients, type de formation, adresse du lieu de formation, Chiffre d'Affaire, formateur.
Sachant que pour chaque rubrique j'ai plusieurs options possible. J'ai donc créé les objets suivants :
1 table :
T_Formations (stocke les infos relatives aux formations) :
: Clé primaire
: Clients (txt)
: Adresse (txt)
: Type de formation (txt)
: Formateurs (liste de choix)
: Date (date)
: Facturation (monétaire)
: N° de Facture (nombre)
: Catégories (trois cases à cocher "cat-1, Cat-2, Cat-3"
1 table :
T_Clients :
: Clé primaire
: Code client (incrémenté +1)
: Raison sociale (txt)
: Adresse 1 (txt)
: Adresse 2 (txt)
: CP (masque code postal)
: Ville (txt)
: Téléphone (masque tél)
1 table employés (formateurs) liée à une table données sociales:
T_Employés :
: Clé primaire
: Civilité (liste de choix)
: Nom (txt)
: Prénoms (txt)
: Adresse de messagerie (txt) "impossible de créer un modéle prédefini"
: Fonction (txt)
: N° Téléphone pro (masque tél)
: N° Téléphone perso (masque tél)
: N° Téléphone mobile (masque tél)
: Adresse 2 (txt)
: CP (masque code postal)
: Ville (txt)
1 Table
T_Données Sociales
: Clé primaire
: Date de naissance (date)
: N° de SS (masque N° de SS+clé)
: Adresse de Naissance (txt)
: CP de naissance (code postal)
: Age (calculé "expression"=datediff("a" ;[Date de naissance];Maintenant()) "ne s'actualise pas"
: Niveau de fomation (liste de choix)
: Statut civil (liste de choix "marié, célibataire, concubinage"')
: Nombre d'enfants (Nombre)
: Date d'entrée (date) "date d'embauche"
: Date de sortie (date) "date ou la personne à quitté la société)
: Anciéneté (là probléme car ou il est encore dans la socité et on se référe à "maintenant(). Ou il à quité la société et on doit se référer à [Date de sortie] en années et mois et là je plante. Il faudrait du VBA mais ça dépasse mes compétences... Help !

Autre probléme comment visualiser des piéces jointes *.pdf, Contrat, CV, Diplômes etc... Là aussi je bug.

Toutes les tables ont un formulaire double affichage, sauf les tables : T_Employés et T_données sociales qui sont sur un formulaire avec onglets (un pour chaque tables).

Au final je voudrait obtenir :
1 état des employés avec l'anciénneté
1 état des formations avec sommations des champs facturations (je cherche aussi à faire afficher dans le formulaire de saisie "formation" la somme actualisée pour chaque ajouts) là autre limites de compétences je sais pas faire.

Voili voilou je bloque sur plein de points je ne sait pas si la répartition de mes données et cohérente ainsi que mes relations. Je voudrais également intégrer des images de types icones et là encore je bloque.

Tout ça parait trés brouillon, mais en fait c'est assez clair dans ma tête, mais je ne suis pas développeur, bien qu'ayant joué avec du java du c et c++ pendant mes études (lointaines sic !!!).
Si quelqu'un peu m'aider conceptuellement et techniquement je suis preneur.
Merci

"Quant on à un clou dans la tête toutes les solutions d'un probléme prennent la forme d'un marteau"
kalouk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 09h49   #2
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
bonjour,

j'ai déplacé votre message ici car il y a manifestement une reflexion a mener sur la modélisation avant de d'essayer de travailler sur les formulaires

je pense qu'il est préférable de régler les problèmes de modélisation au niveau des tables en premier lieu, sinon la discussion va partir dans tous les sens et le travail fait sur les formulaires sera à refaire si les tables sont modifiées

une fois que les tables seront prêtes, une discussion par problème dans le forum adequat sera bien plus efficace
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 10h19   #3
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
re

une première remarque concerne les champs calculés
on ne stocke pas une donnée inutilement
en plus ce n'est pas possible de mettre une formule dynamique dans une table

par exemple pour l'âge :
on a la date de naissance, ça suffit
l'âge ne doit pas apparaître dans la table

l'âge sera calculé dynamiquement dans une requête

on a l'âge dans T_Employés
on crée une requête R_Employés par exemple
on y met tous les champs de la table T_Employés
et on ajoute un champ à cette requête :
Code :
age : datediff("a" ;[Date de naissance];Maintenant())
(je ne n'ai pas vérifié la formule)

c'est ensuite cette requête qui va nous servir dans l'application
au lieu d'avoir T_Employés en source d'un formulaire, on utilisera R_Employés
à chaque fois qu'on sollicitera la requête, le champ age sera calculé (mais pas stocké)

c'est le même principe pour l'ancienneté

pour le client dans T_Formations
c'est bizarre qu'il soit en texte
on n'utilise pas le nom du client, on utilise sa clé primaire
la clé primaire ne changera jamais, le nom ou l'adresse peuvent changer
si le nom du client change dans T_Clients, on ne saura pas le retrouver
lors de calculs on doit pouvoir par exemple sommer en fonction d'un identifiant qui ne change pas au cours du temps (la clé primaire)

dans T_Formations, on peut ajouter une colonne de recherche :
voir : http://office.microsoft.com/fr-be/ac...010163773.aspx

on obtient ainsi une saisie du client avec une liste déroulante
cette liste déroulante fait apparaître les champs qu'on souhaite (nom du client par exemple) pour faciliter la saisie et avoir un affichage du nom, mais renvoit de manière non visible la clé primaire du client.
tout est géré par Access, et les relations sont créés par l'assistant

les formateurs
il peut y avoir plusieurs formateurs par formation
on doit créer une table d'association entre T_Formations et T_Employés
et on met dans cette table la clé primaire de la formation et la clé primaire du formateur (avec des colonnes de recherche)
cette table d'association pourra être remplie avec un sous-formulaire

ou on utilise un champ à valeur multiple (nouveauté access 2007) mais je ne sais pas si ça fonctionne correctement pour ce cas
voir ce tuto pour plus d'info :
http://warin.developpez.com/access/multivalue/
je ne connais pas bien ce type de champ multi-valeurs car je préfère utiliser une table supplémentaire par habitude (et pour garder compatibilité avec les versions antérieures)

les données sociales
quel lien y-a-t-il entre T_Employés et T_Données Sociales ?
si c'est du 1 pour 1, autant tout mettre dans T_Employés non?

le code client
dans T_Clients il y a une clé primaire + un code client incrémenté
la clé primaire seule ne suffit-elle pas?

=> je finis en concluant qu'il y a donc à mon sens des corrections à apporter aux tables avant de commencer les formulaires
une bonne modélisation facilite la suite de développement de l'application
bien sûr si tu débutes il faut quand même faire quelques formulaires de tests pour se donner une idée de ce qui est réalisable mais il ne faut pas vouloir avancer trop vite sur l'interface avant d'avoir des tables correctes
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/08/2011, 12h47   #4
Invité de passage
 
Inscription : janvier 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 3
Points : 0
Points : 0
Merci pour vos conseils, je vais tenter de répondre à vos questions :
1) La relation entre T_Employes et T_Donnees sociales, car dans T_employes je stocke ; Civilités, Noms, Prénoms, Adresse, N°de téléphone, Date de naissance.
Dans la table T_Donnees sociales je stocke :
N° de Sécurité social
Date de naissance (relations 1-1)
lieu de naissance
etc (je ne vais pas reprendre l'ensemble de mon premier message).... Le choix de faire deux tables distinctes me paraissait plus opportun qu'une seule longue table.

Dans la table T_Clients le code clients est hybride il est préfixé par "CL" ce qui donne par exemple un client "toto" avec comme code client "CL1111". Donc je l'ai déclaré comme champs txt, mais je ne sais si c'est opportun...

Je vais testé vos solutions, auriez-vous un "truc" pour que je refasse ma modélisation ?
Cdt
kalouk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h12.


 
 
 
 
Partenaires

Hébergement Web