Database
 sql >> Base de Dados >  >> RDS >> Database

WordPress – Nos bastidores, Parte 2


Na Parte 1 desta série, demonstrei como instalar o WordPress localmente e como importar um banco de dados do WordPress para o Vertabelo. Neste artigo, examinaremos mais detalhadamente as tabelas no banco de dados do WordPress.

Uma rápida olhada no modelo de banco de dados do WordPress e no painel


Na parte anterior, importei o banco de dados do WordPress para nossa ferramenta de modelagem de banco de dados online. Para o registro, a estrutura do banco de dados é a seguinte:




Há alguns fatos importantes sobre o modelo de banco de dados do WordPress que você deve entender antes de começarmos:
  • Cada site WordPress usa exatamente a mesma estrutura de banco de dados. Ele contém 11 tabelas e todo site WordPress as usa em segundo plano. A maioria dos plugins do WordPress também usa o banco de dados sem nenhuma alteração no modelo do banco de dados. O modelo deve ser flexível o suficiente para acomodar todos os diferentes plugins. Obviamente, os criadores de plug-ins podem adicionar tabelas personalizadas para plug-ins específicos se a estrutura de dados for significativamente diferente ou se o plug-in armazenar grandes quantidades de dados.
  • O banco de dados do WordPress não possui restrições de chave estrangeira . Isso se deve ao fato de o WordPress usar o mecanismo de armazenamento MyISAM, que não suporta chaves estrangeiras. As tabelas contornam isso com atributos que armazenam valores desconectados do tipo “chave estrangeira”, de modo que a restrição de chave estrangeira não será verificada pelo banco de dados. Por exemplo, o post_author atributo no wp_posts table é uma "referência" para o atributo "ID" no wp_users tabela.
  • A maioria das tabelas usa uma chave primária de coluna única. Eles são nomeados simplesmente como "ID" (no wp_users e os wp_posts table) ou meta_id /umeta_id (nas meta tabelas:wp_postmeta , wp_commentmeta e wp_usermeta ), ou uma combinação do nome da tabela e o sufixo “_id” (todas as outras tabelas). A única exceção a essas regras são os wp_term_relationships table, onde a chave primária consiste nos dois atributos:object_id e term_taxonomy_id . Os atributos que são chave primária ou parte de uma chave primária são do tipo bigint(20). As chaves primárias de atributo único também têm a propriedade de incremento automático definida como "Sim".

Postagens e Páginas


A principal razão para usar o WordPress é criar e manipular conteúdo e apresentá-lo ao público. Para isso, o WordPress nos fornece dois tipos de conteúdo:Páginas e Postagens .



Páginas são usados ​​para exibir conteúdo estático . Eles não usam tags ou categorias e não são listados por data. Além disso, eles não permitem comentários ou compartilhamento de mídia social. As páginas podem ter subpáginas. Sobre nós páginas são bons exemplos desse tipo.

Por outro lado, Postagens são listados por data e podem ser organizados usando categorias e etiquetas . As postagens podem ser usadas em feeds RSS, graças à sua ordem cronológica. Posts não podem ter “subposts”, mas comentários e compartilhamentos nas redes sociais são possíveis. Posts são essencialmente posts de blogs. Isso é compreensível, já que o WordPress evoluiu de uma plataforma de blogs.

A tabela principal por trás do conteúdo em qualquer página do WordPress é chamada de wp_posts :



O WordPress usa o wp_posts table para armazenar páginas, postagens e anexos. Podemos olhar para esta tabela como o núcleo da nossa página, o local onde a maior parte do conteúdo é armazenada. É importante ressaltar que os anexos são realmente armazenados em disco e o registro no wp_posts table mantém mais informações sobre ele (quem o carregou e quando, etc.).

Os campos no wp_posts tabela são:

  • post_author – uma referência aos wp_users tabela, denotando o autor da postagem.
  • post_date – a data e hora em que o registro foi inserido na tabela.
  • post_date_gmt – a data e hora GMT/UTC em que um registro foi inserido na tabela.
  • post_content – o conteúdo real da postagem.
  • post_title – o título da postagem.
  • post_excerpt – um resumo do conteúdo.
  • post_status – o status da postagem atual. O WordPress usa 8 status padrão:“Publicar”, “Futuro”, “Rascunho”, “Pendente”, “Privado”, “Lixeira”, “Rascunho automático” e “Herdar”.
  • comment_status – ativa e desativa comentários em uma única postagem ou em uma página inteira. Existem dois valores possíveis:"aberto" e "fechado".
  • ping_status – identifica se uma postagem permite pingbacks e trackbacks. Curtir comment_status , ele pode conter apenas os valores "aberto" e "fechado".
  • post_password – a senha usada para visualizar a postagem (opcional).
  • post_name – o URL legível por humanos de um post_title .
  • to_ping – uma lista de URLs para os quais o WordPress deve enviar pingbacks, delimitados por “\n”.
  • pinged – uma lista de URLs para os quais o WordPress enviou pingbacks, delimitados por “\n”.
  • post_modified – a data e hora mais recentes em que uma postagem foi modificada.
  • post_modified_gmt – a data GMT/UTC para post_modified .
  • post_content_filtered – usado por plugins para armazenar em cache transformações de conteúdo de postagem caras.
  • post_parent – faz referência à postagem principal.
  • guid – Identificador Único Global para uma postagem; seu URL permanente.
  • menu_order – usado para ordenação de conteúdo.
  • post_type – o tipo de registro. Ele pode conter os valores "post", "page", "attachment" ou tipos personalizados definidos pelo usuário.
  • post_mime_type – o tipo de arquivo enviado definido apenas para postagens com post_type = attachment . Ele pode conter valores como “image”, “application/pdf” e “application/msword”.
  • comment_count – o número de comentários, pingbacks e trackbacks da postagem.

Aqui está um instantâneo dos wp_posts tabela depois de adicionar a página “Sobre Nikola Tesla”:



Quando analisamos os wp_posts tabela, podemos ver algumas versões da nossa página. O registro com o ID = 1 tem post_status = publish , o que significa que a postagem fica visível para todos. O comment_status = closed e ping_status = closed denota que comentários e pings estão desabilitados para este post.

Quaisquer informações adicionais sobre postagens e páginas são mantidas no wp_postmeta tabela:



As colunas desta tabela são as seguintes:

  • meta_id – a chave primária da tabela.
  • post_id – uma referência ao wp_posts tabela.
  • meta_key – uma descrição de um meta_value atributo.
  • meta_value – o valor real armazenado.

O wp_postmeta tabela é onde todas as informações que não podem ser salvas no wp_posts tabela é armazenada. Ele é armazenado como pares de valores-chave, uma técnica geralmente chamada de entity-attribute-value (EAV). A tabela pode ser usada por plugins para necessidades personalizadas.

Taxonomias do WordPress


Taxonomia é uma palavra chique que basicamente se refere a agrupar coisas. O WordPress possui algumas taxonomias integradas para agrupar postagens. Por exemplo, categorias e etiquetas são taxonomias internas do WordPress. Você também pode adicionar suas próprias taxonomias personalizadas ao WordPress.

As taxonomias e seus termos são mantidos em tabelas chamadas wp_terms , wp_term_taxonomy e wp_term_relationships .

Os wp_terms table armazena uma lista de termos usados ​​para classificar objetos em seu site WordPress:



Esta tabela contém todos os nomes de tags e categorias, bem como termos de nossas taxonomias personalizadas. Os atributos são os seguintes:

  • term_id – a chave primária da tabela.
  • name – o nome do termo.
  • slug – o URL de name .
  • term_group – usado para agrupar termos.

Aqui está o conteúdo dos wp_terms tabela:



Os termos são atribuídos a taxonomias com a ajuda do wp_term_taxonomy tabela:



Os atributos na tabela são:

  • term_taxonomy_id – a chave primária da tabela.
  • term_id – a referência aos wp_terms tabela.
  • taxonomy – o nome da taxonomia.
  • description – uma descrição de um termo nessa taxonomia específica.
  • parent – uma referência ao termo pai no wp_terms tabela.
  • count – o número de objetos no wp_posts tabela que usa esse termo nesta taxonomia.

O wp_term_taxonomy tabela nos permite reutilizar o mesmo termo em diferentes taxonomias. Observe que o registro em que term_id = 1 tem taxonomy = category , enquanto os outros registros têm taxonomy = post_tag .



Para relacionar objetos salvos no wp_posts e o wp_term_taxonomy tabelas, o WordPress usa o wp_term_relationships tabela:



Observe que esta é a única tabela no modelo que possui uma chave composta por mais de um atributo.

Os wp_term_relationships tabela tem os seguintes atributos:

  • object_id – uma referência ao wp_posts tabela.
  • term_taxonomy_id – uma referência ao wp_term_taxonomy tabela.
  • term_order – o termo pedido para um objeto específico.



Temos seis registros aqui que conectam seis registros do wp_term_taxonomy tabela com a postagem (object_id = 6 ).

Comentários e modelagem de dados do WordPress


Conseguimos colocar algum conteúdo em nossa página do WordPress. Isso é bom, mas na maioria dos casos queremos obter feedback do público. E esse é o papel do recurso de comentários.

Para visualizar os comentários nas postagens, podemos simplesmente usar “Deixe um comentário” ou clicar em “X Comentário” (onde X representa o número de comentários da postagem).



Nosso primeiro post já tem um comentário. Ao clicarmos, veremos que é um comentário automático causado pelo pingback. Vamos adicionar mais um comentário a essa postagem:



Agora vemos dois comentários para nosso post, mas o que está por trás de tudo isso no banco de dados?

Você pode adivinhar pelo nome da tabela que o wp_comments table é usado para armazenar comentários em nossa página do WordPress:



Os atributos são em sua maioria autoexplicativos, mas ainda vamos dar uma olhada em alguns deles.



O comment_post_ID é uma referência ao wp_posts tabela; denota qual postagem recebeu comentários. Para o primeiro comentário, podemos ver que na verdade foi pingback e que o “autor” é outro post. Para o segundo comentário, podemos ver que eu sou o autor. Observe também o comment_agent contém algumas informações básicas sobre o sistema e o computador usado para postar um comentário.



A principal ideia por trás das três metatabelas no modelo é armazenar dados que não queremos armazenar em nossa tabela primária. O wp_commentmeta está relacionado aos wp_comments tabela da mesma maneira que o wp_postmeta tabela está relacionada ao wp_posts tabela.

Vendo usuários do WordPress


Depois que nossa página estiver online, qualquer pessoa poderá vê-la. Os usuários do WordPress são aqueles que, de acordo com seu status de permissão, podem fazer alterações em nosso site e seu conteúdo.

Agora vamos dar uma olhada no wp_users e o wp_usermeta tabelas no banco de dados MySQL.




Como esperado, os wp_users A tabela mostrada acima armazena dados básicos de todos os usuários registrados em nosso site WordPress. Observe que o user_pass está criptografado e que NewUser tem a user_activation_key atributo preenchido enquanto edrkusic tem esse campo vazio.

Enquanto os atributos listados em wp_users table são o que esperaríamos em qualquer site WordPress, o wp_usermeta table é usado para armazenar valores que podem ser específicos para um determinado projeto:




Por exemplo, observe que o registro com umeta_id = 25 contém o valor “alguma informação biográfica” , o mesmo texto que digitamos no painel ao editar NewUser. O user_id atributo nesse registro tem valor 2 , que corresponde ao ID do NewUser no wp_users tabela. Obviamente, o user_id é uma referência aos wp_users tabela.

Links e opções no WordPress




A ideia por trás dos wp_links table é para armazenar links para outros sites:



Ter links para outros sites era muito popular no início da era dos blogs; hoje em dia é cada vez menos usado. A partir da versão 3.5 do WordPress, a administração de links foi removida da interface de administração. Ainda assim, esta tabela é mantida para fornecer compatibilidade com versões mais antigas.

As wp_options table armazena dados sobre a instalação do WordPress, configuração do site, tema, plugins e widgets:



Também é usado para armazenar dados temporários em cache. A lógica EAV também está presente nesta tabela, pois está em wp_usermeta , wp_postmeta e wp_commentmeta . O atributo option_name desempenha o papel da chave, enquanto o atributo option_value é o seu valor correspondente. Os outros dois atributos na tabela são o atributo de chave primária option_id e autoload , que controla se uma opção é carregada automaticamente do banco de dados.

Avaliando o modelo de banco de dados do WordPress


O modelo de banco de dados por trás do WordPress não segue várias boas regras e convenções de design de banco de dados. Quando estamos projetando um banco de dados para um propósito específico, conhecendo antecipadamente todas as funcionalidades desejadas, podemos seguir todas essas regras. Mas o WordPress precisa cobrir qualquer coisa que qualquer um possa ter em mente, então sacrificar chaves estrangeiras e usar EAV é algo que deve ser feito. Eu nomearia o atributo ID da mesma forma em todas as tabelas e faria o mesmo com as “chaves estrangeiras”. Por exemplo, eu não usaria post_author nos wp_posts table, mas eu ficaria com users_id . Fora isso, devo concordar que o banco de dados WordPress é realmente um ótimo modelo para seu propósito.

O que você acha? Deixe-nos saber na seção de comentários.