Реализация базы данных «многие ко многим» - PullRequest
2 голосов
/ 11 июня 2010

Привет, стек переполнение

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

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

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

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

(База данных находится на SQL Server Express 2008. Данные извлекаются из базы данных с помощью встроенного в VisualStudio 2008 «Мастера подключения к данным»)

Ответы [ 2 ]

10 голосов
/ 11 июня 2010

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

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

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

0 голосов
/ 11 июня 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...