|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2009 Messages : 37 ![]() |
Bonjour,
Dans le cadre d'un projet, je cherche à organiser les données qui seront générées afin d'éviter les éventuelles erreurs dues à un mélange de fichier. Je voulais créer un fichier excel mais une Base de donnée sous access me semble plus adapté. Mon problème est que c'est ma première base de donnée et que je ne sais pas si je pars dans la bonne direction ou pas. Afin d'être le plus clair possible, je vous met mon speudo Cahier des charges. Si des personnes peuvent me guider dans la démarche de création d'une base de donnée, je vous en remercie par avance. Lors de ce projet nous avons à créer plusieurs produits. - Un produit est défini par sa référence, son auteur, son nom, sa date de création et la date de dernière révision de l'un de ses composants - Chaque produit est composé de pièces, il existe deux types de pièces : - les pièces standards - les pièces révisables Une même pièce peut être utilisable par plusieurs produits. - Une pièce révisable est caractérisée par son auteur, son nom, sa date de création, sa référence et le numéro de sa révision active. - Une pièce non révisable est caractérisée par son nom, sa date de création et sa référence - Une révision est une modification sauvegardée d'une pièce. On connait son auteur, sa date de révision (dernière modification) et sa position au sein du système de fichiers (chemin UNC), - Chaque révision contient également un numéro de révision (qui s'incrémente de 1 à chaque nouvelle révision), - On doit connaître la révision active d'une pièce. Il est en effet possible d'avoir une révision plus récente que celle qui est active. - Un auteur est défini par son nom, prénom et par un rôle (Concepteur, Chef de projet...) - Les rôles ne sont pas saisis lors de la création de l'auteur mais doivent être sélectionnés depuis une liste. Avant de modéliser les tables sous access, j'ai dans un premier temps essayé de définir linéairement les tables dont j'aurai besoin. Je ne suis pas sure d'avoir bien compris ce qu'est une clef primaire et une clef secondaire. Liste des tables : T_Auteur (Id_Auteur, Nom_Auteur, Prenom_Auteur, Role) T_Produit (Ref_Produit, Ref_PieceS, Ref_PieceR, Id_Auteur, Nom_Produit, DateCrea_Produit) T_PieceR (Id_Auteur, Nom_PieceR, DateCrea_PieceR, Ref_PieceR, NumRevA_PieceR, Id_Revision) T_PieceS (Nom_PieceS, DateCrea_PieceS, Ref_PieceS) T_Revision (Id_Revision, Id_Auteur, DateRev) T_CREER (Id_Auteur, Ref_Produit, Ref_PieceR, Id_Revision) T_ROLE (Id_Auteur, Designer, Concepteur, Chef de Projet) Merci de votre aide. Passez de bonne fêtes. |
|
|
00
|
|
|
#2 | |
![]() ![]() Jean BALLATInscription : octobre 2004 Messages : 2 856 ![]() |
![]() Citation:
Introduction à Access - Les bases Les Relations et les jointures Bonne continuation
__________________
Jeannot Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., [B]Sources VBA Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre
|
|
|
|
00
|
|
|
#3 | ||||||||||||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
Bonjour crismans, Jeannot45
Citation:
(clé primaire soulignée) Citation:
Concernant les rôles et afin notamment d’éviter le gaspillage d’octets, nous fuirons la table : Code :
Code :
Code :
On pourrait en rester là mais des gens bien intentionnés ont poussé plus loin en inventant le concept de clé étrangère et l’intégrité référentielle qui va avec. Le truc est de mettre en relation le champ Auteur.idRole et Role.idRole grâce à un mécanisme d’ "ntégrité référentielle" qui interdit à tout auteur de se voir codifier un rôle qui n’existerait pas dans la table des rôles : Code :
Auteur(idAuteur, Nom, prenom, #idRole) (clé étrangère précédée d’un #) Dans la fenêtre des relations d’Access : Auteur-∞--------1-Role Sur un plan conceptuel, la relation "un à plusieurs" (-1------∞-) est la traduction des règles de gestion (cf tutos de M.Hubiche proposés par Jeannot45): Dans le sens Auteur→Rôle : Un {auteur} {a} un {rôle} Dans le sens Rôle→Auteur : Un {rôle} {peut avoir} plusieurs {Auteur} Citation:
Bon, je reprends ma respiration et je reviens plus tard, il y a encore beaucoup de choses à dire sur tes tables… Note : je viens de lire ça : Citation:
|
||||||||||||
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Crismans et Jeannot45,
... et à F-leb qui a répondu pendant que j'écrivais (à qui j'ai piqué "∞"). Outre les excellents tutos proposés par [le non moins excellent] Jeannot45, je te félicite, Crismans, d'avoir, au moins, bossé sur le sujet. Cela m'a donné "envie" de te donner un point de vue. Voici la liste des tables et relations qu'il me semble nécessaire (à discuter). Les postulats peuvent servir de base de travail. T_Role : - Id_Role (clé primaire, numéro auto) - Libelle_role ("Designer", "Concepteur", "Chef de Projet") ... T_Auteur : - Id_Auteur (clé primaire, numéro auto) - Nom_Auteur - Prenom_Auteur ... T_Produit : - Ref_Produit (clé primaire, numéro auto) - Nom_Produit - DateCrea_Produit - Id_Auteur - Id_Role ... ==> Postulat : un même auteur peut avoir un rôle différent selon le produit. T_Piece : - Ref_Piece (clé primaire, numéro auto) - Type_piece ("S" : pièce standard, "R" : pièce révisable) - Nom_Piece - DateCrea_Piece ... T_Revision : - Id_Revision (clé primaire, numéro auto) - Id_Auteur - DateRev ... ==> Postulat : pas de rôle au niveau "révision". T_Produit_Piece : - Id_couple (clé primaire, numéro auto) - Ref_Produit - Ref_Piece ... ==> Attention : index unique sur Ref_Produit/Ref_Piece. ==> Postulat : cette table est la nomenclature d'un produit. Relations : T_Auteur 1----∞ T_Produit via Id_Auteur ; T_Role 1----∞ T_Produit via Id_Role ; T_Auteur 1----∞ T_Revision via Id_Auteur ; T_Produit 1----∞ T_Produit_Piece via Ref_Produit ; T_Piece 1----∞ T_Produit_Piece via Ref_Piece.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2009 Messages : 37 ![]() |
Bonjour tout le monde,
Je vous remercie pour les éléments de réponse que vous m'avez apportés, je travaille ça et j'essaie de réaliser mes relations entre tables. Pour répondre à f-leb, je voulais dire que lorsque je crée un nouvel auteur j'ai une liste prédéfinie des rôles que je peux lui attribuer. Je souhaitais réaliser une liste de valeur (menu déroulant). Avant ça je vais bosser les tutos. Merci de votre aide Bonnes fêtes |
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2009 Messages : 37 ![]() |
Bonsoir,
Après avoir écouté vos conseils, j'ai refait mes tables (jointes en fichier pdf). L'idée de créer une table nomenclature (T_BOM) était très intéressante, je l'ai donc reprise mais j'ai un petit soucis concernant mes liaisons, si j'ai bien compris ce que j'ai lu dans les tutos et ce que vous m'avez expliqué, pour la relation entre T_pieceR et T_BOM, j'ai une relation 1---∞. Ce qui veut dire que ma pièce peut appartenir à plusieurs BOM mais qu'une BOM ne peut avoir qu'une seule pièce ? Or cela me pose un problème car j'aimerais avoir une une relation ∞---∞. Est ce possible ? Concernant la table T_Role, je l'ai reliée comme cela (voir pdf) car je souhaite qu'un rôle puisse avoir plusieurs auteurs, mais qu'un auteur puisse avoir qu'un seul rôle et je voudrais que ça m'oblige à créer un autre auteur, avec Nom et Prénom Identique mais avec un second rôle lorsque je veux qu'un auteur ait plusieurs rôles suivant le produit. Mes tables et relations vous semblent-elles correctes ? Merci de votre aide Bonne soirée |
|
|
00
|
|
|
#7 | ||||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
Salut,
concernant les pièces, je reformules les règles de gestion: - Une pièce est caractérisée par sa référence, son nom et sa date de création - Une pièce révisable est une pièce. Elle est alors caractérisée en plus par son auteur et un numéro de révision active. Ou encore en pseudo-langage (façon M.Hubiche dans son tutoriel): Une {PIECE REVISABLE} {est} une {PIECE} Une {PIECE} peut {être} une {PIECE REVISABLE} Et nous voilà face à une relation peu usitée de type "un à un" que nous pouvons modéliser sous Access : Piece(idPiece, RefPiece, NomPiece, DateCreation) PieceRevisable(#idPiece, #idAuteur, #idRevisionActive) PieceRevisable.idPiece étant à la fois clé primaire et clé étrangère référençant Piece.idPiece. Piece-1--------1-PieceRevisable Code :
Code :
Le reste consiste à raccorder PieceRevisable aux révisions, aux auteurs de révisions, etc… Je reviens plus tard, à suivre… Au fait, c'est quoi une BOM ??
|
||||
|
00
|
|
|
#8 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : février 2009 Messages : 37 ![]() |
Bonsoir f-leb
Citation:
Citation:
|
||
|
|
00
|
|
|
#9 |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
Autrement dit dans le schéma: Piece-1--------1-PieceRevisable,
dans "Piece" tu retrouves toutes les pièces révisables ou standards (avec leurs références, leurs noms, date de création) Dans "PieceRevisable", tu reportes l'identifiant des "Piece" qui sont révisables avec les propriétés supplémentaires auteur, Num révision actif. Tu vois ? Je regarde le reste... |
|
00
|
|
|
#10 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2009 Messages : 37 ![]() |
Oui je vois merci, en plus ça semble plus logique et plus "propre".
Je n'ai pas relié les tables pièce et révision à la table auteur, en pensant pouvoir me servir de la table produit pour faire le lien, mais je pense que c'est une erreur car les auteurs peuvent être différents. Merci de votre aide |
|
|
00
|
|
|
#11 | ||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
bonjour,
Citation:
si j'ai bien compris, ce qu'a proposé Richard plus haut (à qui je n'ai pas encore souhaité la bonne année, voilà c'est fait) devrait te convenir: Citation:
|
||
|
00
|
|
|
#12 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2009 Messages : 37 ![]() |
Bonjour f-leb,
Je tiens d'abord à vous remercier pour l'aide que vous m'avez apporté. J'ai une dernière question avant de poser le tag Résolu. Je n'arrive pas à relier la table T_Révision avec T_PieceR. J'ai suivi votre conseil en faisant : T_Piece ( Id_Piece, Ref_piece, Piece_Rev) T_PieceR (#Id_Piece, #id_auteur, numrevactive) Avec une relation entre T_Piece.IdPiece 1-----1 T_PieceR.Id_Piece Ca j'ai bien compris, et ça fonctionne bien. Je n'arrive pas à relier la table T_revision à T_pieceR, sachant qu'une pièce révisable peut avoir plusieurs révisions mais qu'une révision ne peut appartenir qu'à une seule PieceR. J'ai besoin d'une liaison 1 ---- ∞. Sinon concernant les autres tables, tout marche comme je le voulais, je vous remercie pour les astuces du type codage des rôles. J'ai pu créer quelques requêtes et des formulaires. Merci Bonne soirée |
|
|
00
|
|
|
#13 | |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
bonjour,
Citation:
T_Revision(idRevision, DateRevision, ..., #Id_Piece) avec la relation: T_PieceR-1-----∞-T_Revision Que se passe-t-il ? Message d'erreur ? |
|
|
00
|
|
|
#14 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2009 Messages : 37 ![]() |
Bonjour,
J'ai résolu le problème, en fait j'avais déjà une donnée dans la table pour la tester, et sans faire attention j'avais pas le bon type de donnée pour mon #Id_piece, mais je n'arrivais pas à le modifier du fait de la donnée déjà dans la table. Bref... Des erreurs de débutant. En tout cas un grand merci pour votre aide dans mes début sous access. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com