НЕ МОЛЧИ!!!    Сделай что-нибудь, чтобы остановить войну России в Украине.
...бойтесь людей равнодушных - именно с их молчаливого согласия происходят все самые ужасные преступления на свете.   ("Репортаж с петлёй на шее")

Таблицы БД WordPress, назначение и взаимосвязи

Рассмотрены таблицы базы данных WordPress, их назначение и взаимодействие.

Содержание

  • База данных WordPress
  • Таблицы базы данных
  • Взаимные связи таблиц базы данных

База данных WordPress

Современное более или менее серьезное программное обеспечение невозможно представить без систем хранения данных. WordPress не исключение, поэтому сегодня рассмотрим этот важный ее компонент. Сейчас хватает различных функций, плагинов и примеров SQL запросов, тем не менее хорошие знания базы данных — это залог грамотного использования CMS WordPress.

На момент выхода этого поста при установке WordPress создается 12 таблиц MySQL. По умолчанию они имеют префикс wp_. Назначение одних достаточно прозрачно, с другими новичку надо разбираться. Но прежде чем мы этим займемся, есть смысл прояснить один термин, который используется в этой БД. На мой взгляд нередко его трактуют довольно поверхностно.

Таксономия

Определение термина в Википедии слишком расплывчато, поэтому попробую его разъяснить, как я понимаю. В нашем случае больше подойдет следующее: «Таксономия — это учение о классификации сложных иерархических систем.» Например, у нас имеется некий сложный объект со множеством свойств. Так вот, все эти свойства не сваливают в одну кучу, а разделяют на несколько кучек. Т.е, следуют чудесному принципу декомпозиции. Тем более, когда это информация, — зачем вываливать пользователю все данные, если ему нужна только их часть. А когда информация классифицируется по некоторым признакам, ее уже можно предоставлять/обрабатывать частями. Хорошим примером таксономии может служить Проводник Windows. Там информация делится на папки, подпапки, на файлы, имеющие различные форматы, за разными форматами файлов закреплены разные обрабатывающие их программы и т.д. Другими словами, информация разделяется по определенным свойствам. Так вот, на мой взгляд, таксономия — это набор элементов, их свойства и взаимосвязи какой-то сложной структуры. Вот этот принцип и заложен в структуре базы данных. Элементами таксономии являются, например, страницы, записи, рубрики, элементы меню, метки, т.е., свойства, по которым хранящиеся данные можно отличить друг от друга. А все они в целом являются CMS WordPress. Как-то так, кто не согласен, аргументированно возражайте. А пока пойдем дальше.

  • Таблицы базы данных
  • Как уже говорилось, по умолчанию в базе данных создается 12 таблиц. Пока приведем их список, порядок перечисления — от простого к сложному по критерию их связей:

    • wp_options — хранятся настройки WordPress;
    • wp_users — собраны данные о пользователях;
    • wp_usermeta — хранятся дополнительные данные о пользователях, записанных в таблице wp_users;
    • wp_links — здесь хранились все ссылки. Достаточно давно не используется, но возможность ее задействовать существует;
    • wp_posts — самая важная таблица, хранящая основную информацию о контенте: страницы, любые типы записей, медиафайлы, пункты меню и т.п. Все они называются post, а различаются по значению поля post_type. В нашем приоритете должна быть последней, но стоит здесь, т.к. с ней связаны множество других;
    • wp_postmeta — дополнительные данные к записям, лежащим в таблице wp_posts, так называемые метаданные;
    • wp_comments — информация о комментариях к посту;
    • wp_commentmeta — дополнительные данные к записям таблицы wp_comments;
    • wp_terms — хранит термины элементов таксономии базы данных;
    • wp_termmeta — дополнительная информация о записях таблицы wp_terms;
    • wp_term_taxonomy — хранится основная информация таксономии;
    • wp_term_relationships — таблица связи записей таблицы wp_posts c элементами таксономии из таблицы wp_term_taxonomy.

    Более подробное описание дальше, а пока их содержимое таблиц и их связи.

    Таблицы базы данных WordPress.

    А теперь пройдемся подробней по устройству таблиц.

    wp_options весьма важна, т.к. в ней находятся все настройки сайта. Устроена очень просто: идентификатор записи таблицы, ключ настройки, значение настройки и поле типа string, указывающая загружается ли эта опция автоматически функцией wp_load_alloptions(). Связей с другими таблицами нет.

    Название wp_users говорит само за себя — здесь находится информация о зарегистрированных пользователях сайта — логин, хэш пароля, email пользователя, его статус и т.п. Здесь тоже все достаточно прозрачно. На нее ссылаются таблицы wp_usermeta, wp_posts и wp_comments.

    В таблице wp_usermeta хранится дополнительная информация о пользователе. Организация также не сложная, кроме полей идентификатора записи и внешнего ключа на таблицу wp-users, присутствует ключ и значение дополнительной информации о пользователе.

    Таблица wp_links устарела и в современных версиях движка не используется.

    Таблица wp_posts весьма важная и большая, как по составу полей, так и по количеству записей. По очередности описания таблиц должна быть последней, но она настолько важна, что помещена здесь. А пока замечу, на любой контент: страницы, примечания, медиафайлы, комментарии и т.д. есть запись в этой таблице. Каждая запись имеет ссылку на автора таблицы wp_users. На записи этой таблицы ссылаются wp_postmeta, wp_comments, wp_term_relationships.

    В таблице wp_postmeta содержится дополнительная информация о записях. Устроена аналогично упомянутой таблице wp_usersmeta.

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

    wp_commentmeta — хранится дополнительная информация, связанная с комментарием. Устроена аналогично таблице wp_usersmeta.

    wp_terms — здесь хранится основная информация о терминах таксономии, например, рубрики, метки, меню. Поля: первичный ключ записи таблицы, идентификатор элемента таксономии и его значение, название, используемое в URL, по полю term_group можно группировать элементы. К базовым терминам WordPress относятся:

    • category — рубрики записей;
    • post_tag — метки записей;
    • post_format — форматы записей;
    • nav_menu — элементы меню.

    wp_termmeta — дополнительная информация об элементах таксономии. Устроена просто: первичный ключ, ссылка на запись таблицы wp_terms, строковый идентификатор дополнительной информации и его значение.

    wp_term_taxonomy — основная таблица таксономии, здесь приводятся данные об использовании ее элементов, в том числе каждому элементу определяется его термин из таблицы wp_terms. Например, элемент category, определяет рубрику записей и используется неоднократно. Здесь как раз и хранятся данные о каждом использовании элемента category в WordPress, это его описание, ссылка на родительский элемент, общее количество ссылок на применяемый элемент;

    wp_term_relationships связывает контент WordPress, хранящийся в таблице wp_posts с элементами таксономии. Все очень просто, поле object_id ссылается на запись таблицы wp_posts, а поле term_taxonomy_id на запись таблицы wp_term_taxonomy. Таким образом элементы таксономии связываются с контентом WordPress.

    Естественно, база данных WordPress не обойдена вниманием ее API. Существует множество методов взаимодействия с БД. Основным его элементом является объект $wpdb. Узнать о нем вы можете по этой ссылке.