Вам, вероятно, не нужна таблица поиска.1 статья имеет много комментариев.Поэтому структурируйте свою таблицу комментариев примерно так (добавьте поле статьи);
id | article | content
-------------------------
1 | 1 | Comment 1 for article 1.
2 | 1 | Comment 2 for article 1.
3 | 2 | Comment 3 for article 2.
При отображении вашей статьи перечислите комментарии, используя следующий запрос;
SELECT a.id, a.content FROM articles a WHERE a.article = :myArticleId
При создании нового комментария:
INSERT INTO comments (article, content) VALUES (:currentArticleId, :content)
UPDATE article SET commentCount = commentCount + 1 WHERE article = :currentArticleId
Таблица статей будет выглядеть примерно так;
id | commentCount | content
------------------------------
1 | 0 | Article with 0 comments.
2 | 3 | Article with 3 comments.
Это потребует некоторых усилий с вашей стороны, ноэто имеет больше преимуществ, чем недостатков.
Предлагаемое решение имеет 2 больших недостатка:
- COUNT () в SQL не очень хорошо масштабируется и может быть медленным, обычно этого можно избежать.
- Таблица поиска добавляет ненужную сложность вашему приложению.
Следует также всегда избегать триггеров.Они создают «волшебные» условия - ваша база данных может быть изменена без вашего ведома.Триггеры часто сложнее изменить, чем код.