Tables: Sous catégories |
Author(s) Rebecca Riordan |
|
--- Soumis par Rebecca Riordan ---
Sous catégories.
Lorsque vous créez un modèle de données, vous avez
souvent à traiter de différents types d'un peu la même chose. Par exemple, un
client peut être un individu ou une compagnie et l'information à conserver
n'est pas nécessairement la même pour chaque cas. Les produits sont souvent de
types différents, et vous ne désirez pas conserver les mêmes informations
quand il s'agit de livres de quand il s'agit de logiciel: le livre possède un
titre, un ou plusieurs auteurs, un éditeur, une date d'édition, un prix
d'achat et un prix de vente, mais le logiciel possède un numéro de version,
mais pas d'auteurs, et vous ne vous intéressez probablement pas à la date de
parution.
À prime abord, une solution serait d'inclure tous ces
attributs dans une seule table, et si à première vue cela semble simple,
l'ajout de nouveaux éléments rapidement détériore le tout en ajoutant de
nouveaux champs, sans parler de l'interface utilisateur qui devient horrible
très rapidement.
Une meilleure solution et d'emprunter une technique du
design orienté objet. en créant des sous-catégories. En termes relationnels,
vous créez plusieurs tables, une table maîtresse qui contient l'information
commune et des tables d'apports, une par sous-catégorie, qui peut alors
contenir l'information spécifique à la sous-catégorie.
Télécharger OneToOne.zip
Cette base de données montre comment implémenter un tel
modèle. L'entité première est Party, qui peut être un individu (Individual)
ou une organisation (Organization). La table Party contient les champs communs
aux deux sous-catégories, alors que les deux tables d'apports contiennent les
informations spécifiques à chaque sous-catégorie qu'elles adressent. (La
table Party est utilisé pour fournir les listes de combo box dans le formulaire
de l'exemple.)
Noter que la clé primaire (j'utilise un Autonumber
dans l'exemple) est assignée à la table Party, non aux tables d'apport. C'est
une erreur commune, et cela rend la programmation plus complexe que nécessaire:
Il n'y a pas de raison d'ajouter des identifications supplémentaires. De fait,
la vie est plus aisée si ce n'est pas le cas.
Le formulaire de l'exemple, également appelé Party, démontre
une façon de gérer l'interface. Les deux se superposent, un par type de
sous-catégorie. Quand un utilisateur utilise un type depuis le combo box, le
formulaire approprié est rendu visible. Dans cet exemple, cela arrive au cours
de la procédure événementielle OnExit du combo box. Ce code est
répété dans la procédure événementielle OnCurrent du formulaire pour
gérer le cas de navigation dans la table par l'utilisateur.
La requête AllInOne montre comment
joindre les tables ensembles à l'aide de joints externes. Il n'est pas souvent
requis de ramasser toutes les entités de cette façon, mais cela peut se
produire dans les cas où on n'utilise pas les sous formulaires, ou les sous états.
|