При проектировании новой базы данных CMS, что бы добавить наиболее важные функции? - PullRequest
0 голосов
/ 12 октября 2009

Хотя этот вопрос тоже задавал нечто подобное, меня это интересует с другой стороны. Меня интересует не часть GUI, а часть базы данных / домена.

( Я предпочитаю SQL Server с C # / ASP.NET, но этот Q должен быть независимым от языка. )

При проектировании системы CMS данные должны храниться в таблицах, а бизнес-уровень должен обеспечивать доступ к этим данным. Прежде всего, пользовательская база данных с пользовательскими ролями, конечно. Почтовый ящик для личных сообщений на пользователя был бы хорош. Разрешение пользователям создавать свои собственные профили с изображениями и приятными на вид делами сделало бы его еще более интересным, но давайте не будем фокусироваться на пользователях.

Что еще должно быть в базе данных для системы CMS? И как это должно относиться к другим таблицам? <ч /> Моя задача - получить четкую модель предметной области, которая будет использоваться в качестве основы для любой системы CMS. Нечто общее у них всех. Меня интересует только дизайн, поэтому я могу позже оценить несколько существующих систем с предпочтительной моделью предметной области, чтобы увидеть, какая из них соответствует наиболее идеальной ситуации.

Ответы [ 4 ]

5 голосов
/ 12 октября 2009

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

3 голосов
/ 12 октября 2009

Если это CMS для [я предполагаю] динамического обслуживания веб-сайта, первые и основные функции должны позволить пользователям:

  • Добавление / редактирование / удаление страниц (он же узлы) - структура сайта
  • Добавить / Редактировать / Удалить меню, ссылки - навигация по сайту
  • Добавить редактируемые медиа (фотографии, видео и т. Д.) - контент сайта

Затем вы можете подумать о других специфических для сайта функциях управления, таких как:

  • Управление продуктами / клиентами, если оно будет управлять веб-сайтами электронной коммерции
  • Различные виды интерактивных функций - комментарии / контактные формы и т. Д.

CMS - это большой проект для решения, особенно если вы хотите сделать его переносимым и / или повторно используемым, расширяемым. Я уже прошел три версии моей собственной CMS - первые две версии на PHP и последнюю версию на .NET.

2 голосов
/ 29 июля 2010

При проектировании базы данных для CMS необходимо внимательно следить за таблицами данных о продукте / содержимом, таблицами зарегистрированных пользователей и таблицами данных изменений, связанных с пользовательским интерфейсом.

Данные, связанные с пользовательским интерфейсом, - это не что иное, как темы, скин, который является наиболее важным.

Большая часть приложения CMS разрабатывалась по мере необходимости. Поэтому в большинстве случаев необходимо нарушать отношения в таблицах и правилах нормализации.

Но если мы позаботимся о некоторой базовой структуре БД: страницах контента или таблицах данных контента, таблицах продуктов, таблицах разрешений пользователей (если использовать таблицы aspnet, то это лучше), таблица управления заказами (для сайтов электронной торговли) и т. Д.

А также бизнес-уровень, играющий наиболее важную роль, когда в CMS Project происходят большие изменения.

Иногда таблицы имеют большие изменения, которые не влияют на страницы, их нужно изменить на бизнес-уровне.

1 голос
/ 12 октября 2009

То, что вы спрашиваете, является технологическим вопросом, который необязательно связан с функциями, которыми обладает сама CMS. Мой совет и способ, которым я подхожу к этому, будет использовать ORM. Причина в том, что когда вы начинаете проектировать базу данных, вы попадаете в нишу концепций БД. Целью CMS является предоставление простого способа управления контентом.

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

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