РЕДАКТИРОВАТЬ: По-видимому, термин "соединительные таблицы" получил то, что мне нужно
Я пытаюсь вставить запись в таблицу produ_tag
с первичным и внешним ключом в качестве столбцов.
produ_tag
товары
теги
Первый столбец refHe
- это код продукта из таблицы products
, второй содержит тег для продукта из таблицы tags
. Программное обеспечение для моделирования составило эту дополнительную таблицу, чтобы оно могло сохранить, какой продукт содержит какой тег, который необходим.
Проблема в том, что они первичные, поэтому, если у меня есть продукт с 2 тегами, запись не будет вставлена, поскольку в нее уже был вставлен тот же продукт.
Должен ли я удалить основной предмет для обоих? Или есть другой способ справиться с этим, так как программное обеспечение для моделирования предоставило его таким образом.
Таблица produ_tag
- это "таблица мостов", а составной первичный ключ позволяет namCh
любое количество тегов (namCh
) с продуктом (refHe
) при условии, что тег существует в таблице tags
и что (refHe, nameCh)
уникальна (т.е. вы не можете ассоциировать один и тот же продукт и тег более одного раза).
Если у вас возникла ошибка при попытке вставить тег, это не связано с неправильной настройкой PK. Вы либо пытаетесь ссылаться на тег, который не существует, либо вставляете комбинацию значений, которые уже присутствуют в таблице.
Не удаляйте первичные ключи. Единственная очевидная проблема, которую я вижу, заключается в отсутствии ограничения FK от produ_tag.refHe
к products.refHe
.