Взаимодействие многих-многих в обычной реляционной базе данных, например MySQL, обычно создается с использованием таблицы перекрестных ссылок. Это таблица, которая связывает записи с другими таблицами вместе.
Например, когда у вас есть таблицы А и В, необходимо создать третью таблицу, C, который может выглядеть (очень упрощенно) как это:
A B C
== == ====
A1 B1 A1B3
A2 B2 A2B1
A3 B3 A2B2
A3B2
Так что в этом крестовом столе связи, вы может видеть, что запись A2 связана с двумя записями в B, так же, как B2 связан с двумя записями в A. Конечно, эта схема упрощена. A1 фактически является ключевым полем таблицы A, а A1B1 является первичным ключом, который состоит из двух полей, один из которых имеет ограничение внешнего ключа к ключу таблицы A, а другой - FK для таблицы B.
Это не всегда должно быть много-много отношений. Например, вы можете сказать, что у человека есть родители, которые также являются людьми. Поскольку для людей не очень важно иметь больше двух биологических родителей, вы можете смело дать ряд в person
a fatherid
и motherid
, оба из которых относятся к той же таблице person
. Таким образом, как всегда, это зависит от ваших конкретных потребностей.
Возможно, вы захотите использовать какую-то модельную систему, такую как NHibernate для этого –