Как создать пост без рубрики для системы блогов

У меня есть 3 таблицы:

Опубликовать

Категория

PostCategory (таблица связи "многие ко многим")

Он отлично работает, когда пользователь выбирает одну или несколько категорий для публикации. Но один сценарий заключается в том, что когда пользователь не выбирает ни одну из категорий, что мне делать, чтобы управлять этими сообщениями без категорий?

Я думал о двух способах, я не знаю, какой лучше.

<сильный>1. Запись без категории нельзя вставлять в [PostCategory].

Проблемы:

а) В URL-маршруте я использую "/Post/Category/Travel" для отображения сообщений по категориям. Теперь пользователь хочет перечислить все сообщения без категорий, я могу использовать только что-то вроде «/Post/Category/Uncategorized». Это вызовет множество изменений кода, чтобы отличить строку «Без категории» от обычного значения маршрута URL.

б) Будет путаница, когда пользователь сам добавит в систему категорию под названием «Без категории». (может быть, я могу определить некоторые системные зарезервированные слова, но я не думаю, что это хорошо.)

<сильный>2. Добавьте постоянное значение (Без категории) в [Категория], а также в качестве системного зарезервированного слова. Если пользователь не выбрал ни одну из категорий, вставьте запись в PostCategory(postId, UncategorizedId).

Проблемы:

Он рассматривает «Без категории» как категорию, это означает обычную категорию для компьютера, только человек знает, что это особая категория. Это не хорошо в ООП-дизайне.

Трудно решить, какой из них лучше, есть ли другой способ управлять постами «Без рубрики»?


person Edi Wang    schedule 21.09.2012    source источник
comment
Создайте категорию Uncategorized и, когда пользователь публикует блог без категории, автоматически помечайте его тегом Uncategorized. Если в посте уже есть тег и тег Uncategorized, удалите из него тег Uncategorized. Разве это не сработает?   -  person Bhrugesh Patel    schedule 21.09.2012


Ответы (2)


Решение (2) позволит одному сообщению быть как категоризированным, так и некатегоризированным. Таким образом, чисто с точки зрения согласованности данных (1) является лучшим решением.

Я не могу комментировать сложность изменений в вашем коде, но в качестве общего руководства, выбирая между более чистым кодом и более чистыми данными, предпочитайте более чистые данные.

person Branko Dimitrijevic    schedule 21.09.2012

Затем в целях непротиворечивости данных, преимуществ индексации тегов и сохранения собственного здравомыслия каждая запись должна быть помечена/категоризирована. Если по вашему дизайну или каким-то другим ограничениям, это не вариант. Возьмем, к примеру, этот самый сайт. StackOverflow не позволит вам разместить здесь вопрос без тега. Вы получите преимущества в производительности (по крайней мере) от тегирования вашего контента и индексации этих тегов.

person kolossus    schedule 22.09.2012