Построение схемы базы данных "многие ко многим" с использованием только непредсказуемого количества внешних ключей

Добрый день (по крайней мере где-то здесь),

У меня есть схема отношений "многие ко многим", и у меня возникают проблемы при построении. Основная проблема заключается в том, что я работаю только с первичными и внешними ключами (без varchars или перечислений, чтобы упростить вещи), и число отношений "многие ко многим" не предсказуемо и может увеличиться в любое время.

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

Я разделил проблему пополам, и теперь у меня есть две схемы "один ко многим". Один решен, но другой дает мне приступы.

Давайте предположим, что таблица FOO - это стандартная скучная таблица с простым первичным ключом. Это один в отношениях один-ко-многим.

Таблица BAR может относиться к нескольким ключам FOO. Количество связанных ключей заранее неизвестно.

Пример:

  1. Из запроса FOO возвращает идентификаторы 3, 4, 5.
  2. BAR нужен уникальный ключ, который относится к 3, 4, 5 (хотя может быть любое количество возвращенных идентификаторов)

Обычная таблица соединений не работает:

Table FOO_BAR
primary_key  |  foo_id  |  bar_id  |

Так как FOO возвращает 3 уникальных ключа, и здесь bar_id имеет непосредственное отношение с foo_id.

Наличие двух таблиц соединения, похоже, тоже не работает, так как по-прежнему нельзя сопоставить foo_ids 3, 4, 5 с одним bar_id.

Table FOO_TO_BAR
primary_key  |  foo_id  |  bar_to_foo_id  |

Table BAR_TO_FOO
primary_key  |  foo_to_bar_id  |  bar_id  |

Что я делаю неправильно? Я делаю вещи более сложными, чем они? Как мне подойти к проблеме? Большое спасибо за помощь.

1 ответ

FOO-BAR выглядит хорошо для меня. Почему ты не думаешь, что это работает?

Say FOO = 1,2,3
Say BAR = A,B,C

Then an everything to everything relation will look like:
FOOBAR = 1, A; 1, B; 1, C; 2, A; 2, B; 2, C; 3, A; 3, B; 3, C

Вы можете сделать первичный ключ foo_id, bar_id без отдельного ключа, если он вам действительно не нужен, и это позволит избежать дублирования отношений.

Другие вопросы по тегам