Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > Conception

Conception Le forum qui vous aide à résoudre vos questions relatives à la modélisation de votre base de données sous Access.

Réponse
 
Outils de la discussion
Vieux 21/08/2008, 12h47   #1 (permalink)
Futur Membre du Club
 
Date d'inscription: août 2008
Messages: 32
Par défaut table et sous table

bjr a tous,
j'ai bien suivi vos conseil, merci bcp.
Je me trouve a nouveau avec une interrogation:
pour la création de mes produits, j'ai fais une table famille pour les répertorier par famille.
ma table famille est: TV, HIFI, GPS, ....
je veux après leur donner une sous famille
pour TV: Tube cathodique, lcd, plasma
pour Hifi: Home cinema, radio, lecteur cd, chaine hifi, ....
....
Pour ces "sous famille", je dois créer un table pour chaque famille, ou il y a une autre solution.....

merci a vous tous
a bientot
satktd est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/08/2008, 13h38   #2 (permalink)
Modérateur
 
Avatar de mout1234
 
Date d'inscription: novembre 2006
Localisation: Paris
Âge: 39
Messages: 1 697
Par défaut

Bonjour,

Je suppose que tu as fais une table tblFamille du genre:

IDFamille (clé de la table)
NomFamille


Et que tu as, dans la table produit une clé étrangère pointant sur la clé IDFamille.

IDProduit
IDFamille
....

Si tous tes produits sont à classer dans une sous famille et que chaque sous famille se rattache à une et une seule famille, un schéma simple pourrait être:

tblProduit:
IDProduit
IDSousFamille
NomProduit
...


tblSousFamille:
IDSousFamille
IDFamille
LibelléFamille

tblFamille:
IDFamille
LibelléFamille
[u][color="RoyalBlue"]



-------------------------------------------------
Si certains produits doivent uniquement rattachés à une famille (sans sous famille), tu peux mettre les deux clés dans la table produit, celle concernant la sous famille n'étant remplie que si necessaire.

tblProduits:
IDProduit
IDFamille
IDSousFamille
NomProduit
...
-------------------------------------------------

Si tu as besoin d'une structure plus souple (Famille / sous Famille / sous sous famille; produit pouvant être catalogué à tous niveaux de l'arborescence) , il faudrait alors faire une structure réentrante sur la table Famille.

tblFamille:
IDFamille
IDFamilleParente (qui référence l'éventuelle IDFamille de niveau supérieur)
LibelléFamille
[u][color="RoyalBlue"]

Mais dans ce cas, c'est bcp plus complexe à exploiter ...
__________________
............................................................................................

Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.


Les FAQs les tutos Les Sources Access Profitez de ces mines d'or...

Postez dans le bon sous forum et mentionnez la version

Dernière modification par mout1234 ; 22/08/2008 à 22h56
mout1234 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/08/2008, 15h13   #3 (permalink)
Modérateur
 
Avatar de CinePhil
 
Date d'inscription: août 2006
Localisation: Toulouse
Âge: 45
Messages: 1 314
Envoyer un message via MSN à CinePhil
Par défaut

La dernière solution est conceptuellement bien meilleure car évolutive.
__________________
Philippe Leménager.
Futur ingénieur CNAM, en CDD à l'INRA Toulouse jusqu'au 31/12 suite au stage effectué.
Je reste ouvert aux propositions d'emploi.
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 22/08/2008, 00h02   #4 (permalink)
Futur Membre du Club
 
Date d'inscription: août 2008
Messages: 32
Par défaut

merci a vous deux, mais je suis nouveau dans access.
je ne comprends pas vos:

tblFamille:

IDFamille
IDFamilleParente (qui référence l'éventuelle IDFamille de niveau supérieur)
LibelléFamille


c la structure a faire, ok, mais comment?
j'ai créer une table famille avec (num auto et nom de la famille), mais apres, comment faire un sous famille en parente alors....
merci

Dernière modification par mout1234 ; 22/08/2008 à 22h38
satktd est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 22/08/2008, 00h45   #5 (permalink)
Modérateur
 
Avatar de CinePhil
 
Date d'inscription: août 2006
Localisation: Toulouse
Âge: 45
Messages: 1 314
Envoyer un message via MSN à CinePhil
Par défaut

Je vais prendre un exemple différent du tien pour expliquer ce dont on parle : l'arbre généalogique.

Une personne peut ou pas avoir des enfants.
Une personne a au plus deux parents

En Modèle Conceptuel de Données, ça donne :
(parents)Personnes -0,n---- Avoir----1,2- Personnes(enfants)

C'est une association d'une table sur elle-même puisque nous avons ci-dessus deux fois la table Personnes.

Dans ton cas, tu veux classer tes produits d'abord dans une famille, puis cette famille a éventuellement une ou des sous-famille(s), voire une ou des sous-sous-famille(s)...
Donc on va faire la même chose que ci-dessus avec la table Familles
Familles -0,n----Avoir----0,1- Familles(sous-familles)

La table Familles aura donc la structure :
Familles(FamId, FamNom, FamFamilleParente, ...)
FamId est la clé primaire qui porte un numéro d'identification de la famille.
FamFamilleParente est une clé étrangère qui contient l'identificateur d'une autre ligne de la table Familles.

Exemple de lignes de la table :
1 / TV / null <-- null signifie qu'il n'y a rien dans cette colonne pour cette ligne
2 / HIFI / null
3 / GPS / null
4 / TV à tube cathodique / 1 <-- ici il y a l'identifiant de la famille TV
5 / TV LCD / 1
6 / TV Plasma / 1
7 / Home cinéma / 2
8 / Radio / 2
9 / Lecteur CD / 2
...
Un produit lecteur CD de telle marque et telle référence sera rattaché à la famille 9 et par extension on pourra trouver qu'il appartient aussi à la famille 2 (HIFI).

Si un produit n'est rattaché qu'à une seule famille (ou sous-famille), on place l'identificateur de la famille dans la table Produit en tant que clé étrangère :
Produits(ProdId, ProdNom, ProdIdFamille, ...)

S'il peut être rattaché à plusieurs familles, on crée une table de jointure entre Produits et Familles qui accueille, en tant que clé primaire double, l'identificateur du produit et l'identificateur de la famille qui sont tous deux aussi des clés étrangères.
Produits(ProdId, ProdNom,...)
Rattacher(RattIdProduit, RattIdFamille, ...)
__________________
Philippe Leménager.
Futur ingénieur CNAM, en CDD à l'INRA Toulouse jusqu'au 31/12 suite au stage effectué.
Je reste ouvert aux propositions d'emploi.
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 22/08/2008, 23h02   #6 (permalink)
Modérateur
 
Avatar de mout1234
 
Date d'inscription: novembre 2006
Localisation: Paris
Âge: 39
Messages: 1 697
Par défaut

Bonsoir,

Comme l'a brillamment détaillé CinePhil, la dernière solution proposée est plus souple que les autres car elle autorise de multiples cas de classification...

Seulement - d'autant plus si tu débutes sous Access - cette solution me semble plus difficile à manier dans ton interface... Si tu n'as pas besoin de cette souplesse, vaut sans doute mieux opter pour la première ou seconde approche que je te proposais.

Indépendamment de la solution retenue, j'ai supposé dés le début qu'un produit était rattaché à une seule famille. Si ce n'est pas le cas... voire la fin de l'explication de CinePhil

Bon courage
__________________
............................................................................................

Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.


Les FAQs les tutos Les Sources Access Profitez de ces mines d'or...

Postez dans le bon sous forum et mentionnez la version
mout1234 est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > Conception

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide