Три потенциальных дизайна БД - PullRequest
1 голос
/ 09 октября 2009

Я рассматривал три аналогичных проекта базы данных, но не придумал очень сильных за или против относительно любого из них.

  1. Одна огромная таблица для контента

    content: int id, enum type, int parent_id, varchar title, text body, text data
    

    Это присвоит каждой строке тип (новости, блог и т. Д.) И будет иметь поля для общих / стандартных / доступных для поиска данных, тогда любые нестандартные или тривиальные данные будут сохранены в виде сериализованного XML в поле data.

  2. Одна таблица для идентификаторов, много таблиц для содержимого

    ids: int id, enum tableName, int parent_id
    

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

  3. Комбинация двух вышеупомянутых, где основная таблица хранит всю общую информацию, но неважные данные хранятся в соответствующей таблице.

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

Любые мысли или ссылки приветствуются.

Ответы [ 3 ]

2 голосов
/ 09 октября 2009

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

http://projects.contentment.org/blog/84

Drupal имеет основную базу данных "узлов" в одной таблице и ссылается на специализированные таблицы при получении реального содержимого.

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

0 голосов
/ 09 октября 2009

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

0 голосов
/ 09 октября 2009

Почему бы просто не иметь разные таблицы для каждого типа контента? Новости, блог и т. Д. Мне кажется, это был бы лучший и самый простой в использовании вариант.

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