Удалить тег из базы данных - PullRequest
2 голосов
/ 21 октября 2011

Если у меня есть система тегов, такая как Stackoverflow. Я могу добавить теги, сохранить и после удаления тега или добавить новые теги.

Например, изначально:

PHP, JQUERY, ARRAYS

сохранить вопрос и опубликовать,

Я передумал, и я удалю JQUERY, поэтому я отредактировал свой вопрос только двумя тегами:

PHP, ARRAYS

Мой вопрос: каков наилучший способ удаления тега из базы данных после вставки? Мне нужно проверить, какой тег удален.

Есть идеи? Спасибо!

Для выяснения проблемы:

У меня есть стол много-много

$first = array (php, jquery, arrays)

question1 | php
question1 | jquery
question1 | arrays

после редактирования у меня будет (цель):

$first = array (php, jquery)

question1 | php
question1 | jquery

добавлять новые теги легко. Уникальные ограничения, и foreach решает проблему. Но убрать теги. Мне нужно удалить определенные массивы тегов из таблицы соединений.

вопрос как?

Итак, у меня есть этот массив: $first = array (php, jquery)

и эта структура таблицы ( ЭТО ПРОБЛЕМА ):

question1 | php
question1 | jquery
question1 | arrays

1 Ответ

5 голосов
/ 21 октября 2011

Лучше всего это реализовать в виде отношения «многие ко многим» .

Вы делаете это с помощью соединительной таблицы . Например

QUESTION
========
id, -- primary key
whatever

TAG
===
id, -- primary key
tag -- probably best with UNIQUE constraint

QUESTION_TAG
============
question_id, -- composite primary key, foreign key references QUESTION (id)
tag_id -- composite primary key, foreign key references TAG (id)

Чтобы удалить метку для вопроса, просто удалите запись из таблицы QUESTION_TAG, например,

DELETE FROM `QUESTION_TAG`
WHERE `question_id` = :question_id
AND `tag_id` = :tag_id

Обновление

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

Другой подход заключается в удалении всех QUESTION_TAG записей для вопроса и повторной вставке тегов для сохранения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...