Схема (структура) базы данных

Главные вкладки

Аватар пользователя Pilat Pilat 28 апреля 2008 в 17:49

Моя попытка нарисовать схему данных версии 5.7.

(предыдущий постинг на эту тему случайно я потёр...)

Как я себе представляю структуру 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.

Просьба комментировать только если есть критические замечания!

Комментарии

Аватар пользователя Pilat Pilat 30 апреля 2008 в 16:27

VladSavitsky wrote:
Drupal CookBook - Готовить может каждый!Решение было сохранено на сайте DrupalCookBook.ru:

Схема (структура) базы данных.

Авторы, предложившие решения, также указаны в сохранённой статье.

Насколько я понял, VladSavitsky (Влад Савицкий) указал себя в качестве автора. Я категорически против этого. VladSavitsky, пишите сами и подписывайтесь, но не надо присваивать чужие материалы.

Аватар пользователя VladSavitsky VladSavitsky 1 мая 2008 в 12:37

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

Многие статьи на сайте drupalcookbook.ru основаны на материалах других людей и потому я указываю авторов, которые предложили решения и даю ссылки на страницы, которые были использованы при написании этой статьи. Это законный метод соблюдения авторства. Чужую работу я не присваиваю и любой может разобраться кто является автором решения.

Все статьи на сайте друпал.ру публикуются под лицензией CreativeCommons Attribution-ShareAlike 2.5. И вашу статью вы также опубликовали под этой лицензией.
Внизу (в футере) сайта друпал.ру указано: "Содержимое сайта публикуется на правах CreativeCommons Attribution-ShareAlike 2.5."

Я сделал перевод страницы (http://creativecommons.org/licenses/by-sa/2.5/)

You are free (Вы можете свободно):

* to Share — to copy, distribute and transmit the work (Делиться с другими - копировать, распространять и передавать произведение)
* to Remix — to adapt the work (Делать ремикс - адаптировать произведение)

Under the following conditions (При соблюдении следующих условий):

*Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).
(Соблюдение авторства. Вы должны соблюдать авторство так, как указал автор или обладатель лицензии (но не таким образом, который предполагает, что они должны утверждать вас или ваше использование произведение).
)
* Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one. (Если вы измениил, переделали или использовали в вашей работе это произведение, то вы должны распространять результирующее произведение только под такой же или схожей с этой лицензией).

Размещая переработанные версии статей на http://drupalcookbook.ru я не нарушаю эту лицензию, если указываю авторов, даю ссылки на источники и распространяю статьи под той же лицензией.

На сайте drupalcookbook.ru НЕ БЫЛА указана лицензия: исправил. Внизу каждой страницы выводится блок с указанием лицензии.

Про эту лицензию СС можно подробно почитать тут: http://ru.wikipedia.org/wiki/Creative_Commons

Если вас смущает то, что имя "Влад Савицкий" выводится первым, то это видимо какая-то сортировка модуля таксономии...
Исправил: переименовал "Влад Савицкий" в "VladSavitsky".

Если Андрей Постников это andypost@drupal.org, то он указан в самой статье как автор комментария. Часто я не знаю имен и использую ники.

Исправил: указал ник andypost@drupal.org в "Авторы".

Ваши статьи очень хорошие и я бы хотел их публиковать у себя на сайте.
Можно ли считать вопрос решённым?

Аватар пользователя Pilat Pilat 1 мая 2008 в 13:00

VladSavitsky wrote:
Ваши статьи очень хорошие и я бы хотел их публиковать у себя на сайте.
Можно ли считать вопрос решённым?

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

Вообще у Вас какая-то Интер-Books получается, только не автоматизированная Smile

Аватар пользователя VladSavitsky VladSavitsky 1 мая 2008 в 15:16

Вы опять же правы. Я уже всё исправил.

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

Сама природа интернета подразумевает постоянное изменение и любая статья на drupalcookbook никогда не будет завершённой и полной. В любой момент кто-то где-то может найти лучшее или просто альтернативное решение...
Но это не значит, что не стоит упорядочивать информацию...

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

По теме схемы базы данных у меня хранились картинки схемы базы данных с других сайтов. PVasili не так давно искал схему базы данных и поделился со мной ссылкой. Я планировал позже добавить эти материалы в статью.

Чтобы не создавалось ощущение, что я просто скопировал 1 в 1 вашу статью, - я постарался максимально завершить. Сейчас она выглядит так как должна. Ваша информация стала одним из альтернативных вариантов. Вот ссылка: http://drupalcookbook.ru/skhema-struktura-bazy-dannykh

Приношу свои извинения, что публиковал незаконченные варианты.
Я использую модуль scheduler, чтобы отложить публикацию, но для Д6 нет релиза этого модуля...
Но вы заставили меня искать варианты. И я нашёл! Таки есть релиз этого модуля для Д6: http://drupal.org/node/3292/release
Установил.

Ещё раз спасибо - вы помогаете мне развиваться. Надеюсь, что теперь я всё исправил.

По поводу изменений вашей статьи. Чтобы изменения были видимы, предлагаю:

  • описывать в конце статьи сделанные изменения. Например, "Обновление (дата): изменилось то-то." Это будет полезно для всех, кто уже читал статью раньше.
  • второй вариант - не изменить саму статью, а описывать изменения и прилагать изменённые файлы в комментариях к статье. Это тоже позволит видеть, что изменилось. Кроме того, новые комментарии поднимают статью в трекере и уведомляют тех, кто подписался на обновления статьи по почте. Изменение же текста статьи такого эффекта не даёт.
  • ещё я могу открыть вам доступ для публикации на drupalcookbook.ru, но я прекрасно понимаю, что вся эта синхронизация между сайтами требует много времени. Моя позиция такая: человек может прочитать статью и если его проблема всё таки не решилась (возможно из-за того, что текст статьи устарел) - он может идти по ссылкам и искать решение дальше.
Аватар пользователя Pilat Pilat 1 мая 2008 в 15:33

Я понимаю, что Вы хотите сделать популярный ресурс, но делайте это корректно. Вы добавили в статью несколько ссылок, и ссылку на "Cхема с сайта webdevgeeks.com (сделана программой SchemaSpy 19 января 2007)", которая схемой не является, а является кашей из связей - непонятно зачем добавили, информации эта схема не содержит, а вот дезинформации много. Собрать разнородную информацию и без обработки объявить это законченным произведением, с моей точки зрения, нельзя.Текст Вы не изменяли, не правили, ошибки в схемах не искали. Может быть, в соответствии с лицензией это допустимо, я не юрист и спорить не буду - повод маловат, пусть всё остаётся так как есть.

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

Аватар пользователя VladSavitsky VladSavitsky 1 мая 2008 в 16:00

Получается, что я сделал ремикс или сборку разной информации, что с точки зрения закона об авторском праве является новым произведением (как и перевод на новый язык, кстати). Были рассмотрены альтернативные варианты. Каждый из них имеет право на существование.

Насколько эта информация правдива/правильна/актуальна/интересна/легко читается к авторству не имеет отношения.

Моя статья основывается на вашей статье. Именно потому, что я использую цитаты, чтобы не тратить времени на переписывание своими словам - я указываю авторов, которых я цитирую. Ваше авторство никто не отрицает и в статье это специально подчёркнуто.
Если вам этого мало, то я изменил сайт вот таким образом:

Вас это устраивает?

Аватар пользователя Pilat Pilat 1 мая 2008 в 16:10

Вполне.
Я посмотрел новую редакцию статьи и в ссылках нашёл интересные разделы, "Database Schema API. Группа, которая обсуждает API схему базы данных Drupal." - я бы вообще предложил как "Must Read" для друпалистов.