Es algo habitual en los gestores de contenidos (CMS), tener la posibilidad de categorizar o clasificar el contenido con el objetivo de poder acceder de forma más sencilla a la información de un mismo tipo. Para ello, se define un tipo de dato, categoría, que almacenará los distintos términos que servirán para clasificar el contenido. Es  frecuente que también se quiera tener una jerarquía de términos de categoría por lo que este tipo de dato tendrá que tener capacidad de referenciar términos de categoría para indicar cual es su padre. Además, será necesario otro tipo de dato, categoria_relacion, que nos relacione los términos de categoría con los objetos que se quieren clasificar.

En WordPress, desde la versión 2.3, se introduce la estructura para taxonomías mediante 3 tablas:

  • wp_terms. Que almacena la información relativa a términos.
  • wp_term_relationships. Relaciona términos con objetos. Mediante el id del término y del objeto, se indica que el objeto está etiquetado con el término.
  • wp_term_taxonomy. Los términos por sí solos no son una taxonomía. En esta tabla es donde se relacionan los términos dentro de una taxonomía. Indica si el término tiene padre y cuánto contenido hay marcado con el término.
Esquema BBDD WordPress
En Drupal, tenemos una estructura algo más compleja para representar las taxonomías en el sistema. Se define un vocabulario, almacenado en la tabla taxonomy_vocabulary, donde se indica los distintos tipos de jerarquía que existen. Esto en WordPress se indica sólo en un campo de la tabla wp_terms. A este vocabulario pertenecen términos existentes en la tabla term_data. Con taxonomy_term_hierarchy controlamos la estructura de jerarquía de los términos de un vocabulario. Con taxonomy_index relacionamos los nodos con los términos de forma que tenemos todos los nodos que están etiquetados o categorizados con un término.

Esquema BBDD Drupal