Aller au contenu

Debutant: Conception BDD - Access 2010


Alialyn

Messages recommandés

Bonjour,

je suis un étudiant effectuant un stage en informatique en première année.

J'effectue donc actuellement mon stage dans une entrepris vendeuse de matériel médical et ma tâche consiste à créer une base de donnée effectuant un suivi du produit.

Plus clairement, notre société se charge de fournir du matériel médical à des hôpitaux provenant d'entreprises de différentes marques créant ces équipements. Une marque possède plusieurs produits, un personnel attitré ainsi que des informations diverses (adresse, pays,...).

Pour pouvoir obtenir un produit d'une marque, il faut recevoir une "letter_of_appointment" ainsi qu'un papier attestant de l'accord du distributeur "distributor_agreement" valide pour une periode de x années. Le personnel en charge d'un marque est défini par un secteur d'activité (fincances,...) il y a donc plusieurs personnes qui se chargent des echanges avec une marque, du coté de cette meme marque, et du coté de notre entreprise. Chaque produit à un nom; qui peut donc être similaire à un autre produit si on le possède deux fois; subit des tests à l'usine, est soumis à des normes de qualités, et possède des documents liés (manuel d'utilisation,...)

Pour recevoir un produit, il faut qu'il soit 'validé' auprès du ministère de la santé, de ministère des ventes, et de l'agence des produits radioactifs. On obtient alors une date de délivrance de la part de chaque ministère lui aussi valide pour x année, qu'il faut donc renouveler, 3 mois avant chaque fin de validité.

Etant débutant en informatique et n'ayant qu'abordé les bases de données en cours, je me trouve un peu en difficulté à définir les tables, d'autant plus que je n'ai jamais utilisé Microsoft Access et que c'est sous ce logiciel que je dois développer la base de donnée.

Mon principal problème se trouve au niveau des liaisons, des relations entre les tables, de ce fait je n'arrive pas à choisir les tables.

Par exemple il me faudrait une table « PRINCIPAL », dans celle-ci j'aurais le champ name avec une clé primaire, Product (qui sera une autre table), personnel_in_charge (table ) address, postal_code, city, country, contact.

J'ai donc ensuite la table « PRODUCT » et là commence ma difficulté, je ne vois pas que mettre en clé primaire, j'aimerais les organiser par nom, le problème étant qu'en tant que clé primaire, il sera unique, alors que plusieurs produits peuvent avoir le même nom... J'ai donc pensé à un numéro automatique. Mais je n'arrive pas bien à visualiser le résultat dans la base de donnée. Comment voir que tel produit correspond à telle marque si je ne mets pas cette marque dans la table... Mais alors il faudrait à chaque table remettre des informations des tables précédentes... Je ne m'exprime pas très clairement j'en suis désolé mais c'est parce que je suis moi-même un peu « embrouillé ».

Autre exemple, dans chaque marque donc (PRINCIPAL) correspond un personnel qui s'occupe uniquement de celle-ci. Une table « PERSONNEL » m'a donc semblé utile. Cependant là encore j'ai un problème, il y a donc plusieurs personnes chargées d'une seule marque, j'ai donc les champs suivants : Principal_personnel_name, department, principal_personnel_contact, our_company_personnel_name .

Je ne vois pas que mettre en clé primaire, et comment savoir que ce groupe de personne travaille pour cette marque et pas une autre, si je ne mets pas le principal_name en champ dans la table...

je ne comprend pas bien comment mettre toutes les personnes en charge d'une meme marque "PRINCIPAL" dans un meme "groupe". Parce que dans personnel_in_charge j'aurais à mettre donc toutes les personnes s'occupant de toutes les marques. Comment donc savoir qui s'occupera de laquelle?

Plus concrètement, pour la marque ELEKTA, X est associé aux departement finance, Y au documents, Z aux certificats de qualité, et l'équivalent s'occupe de la meme chose dans notre entrepris X' des finances mais de notre coté, Y des documents etc. dans ma table actuelle telle que je l'ai imaginé, 'Personnel_in_charge", j'ai les champs suivants: le nom de la personne qui s'occupe de la marque chez cette meme marque, son 'contact' (téléphone ou email), le departement auquel il est associé, et enfin le nom de la personne qui s'occupe de la marque mais chez "nous". Sachant donc que plusieurs personnes de plusieurs departements se chargent d'une meme marque.

Mon second problème majeur se trouve au niveau de la "letter_of_appointment", "distributor_agreement" ainsi que des certificats attestant de la qualité du produit. Comme je l'ai dit précédemment ces trois types de documents ont se rapportent donc à un "PRINCIPAL", peuvent être "validés", "non-validés" ou "en cours de validation", et si validés, possèdent une date de délivrance et une date de validité. Ce que je n'arrive pas à comprendre c'est comment créer un lien entre par exemple l'appointment et la marque. Quel champ lier dans les tables ou quelles tables créer pour qu'a une marque corresponde une lettre d'appointment...

Je ne sais pas si vous visualisez bien mes problèmes au vu de mes explications confuses mais je vous serais reconnaissant de m'aider.

Je vous remercie par avance.

Lien vers le commentaire
Partager sur d’autres sites

Attention a la méthode déjà !

ne part pas sur acces avant d'avoir sur papier l'architecture de ta base de données !

L'informaticien n'est pas l'ennemi du papier (ou du tableau blanc :francais: )

Pour le problème des produits, il faut effectivement associer chaque produit à un numéro (qu'on appelle "id") qui les sépare les uns des autres de façon formelle (donc ta clef primaire) il est possible que ce numéro soit en auto-increment et va donc s'incrémenter tout seul comme un grand a chaque fois que tu rajoutes un produit.

C'est d'ailleurs cet id qui se retrouvera dans ta table "principal" (on parle de clef étrangère)

Pour le coup de plusieurs personnes associées à une marque, on parle de relation 1-n en merise ( 1 produit "associé à" n personnes )

C'est la même chose que pour ta table principale et produit, il y aura une clef étrangère "chez" personnel

Pour la clef primaire, encore une fois la même chose qu'au dessus, un identifiant (id) qui s'incrémente tout seul pour être sur qu'une personne est bien = a une ligne (deux personnes peuvent avoir le même noms et/ou vivre au même endroit ...

Mais vraiment papier crayon, fait la liste de tout ce dont tu vas avoir besoin comme attributs (nom_personne, nom_produits, quantité_produit ...) et dégage tes tables de la pour être sur que tout est propre ( si tu as du temps à """perdre""" regarde la méthode Merise, c'est niquel pour faire les bases de données ;) )

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Ne t'inquiètes donc pas! Cela fait déjà près d'une semaine que je me triture les méninges, sur papier! Et je n'ai pas encore commencé Access. J'ai juste essayé de lier deux tables pour voir si ça marchait et... ça ne marchait pas!

Mon problème est que je n'arrive pas à lier mes tables, même sur papier, j'ai déjà essayé de lier ma table PRINCIPAL avec ma table PRODUCT par une numéro, seulement alors je n'arrive pas à faire correspondre plusieurs produits à un seul PRINCIPAL, puisque je n'ai qu'une seule ligne pas PRINCIPAL. Je ne sais pas si tu vois ce que je veux dire...

Par exempe:

[PRINCIPAL]---------------------------------[PRODUCT]

id_prin - prin_name - product - address... ||| id_pro - prod_name - documents...

1 - Elekta - 1 - rue des BDD ||| 1 - sonolith - top_secret

---------------------------||| 2 - linac - mega_top_secret

Et là je ne vois pas comment faire pour rajouter le produit 2 "linac" à la marque Elekta puisque si je rajoute encore une fois Elekta dans la table PRINCIPAL, l'id_prin va s'incrémenter...

PS: J'ai déjà quelques notions de base de donnée ayant étudié le SQL et la méthode Merise aussi.

Merci encore de l'intérêt que tu me portes.

Lien vers le commentaire
Partager sur d’autres sites

je croit que je comprend mais je suis pas sur (donc si je tape hors sujet c'est normal ^^ )

Ta table principale (a priori qui correspond aux marques de produits ?) doit être reliée à un ou plusieurs produits

en gros

marque <- produit

UPSA <- aspirine

UPSA <- efferalgan

laboratoire servier <- médiator

Si c'est bien ca, c'est justement le principe de clef primaires et étrangères

avec l'exemple ci dessus ca pourrait donner

Principal

id : 1

nom: Servier

adresse: Prison

Produit

id : 1

nom : mediator

quantité : 758

marque : 1

A partir de la, la marque n'est pas un numéro non incrémental mais justement une clef étrangère qui effectue la correspondance avec la clef primaire (elle incrémentale) qui est l'id_principal

après relier les tables dans les résultats se fera par du SQL

par exemple pour afficher les infos du médiator

Select *

From principal

inner join produits

on id_principal = marque_produit

where nom_produit = "mediator";

j'espère que j'ai bien compris et que c'est ce que tu cherches :transpi:

Lien vers le commentaire
Partager sur d’autres sites

Ouuuuuuuuuuuuuaaaaaaaaaaaaaaaaaaaaahhh!!!!!! Mais c'est çaaa!!!! Merci merci merci merci miiiiille fois!! Tu as enfin résolu mon problème!!!

Ce que je n'arrivais pas à faire, c'est à ce qu'une marque corresponde à par exemple un produit ou une lettre, mais en fait c'est parce que je mettais les liaisons à l'envers!

Moi dans ma table PRINCIPAL j'avais Products en clé étrangère, alors qu'il faut Principal en clé étrangère dans PRODUCTS!! C'est évident! Et pareil pour tout!!!

Bon j'ai l'impression que tout va aller mieux pour moi et je l'espère! En tout cas tu ne sais pas à quel point tu m'ôtes un poids des épaules! Cela fait des jours que je cherchais et enfin quelqu'un me donne la solution!

Merci encore et encore, tu me sauves d'une crise de folie et d'énervement :yes::chinois:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...