Допустим, у нас есть таблица tags такого вида (ниже привожу sql-запрос для ее создания):
CREATE TABLE `tags` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`tag_name` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
`uid` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Ее смысл в том, что для каждого пользователя мы можем задавать отдельный набор тэгов, которые будут отображаться только ему. Кстати, отображать их удобно через jquery UI autocomplete multiple .
Также, когда мы передаем какой то набор сохраняемых тэгов для выбранного пользователя (опустим моменты разрезания, тримминг пробелов и т.д.), мы не хотим, чтобы повторялись одинаковые значения. Этого можно добиться, сделав следующее.
Сначала сделаем уникальный ключ из двух полей - tag_name и uid.
ALTER TABLE tags ADD unique index(tag_name,uid);
А затем мы можем добавлять несуществующие записи таким образом (обратите внимание на слово IGNORE - оно позволяет не показывать ошибку, когда создаются дубликаты уже существующих записей, а просто пропускать ее):
INSERT IGNORE INTO tags(tag_name, uid) VALUES ('my_tag1', 1), ('my_tag2', 1), ('мой тэг', 1)