Вставка записей в первичные столбцы внешнего ключа из другой таблицы

0

РЕДАКТИРОВАТЬ: По-видимому, термин "соединительные таблицы" получил то, что мне нужно

Я пытаюсь вставить запись в таблицу produ_tag с первичным и внешним ключом в качестве столбцов.

produ_tag

Изображение 174551

товары

Изображение 174551

теги

Изображение 174551

Первый столбец refHe - это код продукта из таблицы products, второй содержит тег для продукта из таблицы tags. Программное обеспечение для моделирования составило эту дополнительную таблицу, чтобы оно могло сохранить, какой продукт содержит какой тег, который необходим.

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

Должен ли я удалить основной предмет для обоих? Или есть другой способ справиться с этим, так как программное обеспечение для моделирования предоставило его таким образом.

Теги:
mysqli
database-design

1 ответ

1

Таблица produ_tag - это "таблица мостов", а составной первичный ключ позволяет namCh любое количество тегов (namCh) с продуктом (refHe) при условии, что тег существует в таблице tags и что (refHe, nameCh) уникальна (т.е. вы не можете ассоциировать один и тот же продукт и тег более одного раза).

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

Не удаляйте первичные ключи. Единственная очевидная проблема, которую я вижу, заключается в отсутствии ограничения FK от produ_tag.refHe к products.refHe.

  • 0
    хорошо, чтобы указать на отсутствующее ограничение FK.
  • 0
    См. Mysql.rjweb.org/doc.php/… для оптимальной схемы для таблицы сопоставления «многие ко многим».

Ещё вопросы

Сообщество Overcoder
Наверх
Меню