Лучшие практики по настройке модели данных блога

StackOverflow https://stackoverflow.com/questions/831575

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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

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

Есть ли способ лучше?Есть ли что-то, что мне не хватает?Что предлагают делать «лучшие практики»?

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top