2015-02-16 4 views
0

У меня есть большая проблема с моим SQL-дизайном.Как моделировать отношения «многие ко многим» в SQL?

Мне нужно создать базу данных, которая моделирует следующую ситуацию: У меня есть список столиц, это выглядит так: Берлин, Лондон, Прага, вы его получите. Другой список - это список путешественников: Джон, Кайл, Питер и т. Д.

База данных должна отвечать таким запросам, как: Список городов, которые посетил данный путешественник, какие путешественники посетили данный город и так далее на. Моя проблема в том, что когда я создаю две таблицы, я просто замерзаю и не могу понять связь между ними, которая позволила бы мне реализовать предполагаемое поведение.

Я прочитал об этом в Интернете, и мне сказали использовать объекты пересечения, которые я могу, но я просто не понимаю, как это мне поможет. Извините, если это FAQ, но я просто не мог найти подходящие ключевые слова для поиска.

+0

вставляя ключевые слова 'модель SQL многие многие в веб-поиск должны дать несколько полезных хитов. –

ответ

0

Не проще ли создать третью таблицу, такую ​​как travel_cities, с иностранными ключами путешественника и города, чем вы можете присоединиться к этому столу со столом, который вам нужен, и искать там результат?

0

Решение:

Выполните следующую схему

Первая таблица: Капитал Пусть говорят два столбца: CID (первичный ключ), имя

Вторая таблица: Путешественники Пусть говорят две колонки: три раза в день (Первичный ключ), Traveller_Name

Теперь существует много-много отношений, которые один путешественник может путешествовать/посещать одну или несколько столиц, а один капитал можно посетить одним или несколькими посетители.

От многих до многих отношений может быть достигнуто создание новой таблицы, которая будет служить справочной/картографической таблицей. скажем «capital_travellers»

Таким образом, эта третья таблица будет иметь следующие столбцы

capital_travellers:

идентификаторов (первичный ключ): Его опциональный

чид (первичный ключ капитал Таблицы будет работать Внешний ключ)

TID (Первичный ключ путешественник таблицы будет работать как иностранный ключ)

Теперь, когда вы хотите для извлечения записей вы заглянете в эту таблицу (capital_travellers).

Надеюсь, это поможет.

+0

Хороший ответ, спасибо. Я думаю, что попробую :) –

+0

@JCHammer, конечно. если вы сочтете это полезным, тогда проголосуйте за мой ответ;) –

0

В отношениях многих-многих необходимо реализовать третью таблицу соединений между двумя объектами. Мы могли бы, скажем, назвать это путешествием. В этой таблице используются два внешних ключа, по одному от каждого объекта, для формирования одного составного ключа.

Теперь у вас есть 3 стола. Одна таблица называется «Путешественник», одна называется «Город» и третья таблица переходов «Путешествие». Предположим, что первичным ключом для путешественника является travellerId, а для города это cityId. Таблица переходов берет эти два ключа, чтобы сформировать первичный ключ для объекта «Путешествие».Когда вы запросите базу данных, для которой путешествуют путешественники с TravelId '031', она будет использовать эту таблицу соединений и вернуть вам данные CityId.

Если это не помогает, или если вам нужно больше разъяснений я рекомендую искать эти термины:

  • Многие ко многим
  • Cardinality
Смежные вопросы