En la primera parte de esta serie sobre datos en WordPress, proporcioné una descripción general de las tablas de la base de datos de WordPress y las tablas que se utilizan para almacenar qué tipo de datos. En esta segunda parte, describiré cómo WordPress gestiona las relaciones entre esos datos..
Como verá, WordPress utiliza tres tipos de relación de datos: uno a uno, uno a muchos y muchos a muchos. Veré cada uno de estos y lo que significan para su sitio de WordPress.
Una relación uno a uno es la relación más simple de todas: simplemente significa que un registro está relacionado solo con otro. Los datos como este generalmente se almacenan en una tabla (aunque no siempre, como veremos más adelante en este tutorial).
Los ejemplos de relaciones uno a uno en WordPress incluyen:
La lista podría continuar, pero el punto principal es que cualquiera de los dos registros que se almacenan en diferentes campos en una fila de una tabla tienen una relación de uno a uno.
Sin embargo, las relaciones individuales son el tipo menos interesante de relación de base de datos. Así que sin más preámbulos, pasemos a un tipo de relación que WordPress usa mucho - uno a muchos.
La relación de uno a muchos es muy común en las bases de datos, y es lo que hace que una base de datos sea más poderosa que una tabla "plana", como una hoja de cálculo. Esto ocurre cuando un registro tiene una relación con más de otro registro.
En WordPress, la mayoría de las relaciones uno a varios se crean mediante un enlace entre dos tablas de base de datos, utilizando un identificador único para unir las dos. Así, por ejemplo, la ID del mensaje
registro será único para cada puesto almacenado en el wp_posts
mesa, pero también se utilizará en el wp_comments
tabla para identificar en qué publicación se envió cada comentario. Esto significa que cada ID del mensaje
El valor aparecerá solo una vez en el wp_posts
mesa, pero podría aparecer varias veces (o no aparecer) en la wp_comments
mesa.
Algunos otros ejemplos en WordPress incluyen:
Una vez más, la lista continúa. Como este es un tema importante en WordPress, echemos un vistazo a las relaciones de uno a muchos con más detalle..
La tabla que está conectada a la mayoría de las otras tablas es la wp_posts
tabla, y la mayoría de las relaciones que crean estas conexiones son relaciones de uno a muchos.
Como se puede ver en el siguiente diagrama, el wp_posts
tabla está vinculada a otras cuatro tablas:
Además de esto, las publicaciones también pueden tener una relación de uno a muchos con otras publicaciones, en forma de archivos adjuntos o páginas principales.
Echemos un vistazo a estas relaciones con más detalle..
Como se explicó anteriormente, los datos almacenados en el wp_posts
la tabla puede tener una relación de uno a varios con otros datos en la misma tabla; sin embargo, esta relación no es entre lo que usted pensaría como publicaciones, sino que se da entre publicaciones y archivos adjuntos o páginas y otras páginas. Después de todo, los archivos adjuntos y las páginas son tipos de mensajes..
Un archivo adjunto almacenado en el wp_posts
mesa tendrá un registro en el post_parente
campo, que será el ID de la publicación a la que se adjunta el archivo adjunto (con disculpas por la repetición). Esta es una relación de uno a muchos porque cada archivo adjunto solo tendrá un padre, mientras que cada publicación podría tener muchos archivos adjuntos. Esto se aplicará incluso si ha utilizado el Administrador de medios para agregar un archivo adjunto a otra publicación: solo la publicación a la que se agregó originalmente se almacenará en la base de datos como su principal..
Las publicaciones también pueden tener una relación de uno a varios con otras publicaciones cuando una página se especifica como la principal de otra. El registro se almacena contra la página secundaria, en el post_parente
campo - de nuevo este será el ID del mensaje
de la página principal. Esta es una relación de uno a varios porque las páginas principales pueden tener muchas páginas secundarias, pero las páginas secundarias solo tendrán una página principal.
Al pensar en las relaciones entre publicaciones como esta, es importante recordar que al considerar el manejo de datos de WordPress, las publicaciones no son lo que normalmente se denomina publicaciones. Incluyen páginas, archivos adjuntos y otros tipos de publicaciones, todos los cuales se almacenan en el wp_posts
mesa.
Publicar metadatos se almacena en su propia tabla wp_postmeta
. Esta tabla solo incluye cuatro campos - para el ID del mensaje
, la meta_id
, La clave y el valor. Una publicación puede tener muchos elementos de metadatos de publicación asociados, pero cada registro de metadatos de la publicación solo se vinculará a una publicación..
Los comentarios también tienen su propia mesa., wp_comments
. Cada comentario se relacionará con solo una publicación, mientras que cada publicación puede tener múltiples comentarios almacenados en su contra. Al igual que con todas las otras tablas vinculadas a wp_posts
, la ID del mensaje
campo se utiliza para el enlace (en el comentario_post_id
campo en wp_comments
).
los wp_comments
La tabla tiene 15 campos por defecto, para almacenar datos sobre el autor, la dirección de correo electrónico del autor, el comentario en sí y su estado de aprobación. También está vinculado a la wp_users
Tabla, como veremos en la siguiente sección..
Los comentarios también tienen sus propios metadatos, almacenados en otra tabla, a la que llegaré en breve..
Cada publicación se adjunta a la wp_users
mesa a través de la user_id
registro, que se almacena en el post_autor
campo en wp_posts
. Esta es una relación de uno a varios porque cada publicación tiene un solo autor, pero cada usuario puede ser el autor de varias publicaciones..
La relación entre las publicaciones y los usuarios es una rom diferente a la de las publicaciones y los comentarios o metadatos, ya que su naturaleza es de un usuario, varias publicaciones, no una publicación de múltiples comentarios o registros de datos mete. Es por esto que la user_id
campo proporciona el enlace en lugar de la ID del mensaje
campo.
También hay tres relaciones que son de uno a muchos y no involucran publicaciones. Dos de estos involucran metadatos: la relación entre los comentarios y sus metadatos, y los usuarios y sus metadatos..
WordPress almacena metadatos adicionales sobre los usuarios en el wp_usermeta
mesa. Generalmente se usa para datos no estándar sobre usuarios, como metadatos sobre superadmins en una instalación multisitio y metadatos sobre los colores de administrador que un usuario ha seleccionado si estos no son los predeterminados..
La mayoría de los datos de los usuarios estarán en el wp_users
mesa. Las dos tablas están vinculadas a través de la user_id
El campo y un registro de usuario tendrán varios elementos de metadatos asociados, mientras que cada elemento de metadatos solo se aplicará a un usuario..
Una vez más, la mayoría de los datos sobre los comentarios se almacenan en el wp_comments
tabla junto con el comentario en sí, pero el wp_commentmeta
La tabla se utiliza para almacenar metadatos adicionales, como los datos creados por complementos como Akismet. La relación es la misma que entre usuarios y usermeta..
La relación final de uno a muchos es entre comentarios y usuarios. los wp_comments
tabla incluye el user_id
campo, que se puede usar para almacenar la ID de usuario cuando un usuario que ha iniciado sesión ha publicado un comentario. Tenga en cuenta que este campo no es obligatorio para aquellos sitios donde los usuarios no tienen que iniciar sesión para comentar.
El tipo final de relación de base de datos es la relación de uno a muchos, donde el enlace muchos va en ambos sentidos. Esto solo se usa una vez en WordPress, para términos de taxonomía (incluidas categorías y etiquetas, ya que son simplemente taxonomías). Una publicación puede tener muchos términos asignados y un término puede asignarse a varias publicaciones.
WordPress crea esta relación de la misma manera que cualquier otra base de datos con una base de datos de muchos a la vez: mediante el uso de una tabla provisional que vincula las dos tablas con los datos clave. Este es el wp_term_relationships
mesa, que une el wp_posts
mesa al wp_term_taxonomy
mesa.
Nota: esta tabla también vincula el wp_links
mesa al wp_term_taxonomy
La tabla, ya que los enlaces se comportan de la misma manera que las publicaciones, en breve iré a los enlaces..
Esto se explica más fácilmente mirando primero las dos tablas exteriores. los wp_posts
La tabla contiene datos de cada publicación, mientras que wp_term_taxonomy
la tabla contiene datos sobre cada término, incluida la taxonomía en la que se encuentra y su ID.
Para crear un enlace entre un término en el wp_term_taxonomy
mesa y un post en el wp_posts
mesa, WordPress crea un registro en el wp_term_relationships
mesa, que incluye el ID del mensaje
y el term_id
(almacenado como object_id
y term_taxonomy_id
respectivamente en el wp_term_relationships
mesa). Esto significa que el wp_term_relationships
La tabla puede incluir varios registros para cada publicación y varios registros para cada término, creando la relación de muchos a muchos.
El siguiente diagrama muestra cómo funciona esto:
En el ejemplo anterior, las publicaciones tienen los siguientes términos:También puede verlo de otra manera, por ejemplo, el término 3 se relaciona con las publicaciones 1 y 4.
Sin embargo las cosas no se detienen ahí. Hay una cuarta mesa, la wp_terms
mesa. Esto contiene datos sobre cada término, a saber, el nombre, el slug y la descripción de cada término. Cada término tiene un solo registro en el wp_terms
tabla, por lo que la relación entre eso y la wp_term_taxonomy
mesa es en realidad uno a uno Hablando teóricamente, no hay razón para que estos datos no puedan mantenerse en el wp_term_taxonomy
mesa, pero no es.
Los enlaces, o el blogroll, es una característica de WordPress que es mucho menos prominente de lo que era antes. De hecho, ya que los enlaces de la versión 3.5 se han desactivado en el administrador de forma predeterminada; Sin embargo, sí tienen su propia mesa: la wp_links
mesa.
Esto es muy similar al wp_posts
mesa. Después de todo, los enlaces son un tipo de contenido muy similar al de las publicaciones) y tienen la misma relación de muchos a muchos con los términos de taxonomía.
Como hemos visto, WordPress utiliza una variedad de relaciones para vincular datos en 10 de sus 11 tablas de base de datos. La única mesa que no he mencionado aquí es wp_options
, porque eso no está vinculado a ninguna otra tabla, ya que simplemente almacena datos sobre el sitio, en lugar de sobre el contenido. Cubriré eso con más detalle más adelante en esta serie..
Al comprender las relaciones de uno a uno, de uno a muchos y de muchos a muchos en WordPress, esto puede ayudarlo a identificar formas de manipular sus datos y escribir consultas personalizadas en su tema y / o complementos..
En la siguiente parte de esta serie, cubriré los tipos de contenido con más detalle, observando los tipos de contenido almacenados en la base de datos de WordPress y las similitudes y diferencias entre ellos..