Question

J'ai une table de transaction, chaque transaction a 5-6 contacts impliqués. chaque contact a les mêmes champs comme le nom, l'adresse, cellule, etc. e-mail

Donc, la meilleure estimation I chose est d'utiliser la même table de contact et de le rapporter 5 fois à la table de transaction .. Je ne ai pas besoin de faire le même genre de tableau 5 fois.

Le problème commence lorsque je me connecte avec le cadre de l'entité cela ne prend une relation.

Ma question est dois-je faire 6 copies de contact pour chaque type de contact ou je serais mieux avec 6 tables de jointure (Une table avec juste de la 2 id pour que je puisse faire une jointure)?

Je pense que c'est un problème très commun, mais je ne pouvais pas trouver une information claire quelle est la meilleure façon est.

EDIT: Exemple de tableaux

Était-ce utile?

La solution

La meilleure chose est de normaliser les tables. Créer une table contact_type avec un enregistrement pour chaque type de contact. Ensuite, créez une table de jonction contact_type_xref qui contient l'identifiant de la table de contact et l'identifiant de la table contact_type. Chargez ensuite les types de contact associés à chaque contact dans le contact_type_xref, et supprimer les enregistrements de contact en double du contact. Voici un exemple: Exemple de schéma. Une fois que vous fixer la conception de base de données, vous pouvez aborder le problème-cadre de l'entité (qui disparaîtra sans doute).

Autres conseils

Tout d'abord, il est un peu un cadre qui ne reconnaît déchets pas plusieurs relations entre les types d'entités!

Si vous avez ce nombre de clés étrangères, les chances sont que vous aurez plus (ou moins) à l'avenir. La solution @Wil détails vous permettra atteindre cet objectif sans changement de schéma.

Un travail autour de ce qui peut tromper votre cadre serait de définir des vues dans la base de données pour chacun de vos types de contact et définir la relation cadre de la transaction à la vue. Par exemple

create view Manufacture as
select
    ContactID as ManufactureID,
    FirstName,
    LastName,
    ...etc.
from Contacts

mai ou peut ne pas fonctionner, selon la façon dont interagit avec la base de données cadre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top