Я работаю над системой CMS (в основном как учебное упражнение) для частного веб-сайта. У меня есть три таблицы: одна для статей, одна для тегов и соединительная таблица, так что каждая статья может иметь несколько тегов.Избегайте дублирования записей в таблице mySQL с уникальными столбцами
В таблице у меня возникли проблемы с состоит из трех колонок -
article_tags: id (auto_increment), article_id, tag_id
Моя проблема связана с тем, что статья может появиться любое количество раз, и тег может также появиться любое количество раз, однако данная комбинация из них должна появляться только один раз - то есть каждая статья должна иметь только одну ссылку на любой отдельный тег. В настоящее время можно ВСТАВИТЬ «дублировать» строки, где идентификатор отличается, но сочетание article_id и tag_id одинаковы:
id , article_id, tag_id
1 1 1
2 1 2
3 2 1
4 1 1 <- this is wrong
я мог проверить в PHP код для записи, содержащей эту комбинацию, но я Предпочитаете сделать это в sql, если это возможно (если это не так, или это нежелательно, то я сделаю это с помощью PHP). Из-за того, что идентификатор отличается и невозможность установить уникальные столбцы, такие как INSERT IGNORE и ON DUPLICATE не работают.
Я новичок в mySQL, поэтому, если я делаю что-то глупо, пожалуйста, укажите мне в правильном направлении.
Благодаря
Очень краткий ответ. Если я правильно понимаю, что №3 хуже, потому что он добавляет служебные данные в запрос SELECT? И хуже # 2, потому что он по сути делает то же самое, что и # 1, но имеет дополнительный (ненужный?) Столбец в виде старого auto_increment? – ProFishChris
Не лаконично. См. Мой отредактированный ответ –
Более подробно, хотя! Извините за путаницу, но меня больше интересовало, почему вы заказали их так, как вы это делали, а не как их реализовать. – ProFishChris