Реализация тегов по принципу "city & country"

Сейчас для проекта понадобилось что бы была организована функция тегов по принципу «city & country» но что бы тег можно было вставлять не один а неограниченное количество.

То есть эта функция должна будет в отдельную таблицу в DB добавлять все не повторяющиеся теги, а если такой тег уже есть в этой таблице то второй раз его уже не вставляешь, а для связи будет другая таблица в которой будет указана связь между тегом и объектом к которому тег относится.

Я в принципе знаю как реализовать подобие «city & country» но как сделать разделение на много тегов пока не могу разобраться, подскажите кто знает или может уже реализовывал такую функцию.

4 комментария

avatar
по такому же принципу работают обычные теги — просто посмотри структуру бд и код добавления тегов в топик
avatar
Вы немножко не правы, там действует система подставления всех новых тегов в низ таблицы с указанием номера топика и другой информации о топике, а вот «city & country» работают как раз по этому принципу, но в них можно добавлять только один город и одну страну.
avatar
ну в одной таблице как вы и написали храним все теги
id title

а в другой таблице связи
topic_id tag_id

при добавлении тега проверяем, существует ли он.
1) если нет, то добавляем его в таблицу тегов и в другую таблицу записываем соответствие тега топику
2) если да, то вытаскиваем ид тега и записываем в таблицу связей ид тега и ид топика

так же только вместо тегов то что вам нужно
avatar
Спасибо, буду пробовать реализовать, хотя многое пока непонятно как сделать..:)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.