|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 304 ![]() |
Bonjour, je suis en train de créer une base de donnée et je crois que j'ai un petit probleme au niveau de la modelisation.
Je me retrouve avec une table qui contient des clé étrangères et en fait dans certain cas la clé étrangère peu ne pas etre renseigné. Est-ce grave ? je pense que les cardinalités sont 1,1 et 0 1 mais je suis meme pas sur de mes cardinalités. est ce que quelqu un pourrait m'aider ? |
|
|
00
|
|
|
#2 |
![]() ![]() |
Bonjour
Tu devrais mettre une copie d'écran de ta fenêtre relation, cela aidera à mieux comprendre. Une clé étrangère est en général la clé primaire d'une autre table, donc un information important pour qualifier un enregistrement de ta deuxième table. Si c'est grave docteur, je dirais oui dans un premier temps, mais il faudrait plus d'informations sur le contenu de ta base. Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon ![]() Si vous pensez commencer sans un livre, oublier : livres pour débuter Vous pouvez consulter mes articles sur Access et PowerPoint Le blog Office. Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas. |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 304 ![]() |
Bonjour Philippe merci pour ta réponse, je fais untest pour voir si j arrive a mettre une cioie decran
|
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour _developpeur_ et Philippe,
En premier lieu, la pièce jointe est illisible. D'autre part, Citation:
Table1 : - Id_Table1 (clé primaire) ... Table2 : - Id_Table2 (clé primaire) - Id_Table1 (clé étrangère sur Table1 pouvant être nulle) ... Relation Merisienne (que tu indiques fort justement) Table1 ---(1,n)---[est lié à]---(0,1)--- Table2 Relation Access Table1 1 ---∞ Table2, via Id_Table1 Je me permets de "rebondir" sur Citation:
En clair, dans le formulaire qui gère Table2, tu auras une liste déroulante qui propose les enregistrements de Table1, avec possibilité de ne rien choisir (Table2.Id_Table2 = Null).
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
||
|
|
00
|
|
|
#5 | ||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 415 ![]() |
Bonjour à tous,
Le diagnostic n’est pas clair… A-t-on des cardinalités 0,1---1,1 ? Par exemple : Citation:
Comme plusieurs clés étrangères peuvent être à Null, il se peut aussi que l’on ait affaire à plusieurs associations 0,1---0,n, par exemple : Citation:
On attend donc la pièce-jointe (une image au format jpeg ou png ferait l'affaire) pour voir l’état du malade… |
||
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 304 ![]() |
Bonjour à tous merci de vos réponse. A lire vos commentaires on peut très bien laisser une clé etrangere vide. D ailleurs j ai posé cette question car tout betement en laissant vide le champs de la clé etrangere, access ne dit rien ... c est pour ça que j ai posé la question. par contre si on renseigne une clé etrangere qui n'est pas dans la table reliée a cette clé etrangere la il est poas content, normal...
Voici mon model ci dessous : maintenant quelques explications; je vais essayer d etre clair. les 4 tables NiveauActivité 1 2 3 et 4 caractérisent en fait une activité, mais une activité peut avoir un niveau de détail plus ou moins détaillé. autrement dit, il se peut que l'on n'est rien dans les tables niveau 3 et niveau 4. Niveau Activité 1 N A 2 N A 3 N A 4 Projet /Projets Client /Projet P1 /Développement Recurrente /Supervision Projet /Enveloppe Avant Projets /Avant projet C 1 Vous remarquerez que pour la deuxieme ligne, le regroupement "activité" recurrente /Supervision n'a pas de niveau de détail 3 et 4... Vous remarquerez que pour la troisieme ligne, le regroupement "activité" Projet /Enveloppe Avant Projets /Avant projet C 1 n'a pas de niveau de détail 4... Ensuite, la table AssociationActiviteService permet d'associer le regroupement "Activité" a un ou plusieurs service et d'effectuer une facturation pour cette association. On arrive au probleme cité ci-dessus, pour le regroupement "activité" Projet Projets Client Projet P1 Développement pas de probleme toutes les clés étrangeres de la table association sont renseignées. pour le regroupement "activité" Recurrente Supervision pas de clé etrangeres renseignées dans la table association pour les IDniveau3 et IDNiveau4 pour le regroupement "activité" Projet /Enveloppe Avant Projets /Avant projet C 1 pas de clé etrangeres renseignées dans la table association pour IDNiveau4 Je me demande donc si la modélisation est bonne. Ca fait trois jours que je réfléchi et je ne trouve pas d'autre maniere si ce n'est de créer tout simplement une table Activité avec un idetifiant activité et quatres propriétés niveauActivité1 niveauActivité2 niveauActivité3 et niveauActivité4 avec des champs vide quand on a pas de niveau de détail 3 et 4. Ca serait plus simple pour la tables association puisque ce serait juste l'identifiant activité qui y serait présente. Par contre ça ferait des redondances dans la table activité, on retrouverait selon mon exemple deux fois le niveau activté 1 Projet. Plusieurs fois les niveau 2 également etc... Voila j'espere avoir été clair et j'attends vos avis, est ce que la modélisation est bonne est ce que c'est grave si les clé etrangeres ne sont pas toujours renseignées dans la tables associations ... |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 304 ![]() |
Richard et Leb, je me suis trompé sur les cardinalités nous avons en fait des cardinalités 0 N , 0 N entre les tables NiveauActivité1 2 3 et 4 et la table service d'ou la création de la table Association Activité / Service...
|
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 304 ![]() |
oops oops, en saisissant les données dans les tables je me suis rendu compte qu'en faite entre les tables NiveauActivite3 et NiveauActivite4, ce sont des cardinalitées 0 N 0 N....
du coup je dois créer une table intermédiaire que je vais appeller RegroupementNiveau3Niveau4 et qui contiendra l'ID de niveauActivite3 ainsi que l'ID de niveauActivite4. est-ce que ça change quelque chose au probleme ? je ne sais plus. Comment relier NiveauActivite3 , NiveauActivite4 ou RegroupementNiveau3Niveau4 a AssociationActiviteService ? Les ID de niveau3 et Niveau4 ou bien une clé primaire que je dois créer dans RegroupementNiveau3Niveau4? merci de votre aide.. |
|
|
00
|
|
|
#9 | |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 415 ![]() |
bonsoir,
Est-ce que ces activités peuvent être hiérarchisées comme suit ? Citation:
|
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 304 ![]() |
Bonsoir F-LEb, oui on peut leshiérarchisées comme ça, mais tu n a jamais mis de niveau 4 alors qu'on peut en avoir plusieurs ou pas du tout pour un niveau 3. et que le niveau 4 peut se retrouver 0 ou plusieurs niveau 3 (voir mes derniers posts, relation 0 N 0 N).
|
|
|
00
|
|
|
#11 | ||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 415 ![]() |
la flemme d'aller jusqu'à 4 niveaux...
Citation:
Citation:
![]() Les règles de gestion sont complexes, c'est quoi ces activités reliées entre-elles ?
|
||
|
00
|
|
|
#12 | |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 304 ![]() |
Citation:
oui c'est un peu complexe. En fait ce sont des activités qui doivent etre facturé à un client mais qui ont différents niveau de détail. On peut tres bien facturer une activité avec un niveau de détail max de 3 ou alors une activité avec un niveau plus détaillé et donc 4 |
|
|
|
00
|
|
|
#13 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour à tous,
Citation:
Donc, si j'ai bien compris, tu as 4 niveaux et il faut trouver un "équilibre" entre : une solution "hyper-contrôlée" NiveauActivite1 ---0,n---[possède les sous-niveaux]---0,n--- NiveauActivite2 NiveauActivite2 ---0,n---[possède les sous-niveaux]---0,n--- NiveauActivite3 NiveauActivite3 ---0,n---[possède les sous-niveaux]---0,n--- NiveauActivite4 NiveauActivite1 ---0,n---[est niveau1 de prestation]---0,1---AssociationActiviteService NiveauActivite2 ---0,n---[est niveau2 de prestation]---0,1---AssociationActiviteService NiveauActivite3 ---0,n---[est niveau3 de prestation]---0,1---AssociationActiviteService NiveauActivite4 ---0,n---[est niveau4 de prestation]---0,1---AssociationActiviteService ==> qui nécessite 3 tables intermédiaires pour la cohérence des 4 niveaux. et une solution "sans contrôle" NiveauActivite1 ---0,n---[est niveau1 de prestation]---0,1---AssociationActiviteService NiveauActivite2 ---0,n---[est niveau2 de prestation]---0,1---AssociationActiviteService NiveauActivite3 ---0,n---[est niveau3 de prestation]---0,1---AssociationActiviteService NiveauActivite4 ---0,n---[est niveau4 de prestation]---0,1---AssociationActiviteService ==> qui ne gère aucune cohérence entre les 4 niveaux. A ce stade, il me semble que toi seul peut décider, selon les règles de gestion que tu n'auras pas manquées de demander aux utilisateurs. Par exemple, il pourrait être nécessaire de gérer une cohérence entre le niveau2 et le niveau3, et pas pour le reste.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
|
|
#14 | |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 415 ![]() |
rebonjour,
Citation:
Activité(idActivite, LibelleActivite, NiveauActivite) avec NiveauActivite=1,2,3 ou 4 |
|
|
00
|
|
|
#15 | |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 304 ![]() |
Citation:
Tu me dis si je me trompe, mais la solution controlée est je crois ce que j'ai fait, a la différence pres qu'entre les niveau 1 2 et 3 il n y a pas de table intermédiaire car une niveau 3 se retrouve dans un seul niveau 2 et un niveau 2 dans un seul niveau 1. C est juste entre les niveau 3 et 4 qu'on a des cardinalitées 0 N 0 N. Je te joint le modele relationnel en jpeg. Par contre quel est la clé primaire de AssociationActiviteService ? une clé incrémentée ? ou bien les idniveau 1 2 3 et 4 plus l IDService ? Si clé incrémentée on se retrouve avec les clées étrangeres INniveau3 et 4 parfois vide .... est-ce grave ? quels impacts derriere ? pour le code notamment.. Si c'est les 4 ID plus IDService >> impossible car une clé primaire ne peut etre vide ... bref je sais pas. Merci. |
|
|
|
00
|
|
|
#16 | |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 304 ![]() |
Citation:
et c'est ce regroupement de niveau qui est associé à un service. |
|
|
|
00
|
|
|
#17 | |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 415 ![]() |
re,
je pense qu'on ne s'entend pas sur le vocabulaire... Citation:
NiveauActivité(id, LibelleNiveauActivite, NumeroDetailActivite) avec NumeroDetailActivite=1, 2, 3 ou 4 Au lieu de mettre tous les libellés dans 4 tables différentes, tu les mettrais dans une seule table NiveauActivité avec le champ NumeroDetailActivite=1, 2, 3 ou 4. Tu vois ?
|
|
|
00
|
|
|
#18 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Citation:
L'excellente solution de Fabien également.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
|
|
#19 | |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 304 ![]() |
Citation:
Si je reprends mes exemples : Niveau Activité 1 N A 2 N A 3 N A 4 Projet /Projets Client /Projet P1 /Développement Recurrente /Supervision Projet /Enveloppe Avant Projets /Avant projet C 1 >> Table Niveau Activite idNiveauActivite LibelleNiveauActivite NumeroDetailActivite 1 Projet 1 2 Projets Client 2 >> Table AssociationActiviteService #IDNiveauActivite #IDService CoutFacturation 1 100 50K euros 2 120 60K euros Dans cette table ca me dit juste que le niveauActivite1 "Projet" est lié au service 100, Alors que c'est Projet /Projets Client /Projet P1 /Développement qui est associé au service 100.. D'ou la présence dans mon modele des 4 tables NiveauActivite 1 2 3 et 4 qui font migrer les 4 identifiants dans la table AssociationActiviteService. Le probleme c'est que pour l'exemple Projet /Enveloppe Avant Projets /Avant projet C 1 (qui n'a pas de niveauActivite4), L'identifiant (clé étrangere) IDNiveauActivite4 dans la table AssociationActiviteService n'est pas renseigné.. ou bien pour l exemple Recurrente /Supervision (Pas de niveau Activité3 et 4), pas d'ID Externe renseigné dans la table AssociationActiviteService pour IDNiveauActivité3 et 4. Est-ce que je sis clair ? |
|
|
|
00
|
|
|
#20 | |
|
Membre du Club
![]() Inscription : octobre 2005 Messages : 304 ![]() |
Citation:
Quid de la clé primaire dans la Table AssociationActiviteService ? Quid des champs clé externe non renseignés dans la Table AssociationActiviteService ? Car avec le modele que j'ai fait dans la table AssociationActiviteService, pour l'exemple Niveau Activité 1 /Niveau Activite 2 /Niveau Activite 3 /Niveau Activite 4 Recurrente /Supervision (pas de niveauActivite3 et 4) les champs (clé externe) IDNiveauActivite3 et IDNiveauActivite4 ne seront pas renseignés.. est-ce grave ? quels impacts derriere ? si tu sais, je suis preneur. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com