2010-06-11 3 views
2

Привет, стек переполнениеРеализация «многие-ко многим» базы данных

В моей базе данных, у меня уже есть одна таблица, «контакты», который содержит записи отдельных людей. У меня также есть несколько других таблиц в моей базе данных, которые представляют собой «наборы навыков», которые содержат записи, обозначающие определенный навык.

1) Правильно ли я в формулировке этого как отношения «многие ко многим»? (каждый контакт может иметь несколько наборов навыков, и каждый набор навыков может принадлежать нескольким контактам)

2) Я новичок в базах данных - я хочу связать таблицы?

3) Есть ли способ реализовать это в моей программе (C# + формы окон), так что для любой заданной записи в таблице «контакты» либо имена всех связанных таблиц «набор навыков» , либо все записи «умения», связанные с записью «контакт», могут быть получены?

(база данных находится на SQL Server Express 2008. Данные для его извлечения из базы данных с помощью VisualStudio 2008 встроенный в "Connection Data Wizard")

ответ

10

Вы правильно. Это должно быть много-много отношений. Для достижения этой цели в SQL, вы должны иметь три таблицы:

Контакта - Магазины контактной информации
SKILLSET - Магазины индивидуального мастерства набор информации
ContactSkillSet - наборы карт умения контактов на основе первичных ключей

Что касается вашего последнего вопроса, существует несколько способов сделать это. Все зависит от того, как вы получаете доступ к своим данным (DataSets, LINQ to SQL, Entity Framework и т. Д.). Если вы предоставите более подробную информацию, мы можем дать вам более конкретный ответ.

0

Вы используете ссылочную таблицу, содержащую первичный ключ из каждой из двух таблиц, которые вам необходимо связать. Поместите уникальный индекс в комбинацию двух клавиш или сделайте комбинацию PK.

Смежные вопросы