DrupalBook.org.ua
Готовые решения для сайта на Drupal.Схема (структура) базы данных
Задача
Понять связи между таблицами и колонками базы данных Друпал 5.7
Решение
Варианты
- Cхема с сайта webdevgeeks.com (сделана программой SchemaSpy 19 января 2007)
- Схема, предложенная Pilat (постоянно обновляется)
Cхема с сайта webdevgeeks.com
Сайт англоязычный.
Скорее всего использована база данных Drupal 5.x.
Легенда:

Cмотреть полную схему базы данных:
Кроме того, на сайте можно посмотреть и проанализировать:
Таблицы
Отношения
Вспомагательные таблицы
Ограничения (Constraints)
Аномалии
Колонки
Схема базы данных, предложенная Pilat
Как я себе представляю структуру Drupal'овской базы:
есть два основных объекта - node и vocabulary (материал и словарь соответственно)
1) все материалы хранятся в nodе - вообще все;
2) все node имеют какой-то тип - те самые типы материалов, и хранятся описания типов в node_type - вот что там сразу после установки:
mysql> select type, name, module from node_type;
+-------+-------+--------+
| type | name | module |
+-------+-------+--------+
| page | Page | node |
| story | Story | node |
+-------+-------+--------+
2 rows in set (0.00 sec)3) словарь (vocabulary) содержит список терминов, или дерево терминов - в зависимости от типа словаря.
4) термины (term_data) могут быть связаны между собой связью родитель-потомок (term_hierarchy), родитель - более общее описание, потомок - более детальное, или термин-термин (term_relation) для родственных терминов, каждый из которых напрямую может не быть связан с другим.
5) типы материалов (node_type) могут быть связаны с одним или несколькими словарями (а могут и не быть, но это нехорошо);
6) материалы (node) связаны с терминами (не со словарями!).
Затруднения вызывает понимание что такое словарь и термины. Объяснений есть много, я сходу хорошего объяснения придумать не могу.
Использование структуры нод и терминов - очень просто. Создаём материал нужного типа, приписываем ему из присоединённого к типу словаря несколько терминов. После этого выводим на страницу список терминов, - например в виде облака тэгов, - кликаем по нужному тэгу (а он и есть термин словаря) и видим список нод, к которым был приписан этот термин (тэг).
Вот и всё, остальное - это правила доступа, пользователи, кэширование и так далее - надстройки над системой нод и словарей.
Да, comments - это облегчённая в смысле хуков node.
Замечание andypost@drupal.org:
все правильно, кроме - между vocabulary & node_revisions связи нет! (vid в них просто одинаково называется)
Смотреть схемы:
- http://drupalcookbook.ru/sites/default/files/node.png
- http://drupalcookbook.ru/sites/default/files/term.png
- http://drupalcookbook.ru/sites/default/files/users.png
- http://drupalcookbook.ru/sites/default/files/auth.png
Использованные материалы
Полезные ссылки
- Модуль schema, который помогает анализировать схему базы данных.
- The Schema Project: Database abstraction, reflection, and migration - Barry Jaspan (автор модуля Schema): о проекте...
- Handbook: Schema API (en)
- Schema API Drupal 6, 7 (на api.drupal.org)
- The Drupal Database Design is a Comedy of Errors (en)
- Database Schema API. Группа, которая обсуждает API схему базы данных Drupal.
- Страница для печати
- 337 reads
Creative Commons: Attribution-Share Alike 2.5
Данные материалы выложены под лицензией Creative Commons: Attribution-Share Alike 2.5. Это значит, что вы можете распространять, копировать и модифицировать эти произведения при условии упоминания авторства оригинала, и при условии, что они также будут распространяться на условиях этой лицензии (то есть, изменённую работу нельзя защитить копирайтом). Подробнее смотри: http://ru.wikipedia.org/wiki/Creative_Commons