Рекомендации по настройке модели данных блога - PullRequest
1 голос
/ 07 мая 2009

У меня есть следующие настройки для моей модели данных блога:

Blog               Articles             Categories
-----              --------          1  ----------
ID  \ 1         *  ID            /----- ID
Name \------------ BlogID       /       Name 
Owner              Name      * /      
                   CategoryID-/

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

Есть ли лучший способ? Я что-то упускаю? Что предлагают «лучшие практики»?

Ответы [ 7 ]

3 голосов
/ 07 мая 2009

Это действительно зависит от вашего варианта использования. Многие приложения для блогов используют теги с отношением «многие ко многим» вместо категорий с отношением «один ко многим», потому что более целесообразно рассматривать статью как связанную (возможно) со многими тегами, чем видеть статью как содержится "внутри категории.

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

Это просто тот случай, когда вы должны предвидеть интуицию своей базы пользователей. То, что они считают естественным.

Между прочим, это намного больше работы, но если бы это был я, я бы не делал каскадное удаление. Я бы пометил статьи как осиротевшие и скрыл их от большинства просмотров. Я также предоставил бы некоторый интерфейс для восстановления осиротевших статей. И я хотел бы рассмотреть вопрос о предоставлении сценария, который удаляет все, что осиротело в течение более чем некоторого периода времени. Таким образом, если вы ошиблись в том, что ожидали ваши пользователи, вы можете исправить проблему.

2 голосов
/ 07 мая 2009

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

1 голос
/ 07 мая 2009

Пара вопросов. Может ли статья иметь более одной категории? Вы разрешаете статьям иметь 0 категорий? По вашему описанию я бы сказал, что вы не хотите удалять статьи. По моему опыту, при разработке блога, категории, как правило, связаны между собой статьями / сообщениями (несколько категорий, описывающих несколько сообщений). Поэтому я бы не стал их удалять, но, опять же, это будет зависеть от вашей бизнес-логики и от того, как вы хотите с ней справиться.

1 голос
/ 07 мая 2009

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

Возможно, возможность переназначить все статьи в новую категорию.

1 голос
/ 07 мая 2009

Зависит. Если ваш блог-движок не разрешает запись без указанной категории, вы, вероятно, должны уведомить пользователя о последствиях и удалить статьи. В противном случае вы можете использовать ON DELETE SET NULL.

0 голосов
/ 07 мая 2009

Забудьте о модели данных, используйте Object Model, то есть то, что данные являются реализацией, а объект является интерфейсом, который ближе к требованию.

0 голосов
/ 07 мая 2009

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

...