2010-06-11 3 views
2

Salutations, pile débordementLa mise en œuvre une base de données « plusieurs à plusieurs »

Dans ma base de données, je l'ai déjà une table, des « contacts » qui contient des enregistrements de personnes individuelles. J'ai également plusieurs autres tables dans ma base de données qui représentent des «ensembles de compétences» qui contiennent des enregistrements indiquant une compétence particulière.

1) Ai-je raison de tracer cette relation comme étant "plusieurs-à-plusieurs"? (chaque contact peut avoir plusieurs ensembles de compétences, et chaque ensemble de compétences peut appartenir à plusieurs contacts)

2) Je suis nouveau dans les bases de données - est-ce que je veux lier les tables? 3) Existe-t-il un moyen d'implémenter ceci dans mon programme (formulaires C# + windows) de sorte que pour tout enregistrement donné dans la table 'contacts', les noms de toutes les tables 'skill set' associées ou tous les enregistrements 'skill' associés à l'enregistrement 'contact' pourraient-ils être récupérés?

(base de données est situé sur SQL Server Express 2008. Les données sont extraites de la base de données via VisualStudio 2008 construit dans "Data Connection Assistant")

Répondre

10

Vous avez raison. Cela devrait être une relation de plusieurs à plusieurs. Pour atteindre cet objectif dans SQL, vous devriez avoir trois tables:

Contactez - Magasins d'informations contacter
SKILLSET - Magasins compétences individuelles définir les informations
ContactSkillSet - compétences carte définit des contacts en fonction des clés primaires En ce qui concerne votre dernière question, il existe plusieurs façons de le faire. Tout dépend de la manière dont vous accédez à vos données (DataSets, LINQ to SQL, Entity Framework, etc.). Si vous fournissez plus de détails, nous pouvons vous donner une réponse plus spécifique.

0

Vous utilisez une table de liaison contenant la clé primaire de chacune des deux tables que vous devez lier ensemble. Mettez un index unique sur la combinaison des deux clés ou faites la combinaison PK.

Questions connexes