Структура базы данных для функции «пометить как спам» - PullRequest
1 голос
/ 17 февраля 2011

Я создал веб-приложение с php / mysql.

В моем приложении есть другой раздел, где пользователь отправляет содержимое, например фотографии, новости, рассказы, видео и т. Д.

Все этиэто отдельные разделы с отдельными страницами с подробностями истории.Я хочу применить функциональность «Пометить как спам» для всех разделов, но путать с базой данных.Должен ли я создать отдельную таблицу для каждого раздела, например, имя таблицы: video_spam или photo_spam, или использовать одну таблицу spam_contents, которая будет содержать следующие столбцы.

  • SpamId - уникальный идентификатор длятаблица
  • ByUserId - кто пометил его как спам
  • SectionName - будет «новости», «видео», «истории» и т. д.
  • Причина - причина, по которой пользовательпомечен как спам
  • ContentId - будет содержать фотоид, видеоид или новостной идентификатор
  • Дата - день, когда пользователь отметил контент как спам.

Если мне нужно получитьвесь контент раздела видео, который помечен пользователями как спам, тогда я могу получить его на основе SectionName и ContentId.

Будет ли это хороший подход, или у кого-то есть лучшее решение для этогосценарий.

Пожалуйста, помогите, спасибо!

Ответы [ 2 ]

1 голос
/ 17 февраля 2011

Если нет ничего уникального для "видео-спама", или что-то уникальное для "фото-спама" и т. Д., Вам почти наверняка лучше с одной таблицей.

Ваша ситуация похожа на эту проблему с супертипом / подтипом . Смотрите и мой ответ на этот вопрос.

0 голосов
/ 17 февраля 2011

Я считаю, что это выглядит как лучший способ.Наличие централизованного коллектора с уникальной целью - плюс дизайна, imho.Вы, конечно, можете найти еще несколько полей в каждой таблице (например, у video_table есть также «spam_flag», «flag_by», «flag_date» и т. Д.), Но я думаю, что это часть умножения вашей работы только при создании, может иметь существенные недостатки, когда вам нужно выполнить настройку или изменения в системе.

И, кстати, я видел, как эта структура реализована в нескольких известных досках объявлений с открытым исходным кодом для сообщений, о которых сообщаюти тому подобное, поэтому я считаю, что это правильный и оптимизированный дизайн.

В качестве альтернативы, если вы чувствуете себя в хорошем настроении, вы также можете сделать и то, и другое: что-то «подробное», относящееся к каждой таблице, и централизованную структуру как«Отчет панели администратора».

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