Modelo de datos de Drupal 5.7

Modelo de datos de Drupal 5.7 y Content Construction Kit Autor: Marc Bria Ramírez [email protected] Fecha: 15 Junio 2008 Revisión: 1.2 Licencia

0 downloads 126 Views 2MB Size

Recommend Stories


57
k ˜ OFICINA ESPANOLA DE PATENTES Y MARCAS 19 k kInt. Cl. : A61K 31/57 11 N´ umero de publicaci´on: 2 150 497 7 51 ˜ ESPANA //(A61K 31/57, A61

Story Transcript

Modelo de datos de Drupal 5.7 y Content Construction Kit

Autor:

Marc Bria Ramírez [email protected]

Fecha:

15 Junio 2008

Revisión:

1.2

Licencia:

CC-by-nc-sa

Modelo de datos “Drupal 5.7” con CCK

Página 2

Índice de contenido Introducción......................................................................................................................................................3 Modelo de Datos de Drupal..............................................................................................................................5 Diagrama Entidad­Relación.........................................................................................................................7 Las tablas de Nodos................................................................................................................................7 Las tablas de Vocabulario.....................................................................................................................13 Las tablas de Usuario y permisos..........................................................................................................16 Otras tablas de interés...........................................................................................................................19 Diccionario de Datos.................................................................................................................................22 Estrategias de migración.................................................................................................................................54 Migración “directa” y post procesado en Oracle........................................................................................54 Scripts “al uso”..........................................................................................................................................55 Módulos de Drupal (Views + CSV export)................................................................................................55

Modelo de datos “Drupal 5.7” con CCK

Página 3

Prefacio El siguiente texto es una revisión de un documento previo, escrito a petición de la empresa “ACME Inc.” para facilitar la migración de un desarrollo Drupal la plataforma .NET/Oracle de la corporación. Como el suspicaz lector sospechará, mantenemos confidencialidad sobre la identidad y datos de dicha empresa, pero se ofrece a la comunidad el estudio al considerar que el análisis realizado puede ser de ayuda en: 1. Futuras migraciones: En aquellos casos en los que se topen con un equipo de IT miope, (incapaz de apreciar la belleza de el mencionado CMS), asustadizo (por el hecho de trabajar con desarrollos libres), perezoso (al no querer aprender nada nuevo), perjuicioso (convencidos de que los desarrollos libres carecen de calidad, son inseguros...) y/o rígido (al ser incapaces de emplear desarrollos más allá de lo dictaminado por la coorporación). 2. Comprensión de la herramienta: En aquellos casos en los que sea necesario formar a nuevos desarrolladores o se busque ahondar en la manera en que la herramienta trata sus datos. Como reza su título, este documento versa sobre Drupal 5.7, por lo que la validez de lo descrito está sujeta a futuros cambios. Este texto se ha escrito bajo una licencia Creative Commons 2.5 en la que se obliga al Reconocimiento de la obra, no se permite su uso Comercial y admite obras derivadas siempre y cuando se compartan bajo la misma licencia. Así mismo, agradeceríamos que informen al autor si emplean o mejoran esta obra. Esperamos disfruten con estas líneas, tanto como hemos disfrutado nosotros al escribirlas.

Modelo de datos “Drupal 5.7” con CCK

Página 4

Introducción Drupal es un CMF (Content Management Framework) explotado en este proyecto en su faceta de RAD (Rapid Application Development). Drupal y sus módulos garantizan un rendimiento eficaz, ofreciendo un entorno seguro y escalable, como lo constatan importantes desarrollos internacionales en distintas áreas1. La enorme versatilidad de este Framework de Gestión de Contenidos (CMF) se sustenta sobre dos pilares esenciales: El primero de ellos es que ha sido concebido desde sus más tiernos inicios como una herramienta modular, en la que añadir nuevas funcionalidades puede resultar tan simple como añadir nuevos módulos. El otro motivo consiste en abstraer las unidades básicas de contenido que gestiona en lo que denomina “Nodos”. Los Nodos pueden “instanciarse” en forma de páginas web, eventos de calendario, noticias o cualquier conjunto de datos y metadatos que agrupados entendemos como la información a administrar. Esta versatilidad es la principal virtud de Drupal y en el contexto de análisis que nos ocupa, también presenta un ligero inconveniente, pues si bien es cierto que el desarrollador puede prestar mayor atención a los requisitos funcionales del cliente, el modelo de datos suele perder su tradicional relevancia y –al menos inicialmente– queda “oculto” tras el sistema. Un posterior estudio de la base de datos en la que reside Drupal, muestra que la generación automática de tablas y atributos que realiza el sistema no es sólo efectiva, sino que se asemeja a la que realizaría un buen analista de bases de datos. Como hemos dicho, al trabajar sobre Drupal, el desarrollo se eleva a un nivel más cercano al usuario ya que el desarrollador puede implementar nuevas funcionalidades mediante la activación de módulos (existentes o creados para la ocasión), que permiten “prototipar” o adaptar rápidamente la aplicación a necesidades específicas o incluso cambiantes.

1

Warner Bros Site: http://www.warnerbrosrecords.com/ FedEx News: http://news.van.fedex.com/ Sony BGM Myplay: http://myplay.com/ The NewYork Observer: http://www.observer.com/ MTV UK: http://www.mtv.co.uk/ Flixya Sharing Site: http://www.flixya.com/ Universal Music: http://www.universalmusic.com/ Moto GP: http://www.motogp.com Nike Media: http://nikemedia.com

Modelo de datos “Drupal 5.7” con CCK

Página 5

Uno de estos módulos, posiblemente el más famoso de ellos, responde a las siglas de “CCK” (Content Construction Kit2) y resulta de suma importancia para este estudio, pues es el encargado de crear las entidades dónde almacenaremos los nuevos tipos de Nodos. Este módulo normaliza las tablas, creando múltiples entidades cuando el atributo puede tomar varios valores o cuando se asignan campos del mismo tipo semántico en distintos nodos (semantic meaning) y unifica los atributos en una sola tabla cuando las propiedades del nodo son únicas. Conscientes de que toda migración de una aplicación a un nuevo contexto obliga a hacer explícito su modelo de datos, para su comprensión y sobre todo para permitir que la nueva plataforma conserve la información ya almacenada, el siguiente informe: 1. Detalla el modelo de datos de Drupal 5.7 en el contexto concreto de la aplicación “Coyote Application” de ACME Inc. 2. Y plantea varias propuestas de migración a Oracle, el gestor de base de datos institucional de ACME Inc. Cabe comentar que la versión de Drupal empleada hace uso de una base de datos no relacional. Si bien es cierto que MySQL 5 ha incorporado recientemente estas capacidades, Drupal 5.7 no hace uso de ellas. Así pues, las relaciones entre entidades las establece la lógica de la aplicación y no la base de datos que actúa como mero repositorio, consultado y actualizado en base a los índices y las restricciones en los atributos de las entidades. Este informe describe de manera general estas relaciones entre tablas, mediante Diagramas Entidad-Relación y presenta los atributos de estas exhibiendo el Diccionario de Datos de Drupal. Dado el propósito de este documento, en todo momento se hace especial hincapié en los datos y estructuras de “Coyote Application” que deben ser trasladados al nuevo sistema. Para este análisis se han empleado herramientas de ingeniería inversa como DBDesigner (de Fabforce) que facilitan la extracción de relaciones entre índices primarios y foráneos en base a sus nomenclaturas y datos. Esta primera extracción ha sido profundamente estudiada y contrastada por nuestros expertos y enriquecida con la documentación previamente suministrada por algunos desarrolladores de la comunidad de Drupal. 2

El artículo de difusión de Robert Duglas en “What is the Content Construction Kit? A View from the Database” permite una primera aproximación a los CCK y su efecto en la base de datos. Fuente on-line: http://www.lullabot.com/articles/an_introduction_to_the_content_construction_kit

Modelo de datos “Drupal 5.7” con CCK

Página 6

Modelo de Datos de Drupal Ryan Constantine, desarrollador y consultor de Drupal, realizó en el 2007 un estudio similar al que se plantea en este documento, ofreciendo el siguiente diagrama entidad-relación para la versión 5.7 del aplicativo3.

Fig 1: Diagrama ER de Drupal 5.7 por Rayan Constantine. Fuente original: http://drupal.org/files/issues/Drupal5RC1_Database_0.png

Rayan acompañaba este diagrama con la siguiente leyenda: ●

Gris: Tablas sin relaciones.



Púrpura: Tablas con archivos de instalación independientes que no enlazan con la tabla NODE.



Azul cían: Tablas relacionadas con la gestión de términos.



Rosa claro/Púrpura: Tablas para la gestión de vocabularios.



Rosa brillante: Tablas para la gestión de filtros.



Azul: Tablas para el control de permisos.



Marrón claro: Tablas con archivos de instalación independientes que no enlazan con al tabla NODE.



Verde: Tablas del núcleo que originan claves primarias (autoincrementadas en esta tabla y usadas como claves foráneas en otras)



3

Amarillo: Tablas del núcleo que usan claves foráneas como sus claves primarias.

Discusión de Rayan Constantine con la comunidad Drupal: http://drupal.org/node/79874

Modelo de datos “Drupal 5.7” con CCK

Página 7

La agrupación de Rayan4 desvela los cinco grupos de tablas sobre las trabaja Drupal que ofrecen una buena primera aproximación al modelo:



Nodos: Que mantienen datos sobre el contenido a gestionar.



Vocabularios: Que permite asociar taxonomías a los contenidos (nodos).



Usuarios y permisos: Con datos sobre los usuarios del sistema, sus roles y sus permisos.



Cache: Para agilizar la creación de contenidos dinámicos mediante su reutilización.



Otros: Con datos de distinta índole sobre y para el correcto funcionamiento del sistema.

Para mayor claridad, en las siguientes páginas analizamos cada uno de estos bloques por separado.

4

Hasta la versión 6 han surgido varios esfuerzos por mantener documentado el modelo de datos de Drupal, como por ejemplo: http://cvs.drupal.org/viewvc.py/drupal/contributions/docs/developer/database/ http://webdevgeeks.com/schemaspy/tables/node.html http://drupal.org/node/22754 Pero históricamente han resultado un fracaso porque Drupal, para no depender de ningún gestor en concreto, abstrae la base de datos y el modelo se debía mantener de forma independiente. A partir de Drupal 6, se incluye la función “hook_schema” (y el módulo schema) obligando a los programadores del núcleo y de los módulos de terceros a definir y describir sus tablas con el mismo rigor con el que deben describir sus APIs. Este cambio garantiza un futuro prometedor con un modelo de datos completamente documentado y siempre actualizado.

Modelo de datos “Drupal 5.7” con CCK

Página 8

Diagrama Entidad­Relación En este apartado se expone del diagrama ER de la aplicación de manera fraccionada para ofrecer así una visión didáctica y detallada. La primera sección describe la tabla Nodo y sus relaciones, para continuar con el grupo de tablas de Vocabularios, seguir con la gestión de Usuarios y concluir con Otras tablas que consideramos meritorias de mención. Se obvia intencionadamente el grupo de tablas de Cache, dado el nulo interés hacia estas en un proceso de migración.

Las tablas de Nodos Tal y como hemos comentado en la introducción, Drupal se podría describir como un “Gestor de Nodos”. Así pues, la tabla “node” es de vital importancia para este CMF ya que contiene la información básica y común a todo contenido, siendo el origen y destino de la mayoría de operaciones que el CMF realiza.

Fig 2: La entidad [node]

Como vemos en este primer diagrama nodos contienen un identificador único (nid) y un identificador de versión (vid) que constituyen la clave primaria de la tabla. Esta tabla sólo almacena la versión vigente del nodo, mientras que vid (en aquellos casos en los que el nodo requiere de gestión de versiones) nos permitirá acceder al histórico de revisiones (node_revisions) y a los atributos específicos (content_xx) del nodo. Describiremos ambas relaciones en puntos posteriores, para centrarnos ahora en los atributos de

Modelo de datos “Drupal 5.7” con CCK

Página 9

esta entidad que contiene datos y metadatos sobre el trato que hay que dar a un nodo, siendo: ●

Título: El título que deseamos para el nodo. Pe: “Bienvenidos a esta página web”.



Status: El estado en el que se encuentra un nodo. Pe: “1” equivale a publicado.



Created: La fecha de creación en formato “timestamp”. Pe: “1185656627”



Changed: Fecha de modificación en formato “timestamp”. Pe: “1188946434”



Comment: Número de comentarios. Pe: “3”



Promote: Si debe ser “destacado en portada” (/frontpage). Pe: “1” indica promocionado.



Moderate: Si debe ser moderado antes de publicarse. Pe: “0” equivale a no moderado.



Sticky: Si debe destacarse en los listados. Pe: “1” muestra el nodo con mayor relevancia.

La documentación oficial de Drupal ofrece un incompleto, pero didáctico diagrama genérico, dónde observamos las principales relaciones entre la entidad nodo y las tablas vinculadas:

Fig 3: Las principales relaciones de la entidad [node] Fuente: Documentación oficial de Drupal.

En el diagrama podemos observar relaciones 1:n entre “node” y “node_revisions” o “node” y “comments”. La primera relación permite (como hemos comentado) almacenar las distintas revisiones de un nodo, mientras que en el segundo caso, se define un vínculo de “uno-amuchos” entre los nodos y los comentarios que sobre ese nodo se realicen. El resto de relaciones son 1:1 y ofrecen información estadística (contador de visitas, estadísticas sobre los comentarios) o de control de acceso (node_access). Para completar este diagrama debemos volver a la tabla “node” dónde podemos ver que los atributos “uid” y “type” son claves foráneas (FK) que mantienen, en el primer caso, una relación 1:n entre los usuarios y los nodos creados (uid) y nos permiten conocer al autor del nodo.

Modelo de datos “Drupal 5.7” con CCK

Página 10

El atributo “type” por otro lado, establece otra relación 1:n entre la entidad “node_type” y “node” (type), siendo “node_type” la encargada de ampliar el elemento nodo con nuevos atributos compartidos entre todos los nodos del mismo tipo.

Fig 4: La entidad [node_type] y su relación con [node]

Como vemos en esta sección ampliada del diagrama, la tabla “node_type” define una clave primaria en “type” y contiene información adicional del nodo que nos permite conocer “si el nodo ha sido creado por algún módulo” (module), “si el nodo debe incorporar un título y/o un cuerpo de texto” (has_title y has_body, respectivamente), “si el nodo ha sido creado a medida mediante CCK” (custom), una breve descripción para uso administrativo (description), un texto de ayuda que se mostrará al usuario para que se asegure de si ese es el tipo de contenido que desea crear, etc. (ver Diccionario de Datos para detalles). La combinación de estas dos entidades nos permite gestionar elementos de contenido simple, pero los datos que esta unidad abstracta de contenido seria capaz de contener se limita a un título y un cuerpo de texto. Aunque eficaz para mantener nodos como las “páginas web” (page), “noticias o blogs” (story) o otras sencillas unidades de contenido, resulta claramente insuficiente si el nodo exige estructurar más información que la mencionada.

Modelo de datos “Drupal 5.7” con CCK

Página 11

Tal y como hemos comentado en la introducción, el módulo CCK (Content Construction Kit) nos permite ampliar los campos asociados a un nodo y genera las tablas necesarias para mantener nuevos datos. Veamos entonces los efectos que produce en la base de datos de Drupal el crear mediante CCK un nuevo nodo (o “tipo de contenido”) como podría ser el nodo “actuación” (propio de “Coyote Application”).

Fig 5: La entidad [content_type_actuacion] y su relación con [node]

Como vemos, CCK genera una nueva entidad (content_type_actuacion) para contener aquellos atributos específicos del nuevo nodo, definiendo desde la tabla “node” una relación 1:n, que mantiene el modelo de base de datos normalizado. Para el caso de Coyote Application, “content_type_actuacion” incluye todos los atributos que se muestran en el formulario de entrada de actuación como de selección simple, a excepción por supuesto del título y el cuerpo de texto que se almacenan en “node_revisions”. El resto de atributos, para garantizar que los datos se conservan segmentados y que la base de datos mantiene su normalización, se almacenan en tablas externas que llevan por nombre “content_field_xx” (dónde “xx” coincide con el nombre del campo creado) y que definen una relación 1:n con “content_type_actuacion”. La excepción a esta regla, la encontramos en el atributo “field_actuacion_accion_social_e_nid” que establece una relación, ya no entre el nodo y uno de sus valores, sino entre dos nodos, conservando en los nodos “actuación” el “nid” del nodo “acción social” con el que se relaciona.

Modelo de datos “Drupal 5.7” con CCK

Página 12

Ampliemos una vez más el anterior diagrama y veamos un ejemplo en el caso de las actuaciones de Coyote Application, incluyendo esta vez las tablas de campo múltiple “content_field_xx” y su vínculo con “content_type_accion_social_externa”:

Fig 6: La entidad [content_type_actuacion] y su relación con [content_type_actuacion_social_externa] y [content_field_xx]

Pese a las capacidades que ha adquirido el nodo “actuacion”, todavía no sería suficiente como para cumplir con nuestros requisitos, ya que las actuaciones deben admitir documentos adjuntos y el modelo descrito hasta el momento no sería capaz de albergarlos. Para ello, el core de Drupal incorpora un módulo llamado “upload” que se encarga de las tareas de administración de archivos y permite asociarlos a un nodo. Los documentos cargados, se almacenan externos a la base de datos (habitualmente en el directorio /files del servidor) y la tabla “files” conserva metadatos sobre el documento asociado (nombre de archivo, tipo mime y tamaño), así como el path relativo al archivo físico. La entidad “nodes” establece con “files” una nueva relación 1:n mediante el atributo nid, lo que nos permite asociar varios documentos a un nodo. Finalmente, para conservar un histórico de los documentos cargados, “files” establece una nueva

Modelo de datos “Drupal 5.7” con CCK

Página 13

relación “uno-a-muchos” contra la tabla “file_revisions” mediante los atributos “fid” y “nid”, que son claves foráneas en “file_revisions”. Esta última tabla, conserva la descripción del documento cargado y el atributo “list” que indica si el adjunto debe mostrarse junto a la presentación del nodo o permanecer oculto. Obsérvese el diagrama de la sección que hemos comentado, para continuar con el análisis de las tablas de Vocabulario.

Fig 7: Las entidades [files] y [file_revisions] su relación con [node]

Modelo de datos “Drupal 5.7” con CCK

Página 14

Las tablas de Vocabulario Otra funcionalidad sumamente interesante de Drupal reside en su capacidad por categorizar el contenido empleando taxonomías simples o incluso jerarquizadas. Cualquier contenido (que en adelante y tras lo expuesto llamaremos “nodo”) puede asociarse a un vocabulario que incluye un conjunto de términos, lo que nos permite desarrollar mecanismos para clasificar los contenidos de forma rápida y extremadamente flexible. Esta capacidad lo distingue de otros CMS dónde las taxonomías no se contemplan como parte del núcleo o son de carácter rígido y simple. A modo de ejemplo podemos ver como mediante la gestión de taxonomías, asociamos al nodo “actuación” un término del vocabulario “territorio” (por ejemplo: “Red Canyon”), una “fuente” (pe: “Garganta profunda”), un “público objetivo” (pe: “Correcaminos”), etc. La documentación oficial de Drupal nos ofrece de nuevo una primera aproximación a esta sección de la base de datos:

Fig 8: Las principales relaciones de la entidad [vocabulary]. Fuente: Documentación oficial de Drupal.

En el diagrama vemos como la entidad “node” se relaciona 1:n con “term_node” para definir las asociaciones entre un nodo y los términos de un vocabulario. A su vez, la tabla “term_data” contiene una lista de los términos posibles y también mantiene un vínculo “uno-a-muchos” con “term_node”, constituyéndose esta última como una simple tabla de relación con claves foráneas hacia las tablas de nodos y términos. Cada término contenido en “term_data” pertenece a un vocabulario de la tabla “vocabulary”, que a su vez se relaciona 1:n con “vocabulary_node_types” y establece que vocabularios se pueden emplear en cada tipo de nodo.

Modelo de datos “Drupal 5.7” con CCK

Página 15

Finalmente, “term_hierarchy” almacena la jerarquía entre los términos de un vocabulario, dotando al CMS de la base de datos necesaria para construir jerarquías simples (cada término sólo puede tener un padre) o múltiples (un término puede tener más de un padre). Aunque efectivo a cierta escala, este diseño puede resultar costoso en el momento en el que se requiere de consultas que ahondan en la jerarquía de términos (como sucede con los listados de actuaciones). Por ese motivo, en este desarrollo se ha añadido un módulo adicional (Lineage) que implementa “nested trees”5 y reduce la complejidad del algoritmo de búsqueda. Completamos la descripción de este grupo de tablas con una nueva sección del anterior diagrama en el que se observan las relaciones entre ambos grupos, mediadas por las tablas de relación “term_node” y “vocabulary_node_types”:

Fig 9: El grupo de entidades Vocabulario y sus relaciones con el grupo Nodos.

5

El módulo Lineage: http://drupal.org/project/lineage Nested Trees: http://www.sitepoint.com/article/hierarchical-data-database

Modelo de datos “Drupal 5.7” con CCK

Página 16

Aunque no empleados en este proyecto, cabe comentar que Drupal permite establecer relaciones entre términos (mediante “term_relation”) o incluso definir términos sinónimos o alias (“term_synonym”). Para finalizar, es necesario comentar que debido al carácter de prototipo de este desarrollo se ha sido permisivo con la duplicidad de algunos datos. El uso del módulo Content Taxonomy (empleado en actuaciones entre otros nodos) permite asociar taxonomías a un nuevo nodo de forma paralela a la lógica interna de Drupal. Al asociar una taxonomía a un nodo mediante este módulo, se nos plantean 3 posibilidades: ●

Save as tag: Los términos asociados al nodo se almacenan en las tablas internas de Drupal (term_data).



Save in cck table: Los términos se almacenan en nuevas tablas (content_field_xx)



Both: Los términos se almacenan en ambas tablas.

El uso de “Save in cck table” permite a su vez mantener revisiones de las asociaciones entre los nodos y sus taxonomías, mientras que “Save as tag” sólo mantiene la relación actual. En previsión de futuras migraciones y para mantener un histórico de taxonomías asociadas al nodo, cuando se ha empleado el módulo Content Taxonomy, se ha optado por la tercera vía, permitiendo así que los datos sean extraídos como mejor convenga. Llegados a este punto se completa el análisis de los elementos que permiten almacenar contenido (Nodos y Vocabulario) y presentamos las tablas que hacen posible la gestión de Usuarios y que contienen información sobre su perfil y posibilidades de acceso.

Modelo de datos “Drupal 5.7” con CCK

Página 17

Las tablas de Usuario y permisos La gestión de usuarios de Drupal se define, en la versión 5.7, de forma independiente a los nodos. Este hecho siempre ha provocado cierta controversia en la comunidad de Drupal, pues los datos propios de un usuario (nombre, dirección, teléfono...) son tratados de manera muy distinta a como se procesan los nodos y eso no permite explotar los módulos diseñados para nodos para tratar los datos del perfil de usuario. Es probable que en futuras versiones se rectifique esta estrategia y módulos como “usernode” ya apuntan en esa dirección, implementando el perfil de usuario como si de un nodo más se tratara. En cualquier caso, lejos de todas estas discusiones, Drupal ofrece una buena gestión de usuarios, facilitando, “out-of-the-box” la ampliación del perfil mediante el módulo “profile” y sobre todo, estableciendo una excelente gestión de roles y permisos de acceso. La documentación oficial de Drupal aporta el siguiente diagrama:

Fig 10: Las principales relaciones de la entidad [user]. Fuente: Documentación oficial de Drupal.

En el gráfico se destaca la tabla “users”, dónde podemos obtener el “uid” (user ID) como identificador único de la persona en la plataforma. Esta tabla también almacena importante información del usuario como su login (“username”), correo (“mail”), estado de bloqueo (“status”), idioma preferido (“language”) y clave de acceso (“password”), entre muchos otros. Para garantizar la confidencialidad de las claves, estas se mantienen en la base de datos en un hash encriptado mediante un algoritmo de camino único (SHA1), por lo que si bien es posible comparar una cadena de texto con la clave existente en la base de datos (y certificar las credenciales de un usuario), no es posible desvelar el valor real del mismo.

Modelo de datos “Drupal 5.7” con CCK

Página 18

Fig 11: El grupo de entidades Usuarios y sus relaciones con el grupo Nodos.

Relacionada con la entidad “user” vemos, en 1:n a “profile_fields” con los valores concretos para cada usuario de los tipos de campo del perfil (nombre, teléfono, dirección, etc.) que se definen en profile_field. Esta tabla permite establecer para cada tipo de campo que asociamos al perfil de usuario un título (title), un texto explicativo (explanation), el grupo (o pestaña) en la que se mostrará (category), si se debe crear una nueva página listando todos los usuarios con ese mismo valor en ese campo (page), el tipo de campo a crear (type), si es un campo requerido (required), etc.

Modelo de datos “Drupal 5.7” con CCK

Página 19

La gestión de usuarios se mantiene mediante las tablas “role” y “user_roles” (relacionadas 1:n entre si), siendo “role” un simple listado de identificadores (rid) y nombres (name) de rol y recayendo en “user_roles” la tarea de mantener la relación entre usuarios y sus roles disponibles. Finalmente, el comportamiento general del control de acceso a los contenidos y las funcionalidades de los distintos módulos, lo establece la tabla “permission” que permite o bloquea según el rol del usuario activo. Esta tabla, relacionada 1:1 con “role”, también contiene un enumerado de las capacidades disponibles para todos los usuarios con ese rol. Como en la sección anterior, aunque no han resultado necesarias para en este proyecto, cabe comentar la existencia de las entidades “authmap”, dónde se mapean los usuarios que obtenemos de bases de datos externas (ya sean simples BD o fuentes LDAP, OpenID, etc.) y “access” con reglas que condicionan la creación de usuarios.

Modelo de datos “Drupal 5.7” con CCK

Página 20

Otras tablas de interés Completamos el análisis comentando superficialmente algunas tablas de sistema que pese a no establecer relaciones directas con los contenidos y los usuarios, pueden resultar de interés en un proceso de migración.

Fig 12: Las tablas del sistema. Fuente: Documentación oficial de Drupal.

La documentación oficial de Drupal destaca 5 tablas en las que no se muestra relación alguna con otras entidades. En el diagrama encontramos tablas muy especializadas, como “client” y “client_system” (que contiene información sobre clientes remotos cuando se habilita Drupal como servidor XML-RPC) y que no incumben al ámbito de este documento, pero también muestra las tablas “sequences”, “system” y “variable”, que si pueden resultar de utilidad en una migración completa. La primera de estas tablas incluye un listado de contadores para garantizar la compatibilidad con muy antiguas versiones de MySQL dónde el autoincremento de los identificadores no era posible. Pese a su carácter residual, esta tabla sigue siendo consultada cada vez que se crea un nuevo nodo, se escribe un comentario o se construye un nuevo menú y debe mantenerse actualizada con el último ID creado para cada entidad. La tabla “system” almacena toda aquella información que es de utilidad para el control del sistema, con un listado de los módulos disponibles o los temas. Las tuplas de de “system” incluyen el path completo al elemento del sistema, el nombre interno, el tipo de elemento, el estado en el que se encuentra (activo o inactivo), cuando debe ser cargado (bootstrap), su orden de aplicación (weight), una breve descripción y la versión de esquema de base de datos (schema_version). Finalmente, la tabla “variable” mantiene información sobre la configuración del sistema, incluyendo variables que Drupal o cualquiera de sus módulos necesita conocer en todo momento.

Modelo de datos “Drupal 5.7” con CCK

Página 21

Fig 13: Las tablas del sistema.

Para finalizar ofrecemos el diagrama ER completo en notación EER, mostrando los atributos de las entidades e incluyendo relaciones lógicas entre tablas. En el diagrama se agrupan: ●

En verde las entidades que constituyen el grupo Nodos.



En azul las entidades del grupo Vocabulario.



En amarillo para las tablas de Usuarios y permisos.



En rojo, otras tablas que no contienen datos de nodos pero que pueden afectar a su visualización o comportamiento.

Página 22 Modelo de datos “Drupal 5.7” con CCK

Fig 14: Diagrama ER completo. En verde el grupo Nodos.

Modelo de datos “Drupal 5.7” con CCK

Página 23

Diccionario de Datos A continuación se incluye el Diccionario de datos de Drupal 5.7, extendido con las tablas y atributos específicos para la aplicación ficticia “Coyote Application” de ACME Inc. Para no perder los matices de la documentación original, en el documento describe en Inglés las entidades generales (compartidas por todo Drupal 5.76) y se usa el Español para las peculiaridades de ACME Inc. Para las tablas propias de “Coyote Application” y con la finalidad de facilitar la comprensión del modelo, se amplía el formato clásico del diccionario de datos, añadiendo comentarios adicionales y referencias a las tablas vinculadas ya sea de forma directa o lejana. Este diccionario parte y se basa mayoritariamente en los patches creados colaborativamente por la comunidad de Drupal7 para documentar el CMS mediante el módulo schema8.

6 7

También se documentan en Inglés las tablas de módulos de terceros que no son específicos del desarrollo “Coyote Application”. Documento de partida:http://drupal.org/files/issues/drupal-document-schema-164983-75.patch Discusión sobre el proceso de documentación: http://drupal.org/node/164983

8

Más información en: http://jaspan.com/schema-project-database-abstraction-reflection-and-migration

Modelo de datos “Drupal 5.7” con CCK

Página 24

Estructura de la tabla access Stores site access rules. Campo

Tipo

No Nulo Default Comentarios

aid

int(11)



mask

varchar(255) Sí

Text mask used for filtering access.

type

varchar(255) Sí

Type of access rule: name, mail or host.

status

tinyint(4)



NULL

0

Primary Key: Unique access ID.

Whether rule is to allow(1) or deny(0) access.

Estructura de la tabla accesslog Stores site access information for statistics. Campo

Tipo

No Nulo Default Comentarios

aid

int(11)



Primary Key: Unique accesslog ID.

sld

varchar(64)



Browser session ID of user that visited page.

title

varchar(255) No

NULL

Title of page visited.

path

varchar(255) No

NULL

Internal path to page visited (relative to Drupal root.

url

varchar(255) No

NULL

Referrer URI.

hostname

varchar(128) No

NULL

Hostname of user that visited the page.

uid

int(10)

No

0

User {user}.uid that visited the page.

timer

int(10)



0

Time in milliseconds that the page took to load.

timestamp

int(10)



0

Timestamp of when the page was visited.

Estructura de la tabla authmap Stores distributed authentication mapping. Campo

Tipo

No Nulo Default Comentarios

aid

int(10)



uid

int(11)



authname

varchar(128) Sí

Unique authentication name.

module

varchar(128) Sí

Module which is controlling the authentication.

Primary Key: Unique authmap ID. 0

User's {user}.uid.

Estructura de la tabla blocks Stores block settings, such as region and visibility settings. Campo

Tipo

No Nulo DefaultComentarios

module

varchar(64)



delta

varchar(32)



The module from which the block originates; for example, 'user' for the Who's Online block, and 'block' for any custom blocks. 0

Unique ID for block within a module.

Modelo de datos “Drupal 5.7” con CCK

Página 25

theme

varchar(255) Sí

The theme under which the block settings apply.

status

tinyint(4)



0

Block enabled status. (1 = enabled, 0 = disabled).

weight

tinyint(4)



0

Block weight within region.

region

varchar(64)



left

Theme region within which the block is set.

custom

tinyint(4)



0

Flag to indicate how users may control visibility of the block. (0 = Users cannot control, 1 = On by default, but can be hidden, 2 = Hidden by default, but can be shown)

throttle

tinyint(4)



0

Flag to indicate whether or not to remove block when website traffic is high. (1 = throttle, 0 = do not throttle)

visibility

tinyint(4)



0

Flag to indicate how to show blocks on pages. (0 = Show on all pages except listed pages, 1 = Show only on listed pages, 2 = Use custom PHP code to determine visibility)

pages

text



Contents of the "Pages" block; contain either a list of paths on which to include/exlclude the block or PHP code, depending on "visibility" setting.

title

varchar(64)



Custom title for the block. (Empty string will use block default title, will remove the title, text will cause block to use specified title.)

Estructura de la tabla blocks_roles Sets up access permissions for blocks based on user roles Campo

Tipo

No Nulo DefaultComentarios

module

varchar(64)



The block's origin module, from {blocks}.module.

delta

varchar(32)



The block's unique delta within module, from {blocks}.delta.

rid

int(10)



The user's role ID from {user_roles}.rid.

Estructura de la tabla boxes Stores contents of custom-made blocks. Campo

Tipo

No Nulo Default Comentarios

bid

int(11)



body

longtext

No

info

varchar(128) Sí

format

int(11)



The block's {block}.bid. NULL Block contents. Block description. 0

Block body's {filter_formats}.format; for example, 1 = Filtered HTML.

Estructura de la tabla cache Generic cache table for caching things not separated out into their own tables. Contributed modules may also use this to store cached items.

Modelo de datos “Drupal 5.7” con CCK

Página 26

Campo

Tipo

No Nulo DefaultComentarios

cid

varchar(255) Sí

data

longblob

No

NULL A collection of data to cache.

expire

int(11)



0

A Unix timestamp indicating when the cache entry should expire, or 0 for never.

created

int(11)



0

A Unix timestamp indicating when the cache entry was created.

headers

text

No

NULL Any custom HTTP headers to be added to cached data.

Primary Key: Unique cache ID.

Estructura de la tabla cache_content Cache table to store cck content already parsed. Campo

Tipo

No Nulo Default Comentarios

cid

varchar(255) Sí

data

longblob

No

NULL A collection of data to cache.

expire

int(11)



0

A Unix timestamp indicating when the cache entry should expire, or 0 for never.

created

int(11)



0

A Unix timestamp indicating when the cache entry was created.

headers

text

No

NULL Any custom HTTP headers to be added to cached data.

Primary Key: Unique cache ID.

Estructura de la tabla cache_filter Cache table for the Filter module to store already filtered pieces of text, identified by input format and md5 hash of the text. Campo

Tipo

No Nulo Default Comentarios

cid

varchar(255) Sí

data

longblob

No

NULL A collection of data to cache.

expire

int(11)



0

A Unix timestamp indicating when the cache entry should expire, or 0 for never.

created

int(11)



0

A Unix timestamp indicating when the cache entry was created.

headers

text

No

NULL Any custom HTTP headers to be added to cached data.

Primary Key: Unique cache ID.

Estructura de la tabla cache_menu Cache table for the menu system to store router information as well as generated link trees for various menu/page/user combinations. Campo

Tipo

No Nulo Default Comentarios

Modelo de datos “Drupal 5.7” con CCK

Página 27

cid

varchar(255) Sí

Primary Key: Unique cache ID.

data

longblob

No

NULL A collection of data to cache.

expire

int(11)



0

A Unix timestamp indicating when the cache entry should expire, or 0 for never.

created

int(11)



0

A Unix timestamp indicating when the cache entry was created.

headers

text

No

NULL Any custom HTTP headers to be added to cached data.

Estructura de la tabla cache_page Cache table used to store compressed pages for anonymous users, if page caching is enabled. Campo

Tipo

No Nulo DefaultComentarios

cid

varchar(255) Sí

data

longblob

No

NULL A collection of data to cache.

expire

int(11)



0

A Unix timestamp indicating when the cache entry should expire, or 0 for never.

created

int(11)



0

A Unix timestamp indicating when the cache entry was created.

headers

text

No

NULL Any custom HTTP headers to be added to cached data.

Primary Key: Unique cache ID.

Estructura de la tabla cache_views Cache table to store computed views. Campo

Tipo

No Nulo DefaultComentarios

cid

varchar(255) Sí

data

longblob

No

NULL A collection of data to cache.

expire

int(11)



0

A Unix timestamp indicating when the cache entry should expire, or 0 for never.

created

int(11)



0

A Unix timestamp indicating when the cache entry was created.

headers

text

No

NULL Any custom HTTP headers to be added to cached data.

Primary Key: Unique cache ID.

Estructura de la tabla comments Stores comments and associated data. Campo

Tipo

No Nulo DefaultComentarios

cid

int(11)



pid

int(11)



Primary Key: Unique comment ID. 0

The {comment}.cid to which this comment is a reply. If set to 0, this comment is not a reply to an existing comment.

Modelo de datos “Drupal 5.7” con CCK

Página 28

nid

int(11)



0

The {node}.nid to which this comment is a reply.

uid

int(11)



0

The {user}.uid who authored the comment. If set to 0, this comment was created by an anonymous user.

subject

varchar(64)



The comment title.

comment

longtext



The comment body.

hostname

varchar(128) Sí

timestamp

int(11)



0

The time that the comment was created, or last edited by its author, as a Unix timestamp.

score

mediumint(9)Sí

0

To rate comments

status

tinyint(3)



0

The published status of a comment. (0 = Published, 1 = Not Published)

format

int(11)



0

The {filter_formats}.format of the comment body.

thread

varchar(255) Sí

users

longtext

No

NULL Serialized user i-variables

name

varchar(60)

No

NULL The comment author's name. Uses {user}.name if the user is logged in, otherwise uses the value typed into the comment form.

mail

varchar(64)

No

NULL The comment author's e-mail address from the comment form, if user is anonymous, and the 'Anonymous users may/must leave their contact information' setting is turned on.

homepage

varchar(255) No

The author's host name.

The vancode representation of the comment's place in a thread.

NULL The comment author's home page address from the comment form, if user is anonymous, and the 'Anonymous users may/must leave their contact information' setting is turned on.

Estructura de la tabla contact Contact form category settings. Campo

Tipo

No Nulo DefaultComentarios

cid

int(10)



category

varchar(255) Sí

Category name.

recipients

longtext



Comma-separated list of recipient e-mail addresses.

reply

longtext



Text of the auto-reply message.

weight

tinyint(4)



0

The category's weight.

selected

tinyint(4)



0

Flag to indicate whether or not category is selected by default. (1 = Yes, 0 = No)

Primary Key: Unique category ID.

Estructura de la tabla content_field_actuacion_fuente Términos del vocabulario “Fuente” vinculados a los nodos “actuación”. Tablas relacionadas: • {node} • {node_revisions}

Modelo de datos “Drupal 5.7” con CCK

Página 29

• {term_data}

Relaciones lejanas: • {content_type_actuacion}

Campo

Tipo

No Nulo DefaultComentarios

vid

int(10)



0

El {node_revisions}.vid identificador de versión.

delta

int(10)



0

Indica el orden de aparición si hay varias tuplas para la fuente en un mismo {node_revisions}.vid

nid

int(10)



0

El {node}.nid al que hace referencia esta fuente.

field_actuacion_fuent int(11) e_value



0

Identificador del término en {term_data}.tid

Estructura de la tabla content_field_actuacion_objetivo Términos del vocabulario “Público Objetivo” vinculados a los nodos “actuación”. Tablas relacionadas: • {node} • {node_revisions} • {term_data}

Relaciones lejanas: • {content_type_actuacion}

Campo

Tipo

No NuloDefault Comentarios

vid delta

int(10) int(10)

Sí Sí

nid int(10) field_actuacion_obj int(11)

Sí Sí

0 0

El {node_revisions}.vid identificador de versión. Indica el orden de aparición si hay varias tuplas

0 0

para el objetivo en un mismo {node_revisions}.vid El {node}.nid al que hace referencia este objetivo. Identificador del término en {term_data}.tid

etivo_value

Estructura de la tabla content_field_actuacion_soporte Términos del vocabulario “Soporte” vinculados a los nodos “actuación”. Tablas relacionadas: • {node} • {node_revisions} • {term_data}

Relaciones lejanas: • {content_type_actuacion}

Modelo de datos “Drupal 5.7” con CCK

Página 30

Campo

Tipo

No Nulo Default Comentarios

vid delta

int(10) int(10)

Sí Sí

nid int(10) field_actuacion_so int(11)

Sí Sí

0 0

El {node_revisions}.vid identificador de versión. Indica el orden de aparición si hay varias tuplas

0 0

para el soporte en un mismo {node_revisions}.vid El {node}.nid al que hace referencia este soporte. Identificador del término en {term_data}.tid

porte_value

Estructura de la tabla content_field_actuacion_tema Términos del vocabulario “Tema” vinculados a los nodos “actuación”. Tablas relacionadas: • {node} • {node_revisions} • {term_data}

Relaciones lejanas: • {content_type_actuacion}

Campo

Tipo

No Nulo Default Comentarios

vid

int(10)



0

El {node_revisions}.vid identificador de versión.

delta

int(10)



0

Indica el orden de aparición si hay varias tuplas para el tema en un mismo {node_revisions}.vid

nid

int(10)



0

El {node}.nid al que hace referencia este tema.

field_actuacion_tema int(11) _value



0

Identificador del término en {term_data}.tid

Estructura de la tabla content_type_accion_social_externa Atributos adicionales para los nodos de tipo “Acción social externa (ASE)” (accion-social-externa). Nota: Este contenido no solicita control de versiones, ni emplea el “body” del nodo, por lo que sus relaciones con la tabla “node_revisions” se pueden obviar. Tablas relacionadas: • • • •

{node} {node_revisions} {term_data} {users}

Relaciones lejanas: • {content_type_actuacion}

Modelo de datos “Drupal 5.7” con CCK

Página 31

• {files} • {file_revisions}

Campo

Tipo

No Nulo Default Comentarios

vid

int(10)



0

El {node_revisions}.vid identificador de versión.

nid

int(10)



0

El {node_revisions}.nid identificador de nodo.

field_fecha_solicitud_ varchar(20) value

No

NULL

Marca de tiempo con la fecha de la solicitud de acción. Formato: aaaa-mm-ddThh:mm:ss

field_institucion_valu longtext e

No

NULL

Institución solicitante de la acción.

field_beneficiarios_di longtext rectos_value

No

NULL

Beneficiarios directos de la acción.

field_beneficiarios_in longtext directos_value

No

NULL

Beneficiarios indirectos de la acción.

field_estado_proyect longtext o_value

No

NULL

Estado del proyecto, admitiendo los literales: En solicitud, Aprobado, Rechazado.

field_lugar_patrocinio longtext _value

No

NULL

Topónimo del lugar de patrocinio.

field_fecha_inicio_val varchar(20) ue

No

NULL

Marca de tiempo con la fecha de inicio de la acción Formato: aaaa-mm-ddThh:mm:ss

field_descripcion_val longtext ue

No

NULL

Finalidad del proyecto y descripción de sus características.

field_contraprestacio longtext nes_value

No

NULL

Descripción de las contraprestaciones.

field_importancia_val longtext ue

No

NULL

Importancia del proyecto, admitiendo los literales: Alta, Media, Baja

field_observaciones_ longtext value

No

NULL

Observaciones sobre la acción.

field_presupuesto_va int(11) lue

No

NULL

Presupuesto del proyecto.

field_responsable_ac int(11) cion_uid

No

NULL

El {user}.uid del usuario responsable de la acción.

field_fecha_termino_ varchar(20) ase_value

No

NULL

Marca de tiempo con la fecha de finalización de la acción. Formato: aaaa-mm-ddThh:mm:ss

field_eje_de_agrupac int(11) in_value



0

El {term_data}.tid del término del vocabulario “Eje de agrupación” asociado a esta acción.

field_accion_social_t int(11) erritorio



0

El {term_data}.tid del término del vocabulario “Territorio (ASE)” asociado a esta acción.

field_accion_social_p int(11) resu_total_value

No

NULL

Presupuesto global de las actuaciones de este tipo.

Estructura de la tabla content_type_actuacion Atributos adicionales para los nodos de tipo “Registro de actuación” (actuación). Tablas relacionadas:

Modelo de datos “Drupal 5.7” con CCK • • • •

Página 32

{node} {node_revisions} {term_data} {content_type_accion_social_externa}

Relaciones lejanas: • • • • • •

{content_field_actuacion_fuente} content_field_actuacion_objetivo} {content_field_actuacion_soporte} {content_field_actuacion_tema} {files} {file_revisions}

Campo

Tipo

No Nulo Default Comentarios

vid

int(10)



0

El {node_revisions}.vid identificador de versión.

nid

int(10)



0

El {node_revisions}.nid identificador de nodo.

field_fecha_actuacio varchar(20) n_value

No

NULL

Marca de tiempo con la fecha de la actuación. Formato: aaaa-mm-ddThh:mm:ss

field_dudas_registro_ longtext actuacion_value

No

NULL

Indicador de entrada con dudas, admitiendo el literal “Sí” en caso afirmativo.

field_dudas_actuacio longtext n_value

No

NULL

Comentarios sobre la duda que ha surgido.

field_actuacion_territ int(11) orio_value



0

El {term_data}.tid del término del vocabulario “Territorio” asociado a esta actuación.

field_actuacion_marc int(11) a_value



0

El {term_data}.tid del término del vocabulario “Marca” asociado a esta actuación.

field_actuacion_accio int(11) n_social_e_nid



0

El {node}.nid del nodo de tipo “accion-social-externa”.

Estructura de la tabla content_type_acuerdo_patrocinio Atributos adicionales para los nodos de tipo “Acuerdos con Medios (ACM)” (acuerdo_patrocinio). Nota: Este contenido no solicita control de versiones, ni emplea el “body” del nodo, por lo que sus relaciones con la tabla “node_revisions” se pueden obviar. Tablas relacionadas: • • • •

{node} {node_revisions} {term_data} {users}

Relaciones lejanas: • {content_type_medio_comunicación} • {files} • {file_revisions}

Modelo de datos “Drupal 5.7” con CCK

Página 33

Campo

Tipo

No Nulo DefaultComentarios

vid

int(10)



0

El {node_revisions}.vid identificador de versión.

nid

int(10)



0

El {node_revisions}.nid identificador de nodo.

field_fecha_solicitud_ varchar(20) acuerdo_value

No

NULL Marca de tiempo con la fecha de la solicitud. Formato: aaaa-mm-ddThh:mm:ss

field_importe_acuerd int(11) o_value

No

NULL Presupuesto del acuerdo_patrocinio.

field_estado_acuerdo longtext _value

No

NULL Estado del acuerdo_patrocinio, admitiendo los literales: En solicitud, Aprobado, Rechazado.

field_fecha_inicio_ac varchar(20) uerdo_value

No

NULL Marca de tiempo con la fecha de inicio del acuerdo_patrocinio. Formato: aaaa-mm-ddThh:mm:ss

field_descripcion_aculongtext erdo_value

No

NULL Finalidad del acuerdo_patrocinio y descripción de sus características.

field_contraprestacio longtext nes_acuerd_value

No

NULL Descripción de las contraprestaciones.

field_territorio_acuer int(11) do_patroc_value



0

El {term_data}.tid del término del vocabulario “Territorio” asociado a este acuerdo_patrocinio.

field_medio_acuerdo int(11) _patrocinio_nid



0

El {node}.nid del “Medio” asociado a este acuerdo_patrocinio.

field_fecha_termino_ varchar(20) acuerdo_value

No

NULL Marca de tiempo con la fecha de finalización del acuerdo_patrocinio. Formato: aaaa-mm-ddThh:mm:ss

field_acuerdo_responint(11) sable_uid

No

NULL El {user}.uid del responsable de este acuerdo_patrocinio.

Estructura de la tabla content_type_avisos Relación entre nodos y versiones de nodo para el contenido “Aviso”. Tablas relacionadas: • {node} • {node_revisions}

Relaciones lejanas: • {files} • {file_revisions}

Campo

Tipo

No Nulo DefaultComentarios

vid

int(10)



0

El {node_revisions}.vid identificador de versión.

nid

int(10)



0

El {node_revisions}.nid identificador de nodo.

Estructura de la tabla content_type_documentos Relación entre nodos y versiones de nodo para el contenido “Documentos”.

Modelo de datos “Drupal 5.7” con CCK

Página 34

Tablas relacionadas: • {node} • {node_revisions}

Relaciones lejanas: • • • •

{term_data} {content_type_images} {files} {file_revisions}

Campo

Tipo

No Nulo DefaultComentarios

vid

int(10)



0

El {node_revisions}.vid identificador de versión.

nid

int(10)



0

El {node_revisions}.nid identificador de nodo.

Estructura de la tabla content_type_comite_ejecutivo Relación entre nodos y versiones de nodo para el contenido “Documento del Comité Ejecutivo” (docu_comite_ejecutivo). Tablas relacionadas: • {node} • {node_revisions}

Relaciones lejanas: • {files} • {file_revisions}

Campo

Tipo

No Nulo DefaultComentarios

vid

int(10)



0

El {node_revisions}.vid identificador de versión.

nid

int(10)



0

El {node_revisions}.nid identificador de nodo.

Estructura de la tabla content_type_image Relación entre nodos y versiones de nodo para el contenido “Image” (image). Tablas relacionadas: • {node} • {node_revisions}

Relaciones lejanas: • {term_data} • {files} • {file_revisions}

Modelo de datos “Drupal 5.7” con CCK

Página 35

• {content_type_documentos}

Campo

Tipo

No Nulo Default Comentarios

vid

int(10)



0

El {node_revisions}.vid identificador de versión.

nid

int(10)



0

El {node_revisions}.nid identificador de nodo.

Estructura de la tabla content_type_interno Relación entre nodos y versiones de nodo para el contenido “Documento Interno” (interno). Tablas relacionadas: • {node} • {node_revisions}

Relaciones lejanas: • {files} • {file_revisions}

Campo

Tipo

No Nulo DefaultComentarios

vid

int(10)



0

El {node_revisions}.vid identificador de versión.

nid

int(10)



0

El {node_revisions}.nid identificador de nodo.

Estructura de la tabla content_type_medio_comunicacion Relación entre nodos y versiones de nodo para el contenido “Medio” (medio-comunicación). Nota: Este contenido no solicita control de versiones, ni emplea el “body” del nodo, por lo que sus relaciones con la tabla “node_revisions” se pueden obviar. Tablas relacionadas: • {node} • {node_revisions}

Relaciones lejanas: • {content_type_acuerdo_patrocinio}

Campo

Tipo

No NuloDefaultComentarios

vid

int(10)



0

El {node_revisions}.vid identificador de versión.

nid

int(10)



0

El {node_revisions}.nid identificador de nodo.

Modelo de datos “Drupal 5.7” con CCK

Página 36

Estructura de la tabla content_type_page Relación entre nodos y versiones de nodo para el contenido “Página web” (page). Tablas relacionadas: • {node} • {node_revisions}

Relaciones lejanas: • {files} • {file_revisions}

Campo

Tipo

No Nulo DefaultComentarios

vid

int(10)



0

El {node_revisions}.vid identificador de versión.

nid

int(10)



0

El {node_revisions}.nid identificador de nodo.

Estructura de la tabla content_type_usernode Relación entre nodos y versiones de nodo para el contenido “Usernode” (usernode). Nota: El contenido de esta tabla carece de utilidad para futuros sistemas. Tablas relacionadas: • {node} • {node_revisions}

Relaciones lejanas: • {files} • {file_revisions}

Campo

Tipo

No Nulo Default Comentarios

vid

int(10)



0

El {node_revisions}.vid identificador de versión.

nid

int(10)



0

El {node_revisions}.nid identificador de nodo.

Estructura de la tabla files Stores information for uploaded files. Campo

Tipo

No Nulo DefaultComentarios

fid

int(10)



0

Primary Key: Unique files ID.

nid

int(10)



0

Unique node ID.

filename

varchar(255) Sí

Name of the file.

filepath

varchar(255) Sí

Path of the file relative to Drupal root.

filemime

varchar(255) Sí

The file MIME type.

Modelo de datos “Drupal 5.7” con CCK filesize

int(10)



Página 37 0

The size of the file in bytes.

Estructura de la tabla file_revisions Stores changes in the metadata related with the uploaded files. Campo

Tipo

No Nulo Default Comentarios

fid

int(10)



0

Primary Key: Unique files ID.

vid

int(10)



0

Primary Key: Unique node version ID.

description

varchar(255) Sí

list

tinyint(3)



A brief description of this file. 0

File must be listed. Possible values are: 0: Not shown. 1: Listed.

Estructura de la tabla filters Table that maps filters (HTML corrector) to input formats (Filtered HTML). Campo

Tipo

No Nulo Default Comentarios

format

int(11)



module

varchar(64) Sí

delta

tinyint(4)



0

ID to identify which filter within module is being referenced.

weight

tinyint(4)



0

Weight of filter within format.

0

Foreign Key: The {filter_formats}.fid to which this filter is assigned The origin module of the filter.

Estructura de la tabla filter_formats Stores input formats: custom groupings of filters, such as Filtered HTML. Campo

Tipo

No Nulo Default Comentarios

format

int(11)



name

varchar(255) Sí

Name of the input format (Filtered HTML).

roles

varchar(255) Sí

A comma-separated string of roles; references {role}.rid.

cache

tinyint(4)



Primary Key: Unique ID for format.

0

Flag to indicate whether format is cachable. (1 = cachable, 0 = not cachable)

Estructura de la tabla flood Flood controls the threshold of events, such as the number of contact attempts. Campo

Tipo

No Nulo Default Comentarios

event

varchar(64) Sí

Name of event (e.g. contact)

hostname

varchar(128) Sí

Hostname of the visitor.

timestamp

int(11)



0

Timestamp of the event.

Modelo de datos “Drupal 5.7” con CCK

Página 38

Estructura de la tabla history A record of which {users} have read which {node}s. Campo

Tipo

No Nulo Default Comentarios

uid

int(11)



0

The {users}.uid that read the {node} nid.

nid

int(11)



0

The {node}.nid that was read.

timestamp

int(11)



0

The Unix timestamp at which the read occurred.

Estructura de la tabla image_attach A record of wich {nodes} includes attached {image}s Campo

Tipo

No Nulo Default Comentarios

nid

int(10)



0

Primary Key: The {node}.nid that was read.

iid

int(10)



0

Unique ID for image.

Estructura de la tabla locales_meta List of available languages for locale module. Campo

Tipo

No NuloDefault Comentarios

locale

varchar(12)



Primary Key: Unique ID for locale.

name

varchar(64)



English language name.

enabled

int(11)



0

Status of the locale: 0: disabled 1: enabled

isdefault

int(11)



0

Default locale is set to 1.

plurals

int(11)



0

Language with plural forms.

formula

varchar(128) Sí

Estructura de la tabla locales_source List of English source strings. Campo

Tipo

No NuloDefault Comentarios

lid

int(11)



location

varchar(255) Sí

Drupal path in case of online discovered translations or file path in case of imported strings.

source

blob

The original string in English.



Unique identifier of this string.

Modelo de datos “Drupal 5.7” con CCK

Página 39

Estructura de la tabla locales_target Stores translated versions of strings. Campo

Tipo

No Nulo Default Comentarios

lid

int(11)



translation

blob



locale

varchar(12) Sí

plid

int(11)



0

References {locales_target}.lid and defines the plural form of this translation.

plural

int(11)



0

Plural index number in case of plural strings.

0

Source string ID. References {locales_source}.lid. Translation string value in this language. References {locales_meta}.locale and defines the language of this translation.

Estructura de la tabla menu Hierarchical list of menu items. Campo

Tipo

No Nulo Default Comentarios

mid

int(10)



0

Primary Key: menu item ID

pid

int(10)



0

References parent's {menu}.mid*

path

varchar(255) Sí

Path to the URL the menu item links to.

title

varchar(255) Sí

Menu item title to show.

description

varchar(255) Sí

Alternative link's text shown as ALT tooltip.

weight

tinyint(4)



0

Position of menu item in relation to other menu items.

type

int(10)



0

Menu type (or group this menu item belongs to)*

Estructura de la tabla node The base table for nodes. Campo

Tipo

No Nulo Default Comentarios

nid

int(10)



vid

int(10)



type

varchar(32) Sí

The {node_type} of this node.

title

varchar(128) Sí

The title of this node, always treated a non-markup plain text.

uid

int(11)



0

The {users}.uid that owns this node; initially, this is the user that created it.

status

int(11)



1

Boolean indicating whether the node is published (visible to non-administrators).

created

int(11)



0

The Unix timestamp when the node was created.

changed

int(11)



0

The Unix timestamp when the node was most recently saved.

comment

int(11)



0

Whether comments are allowed on this node: 0 = no, 1 = read only, 2 = read/write.

The primary identifier for a node. 0

The current {node_revisions}.vid version identifier.

Modelo de datos “Drupal 5.7” con CCK

Página 40

promote

int(11)



0

Boolean indicating whether the node should displayed on the front page.

moderate

int(11)



0

Previously, a boolean indicating whether the node was "in moderation"; mostly no longer used.

sticky

int(11)



0

Boolean indicating whether the node should be displayed at the top of lists in which it appears.

Estructura de la tabla node_access Identifies which realm/grant pairs a user must possess in order to view, update, or delete specific nodes. Campo

Tipo

No Nulo Default Comentarios

nid

int(10)



0

The {node}.nid this record affects.

gid

int(10)



0

The grant ID a user must possess in the specified realm to gain this row's privileges on the node.

realm

varchar(255) Sí

grant_view

tinyint(3)



0

Boolean indicating whether a user with the realm/grant pair can view this node.

grant_update

tinyint(3)



0

oolean indicating whether a user with the realm/grant pair can edit this node.

grant_delete

tinyint(3)



0

Boolean indicating whether a user with the realm/grant pair can delete this node

The realm in which the user must possess the grant ID. Each node access node can define one or more realms.

Estructura de la tabla node_comment_statistics Maintains statistics of node and comments posts to show "new" and "updated" flags. Campo

Tipo

No Nulo Default Comentarios

nid

int(10)



last_comment_timest int(11) amp



The {node}.nid for which the statistics are compiled. 0

The Unix timestamp of the last comment that was posted within this node, from {comment}.timestamp.

last_comment_name varchar(60) No

NULL

The name of the latest author to post a comment on this node, from {comment}.author.

last_comment_uid

int(11)



0

The user ID of the latest author to post a comment on this node, from {comment}.uid.

comment_count

int(10)



0

The total number of comments on this node.

Estructura de la tabla node_counter Access statistics for {node}s. Campo

Tipo

No Nulo Default Comentarios

nid

int(11)



0

The {node}.nid for these statistics.

totalcount

bigint(20)



0

The total number of times the {node} has been viewed.

Modelo de datos “Drupal 5.7” con CCK

Página 41

daycount

mediumint(8) Sí

0

The total number of times the {node} has been viewed today.

timestamp

int(10)

0

The most recent time the {node} has been viewed.



Estructura de la tabla node_field Node field types for core nodes and CCK. Campo

Tipo

No NuloDefault Comentarios

field_name

varchar(32)



type

varchar(127) Sí

Type of field. For example: text, number_integer, date, content_taxonomy, userreference, nodereference...

global_settings

mediumtext



Serialized settings of a field type.

required

int(11)



0

Required field. “1” means field is required.

multiple

int(11)



0

Multiple field. “1” means multiple values allowed.

db_storage

int(11)



0

Indicates if the value need to be stored at drupal's core tables or CCK specific ones.

Primary Key: Field's name ID

Estructura de la tabla node_field_instance List describing how a field type is instantiated when is related to a core or a CCK node type. Campo

Tipo

No Nulo Default Comentarios

field_name

varchar(32)



Primary Key: Field's name ID

type_name

varchar(32)



Primary Key: Relation to {node_type}.type

weight

int(11)



label

varchar(255) Sí

Label of the field (shown at html)

widget_type

varchar(32)



Widgets that creates or stands the field.

widget_settings

mediumtext



Serialized settings of this instance of a field_type.

display_settings

mediumtext



Serialized display setting of this instance of a field_type.

description

mediumtext



Description of the field, normally shown as help text.

0

Position of field in relation to other fields of the same node type.

Estructura de la tabla node_group List how to display a group of {node_field}s depending on {node_type}s. Campo

Tipo

No Nulo Default Comentarios

type_name

varchar(32)



Primary Key: {node_type}.type

group_name

varchar(32)



Primary Key: Group unique ID.

label

varchar(255) Sí

The html fieldgroup label.

settings

mediumtext



Serialized group settings

weight

tinyint(4)



Position of group in relation to other groups displayed in the same node type.

Modelo de datos “Drupal 5.7” con CCK

Página 42

Estructura de la tabla node_group_fields List of {node_field}s for each {node_group}s and {node_type}s. Campo

Tipo

No NuloDefault Comentarios

type_name

varchar(32)



Primary Key: {node_type}.type

group_name

varchar(32)



Primary Key: {node_group}.group_name

field_name

varchar(32)



Primary Key: {node_field}.field_name

Estructura de la tabla node_revisions Stores information about each saved version of a {node}. Comment: Note that body content is included here instead in {node} table. Campo

Tipo

No Nulo Default Comentarios

nid

int(10)



0

The {node} this version belongs to.

vid

int(10)



0

The primary identifier for this version.

uid

int(11)



0

The {users}.uid that created this version.

title

varchar(128) Sí

The title of this version.

body

longtext



The body of this version.

teaser

longtext



The teaser of this version.

log

longtext



The log entry explaining the changes in this version.

timestamp

int(11)



A Unix timestamp indicating when this version was created.

format

int(11)



0

The input format used by this version's body.

Estructura de la tabla node_type Stores information about all defined {node} types. Campo

Tipo

No Nulo Default Comentarios

type

varchar(32)



name

varchar(255) Sí

The human-readable name of this type

module

varchar(255) Sí

The module that implements this type.

description

mediumtext



A brief description of this type.

help

mediumtext



Help information shown to the user when creating a {node} of this type.

has_title

tinyint(3)



Boolean indicating whether this type uses the {node}.title field.

title_label

varchar(255) Sí

has_body

tinyint(3)



The machine-readable name of this type.

0

The label displayed for the title field on the edit form. Boolean indicating whether this type uses the {node}.body field.

Modelo de datos “Drupal 5.7” con CCK

Página 43

body_label

varchar(255) Sí

0

The label displayed for the body field on the edit form.

min_word_count

smallint(5)



custom

tinyint(4)



0

A boolean indicating whether this type is defined by a module (FALSE) or by a user via a module like the Content Construction Kit (TRUE).

modified

tinyint(4)



0

A boolean indicating whether this type has been modified by an administrator; currently not used in any way.

locked

tinyint(4)



0

A boolean indicating whether the administrator can change the machine name of this type.

orig_type

varchar(255) Sí

The minimum number of words the body must contain.

The original machine-readable name of this node type. This may be different from the current type name if the locked field is 0.

Estructura de la tabla permission Stores permissions for users. Campo

Tipo

No Nulo Default Comentarios

rid

int(10)



0

Primary Key: Unique permission ID

perm

longtext

No

NULL

List of permissions being assigned.

tid

int(10)



0

Originally intended for taxonomy-based permissions, but never used.

Estructura de la tabla profile_fields Stores profile field information. Campo

Tipo

No Nulo Default Comentarios

fid

int(11)



title

varchar(255) No

NULL Title of the field shown to the end user.

name

varchar(128) No

NULL Internal name of the field used in the form HTML and URLs.

explanation

text

NULL Explanation of the field to end users.

category

varchar(255) No

NULL Profile category that the field will be grouped under.

page

varchar(255) No

NULL Title of page used for browsing by the field's value.

type

varchar(128) No

NULL Type of form field.

weight

tinyint(4)



0

Weight of field in relation to other profile fields.

required

tinyint(4)



0

Whether the user is required to enter a value. (0 = no, 1 = yes).

register

tinyint(4)



0

Whether the field is visible in the user registration form. (1 = yes, 0 = no).

visibility

tinyint(4)



0

The level of visibility for the field. (0 = hidden, 1 =

No

Primary Key: Unique profile field ID.

Modelo de datos “Drupal 5.7” con CCK

Página 44 private, 2 = public on profile but not member list pages, 3 = public on profile and list pages)

autocomplete

tinyint(4)



0

Whether form auto-completion is enabled. (0 = disabled, 1 = enabled).

options

text

No

NULL List of options to be used in a list selection field.

Estructura de la tabla profile_values Stores values for profile fields. Campo

Tipo

No Nulo Default Comentarios

fid

int(10)



0

The {profile_fields}.fid of the field.

uid

int(10)



0

The {users}.uid of the profile user.

value

text

No

NULL The value for the field.

Estructura de la tabla role Stores user roles. Campo

Tipo

No Nulo Default Comentarios

rid

int(10)



name

varchar(64) Sí

Primary Key: Unique role id. Unique role name.

Estructura de la tabla search_dataset Stores items that will be searched. Campo

Tipo

No Nulo Default Comentarios

sid

int(10)



type

varchar(16) No

data

longtext

0

Search item ID, e.g. node ID for nodes.

NULL

Type of item, e.g. node.



List of space-separated words from the item.

Estructura de la tabla search_index Stores the search index, associating words, items and scores. Campo

Tipo

No Nulo Default Comentarios

word

varchar(50) Sí

sid

int(10)

type fromsid



The {search_total}.word that is associated with the search item. 0

The {search_dataset}.sid of the searchable item to which the word belongs.

varchar(16) No

NULL

The {search_dataset}.type of the searchable item to which the word belongs.

int(10)

0

The {search_dataset}.sid of the referring link to this item.



Modelo de datos “Drupal 5.7” con CCK

Página 45

fromtype

varchar(16) No

NULL

The {search_dataset}.type of the referring link to this item.

score

float

NULL

The numeric score of the word, higher being more important.

No

Estructura de la tabla search_total Stores search totals for words. Campo

Tipo

No Nulo Default Comentarios

word

varchar(50) Sí

count

float

No

Primary Key: Unique word in the search index. NULL

The count of the word in the index using Zipf's law to equalize the probability distribution.

Estructura de la tabla sequences Record of the latest ID for various tables. (For compatibility with older MySQL versions.) Campo

Tipo

No Nulo Default Comentarios

name

varchar(255) Sí

id

int(10)



Table name. 0

Last ID for this table.

Estructura de la tabla sessions Drupal's session handlers read and write into the sessions table. Each record represents a user session, either anonymous or authenticated. Campo

Tipo

No Nulo Default Comentarios

uid

int(10)



sid

varchar(64) Sí

Primary key: A session ID. The value is generated by PHP's Session API

hostname

varchar(128) Sí

The IP address that last used this session ID (sid).

timestamp

int(11)



0

The Unix timestamp when this session last requested a page. Old records are purged by PHP automatically.

cache

int(11)



0

The time of this user's last post. This is used when the site has specified a minimum_cache_lifetime. See cache_get().

session

longtext

No

NULL

The serialized contents of $_SESSION, an array of name/value pairs that persists across page requests by this session ID. Drupal loads $_SESSION from here at the start of each request and saves it at the end.

0

The {users}.uid corresponding to a session, or 0 for anonymous user.

Modelo de datos “Drupal 5.7” con CCK

Página 46

Estructura de la tabla system A list of all modules, themes, and theme engines that are or have been installed in Drupal's file system. Campo

Tipo

No Nulo Default Comentarios

filename

varchar(255) Sí

The path of the primary file for this item, relative to the Drupal root; e.g. modules/node/node.module.

name

varchar(255) Sí

The name of the item; e.g. node.

type

varchar(255) Sí

The type of the item, either module, theme, or theme_engine.

description

varchar(255) Sí

Extra information for this system's item. On modules include the module description. On themes, the themeengine path or page.tpl path.

status

int(11)



0

Boolean indicating whether or not this item is enabled

throttle

tinyint(4)



0

Boolean indicating whether this item is disabled when the throttle.module disables throttlable items.

bootstrap

int(11)



0

Boolean indicating whether this module is loaded during Drupal's early bootstrapping phase (e.g. even before the page cache is consulted).

schema_version

smallint(6)



-1

The module's database schema version number. -1 if the module is not installed (its tables do not exist); 0 or the largest N of the module's hook_update_N() function that has either been run or existed when the module was first installed.

weight

int(11)



0

The order in which this module's hooks should be invoked relative to other modules. Equal-weighted modules are ordered by name.

Estructura de la tabla taxonomy_manager_merge Taxonomy_manager's table to establish how {term_data}s (taxonomies) are merged. Campo

Tipo

No Nulo DefaultComentarios

main_tid

int(10)



0

Primary Key: Main {term_data}.tid

merged_tid

int(10)



0

The {term_data}.tid that need to be merged.

Estructura de la tabla tax_settings_temas Establece el nombre del CSS y la entidad html empleados para renderizar un taxonomía. Campo

Tipo

No Nulo DefaultComentarios

tema

int(10)



name

varchar(255) No

estilo

varchar(255) Sí

Identificador único de tema. NULL Nombre del estilo CSS (coincide con color). Entidad html mediante la que rederizar un tema. Toma los valores: div, span.

Modelo de datos “Drupal 5.7” con CCK

Página 47

Estructura de la tabla tax_tema Establece el nombre del CSS empleado para renderizar un término del vocabulario. Campo

Tipo

No Nulo Default Comentarios

id_relaciones

varchar(255) Sí

vid

int(10)

term_name

varchar(255) Sí

El {term_data}.term_name del término a mostrar.

color

varchar(255) Sí

Nombre del color a emplear para el renderizado.



Clave primaria: ID único de la relación. 0

El {vacabulary}.vid

Estructura de la tabla term_access Defines access based on {term_data} and {role}s. Campo

Tipo

No Nulo DefaultComentarios

tid

int(10)



0

Primary Key: The {term_data}.tid witch access will be set.

rid

int(10)



0

Primary Key: The {roles}.rid witch access will be set.

grant_view

tinyint(1)



0

View access. “1” means granted.

grant_update

tinyint(1)



0

Update access. “1” means granted.

grant_delete

tinyint(1)



0

Delete access. “1” means granted.

grant_create

tinyint(1)



0

Create access. “1” means granted.

grant_list

tinyint(1)



0

List access. “1” means granted.

Estructura de la tabla term_access_defaults Defines default access based on {vocabulary} and {role}s. Campo

Tipo

No Nulo DefaultComentarios

vid

int(10)



0

Primary Key: The {vocabulary}.vid witch access will be set.

rid

int(10)



0

Primary Key: The {roles}.rid witch access will be set.

grant_view

tinyint(1)



0

View access. “1” means granted.

grant_update

tinyint(1)



0

Update access. “1” means granted.

grant_delete

tinyint(1)



0

Delete access. “1” means granted.

grant_create

tinyint(1)



0

Create access. “1” means granted.

grant_list

tinyint(1)



0

List access. “1” means granted.

Estructura de la tabla term_data Stores term information. Campo

Tipo

No Nulo Default Comentarios

tid

int(10)



Primary Key: Unique term ID.

Modelo de datos “Drupal 5.7” con CCK Sí

Página 48

vid

int(10)

0

The {vocabulary}.vid of the vocabulary to which the term is assigned.

name

varchar(255) Sí

description

longtext

No

NULL A description of the term.

weight

tinyint(4)



0

The term name. The weight of this term in relation to other terms.

Estructura de la tabla term_hierarchy Stores the hierarchical relationship between terms. Campo

Tipo

No Nulo Default Comentarios

tid

int(10)



0

Primary Key: The {term_data}.tid of the term.

parent

int(10)



0

Primary Key: The {term_data}.tid of the term's parent. 0 indicates no parent.

Estructura de la tabla term_lineage List of nodes sorted by hierarchy depth (nested trees) to speed up searching. Campo

Tipo

No Nulo DefaultComentarios

tid

int(10)



lineage

varchar(255) Sí

depth

Int(10)

No

0

Primary Key: The {term_data}.tid of the term. Term names of this deep with order prefix.

NULL Deep hierarchy of the term.

Estructura de la tabla term_node Stores the relationship of terms to nodes. Campo

Tipo

No Nulo DefaultComentarios

nid

int(10)



0

Primary Key: The {node}.nid of the node.

tid

int(10)



0

rimary Key: The {term_data}.tid of a term assigned to the node.

Estructura de la tabla term_relation Stores non-hierarchical relationships between terms. Campo

Tipo

No Nulo DefaultComentarios

tid1

int(10)



0

The {term_data}.tid of the first term in a relationship.

tid2

int(10)



0

The {term_data}.tid of the second term in a relationship.

Estructura de la tabla term_synonym Stores term synonyms.

Modelo de datos “Drupal 5.7” con CCK

Página 49

Campo

Tipo

No Nulo Default Comentarios

tid

int(10)



name

varchar(255) Sí

0

The {term_data}.tid of the term. The name of the synonym.

Estructura de la tabla url_alias A list of URL aliases for Drupal paths; a user may visit either the source or destination path. Campo

Tipo

No Nulo Default Comentarios

pid

int(10)



src

varchar(128) Sí

The Drupal path this alias is for; e.g. node/12.

dst

varchar(128) Sí

The alias for this path; e.g. title-of-the-story.

A unique path alias identifier.

Estructura de la tabla users Stores user data. Campo

Tipo

No Nulo Default Comentarios

uid

int(10)



name

varchar(60) Sí

Unique user name.

pass

varchar(32) Sí

User's password (md5 hash).

mail

varchar(64) No

User's email address.

mode

tinyint(4)



0

Per-user comment display mode (threaded vs. flat), used by the {comment} module.

sort

tinyint(4)

No

0

Per-user comment sort order (newest vs. oldest first), used by the {comment} module.

threshold

tinyint(4)

No

0

Previously used by the {comment} module for per-user preferences; no longer used.

theme

varchar(255) Sí

User's default theme.

signature

varchar(255) Sí

User's signature

created

int(11)



0

Timestamp for when user was created.

access

int(11)



0

Timestamp for previous time user accessed the site.

login

int(11)



0

Timestamp for user's last login.

status

tinyint(4)



0

Whether the user is active(1) or blocked(0).

timezone

varchar(8)

No

NULL

User's timezone.

language

varchar(12) Sí

User's default language.

picture

varchar(255) Sí

Path to the user's uploaded picture.

init

varchar(64) No

Email address used for initial account creation.

data

longtext

No

0

NULL

Primary Key: Unique user ID.

A serialized array of name value pairs that are related to the user. Any form values posted during user edit are stored and are loaded into the $user object during user_load(). Use of this field is discouraged and it will likely disappear in a future version of Drupal.

Modelo de datos “Drupal 5.7” con CCK

Página 50

Estructura de la tabla users_roles Maps users to roles. Campo

Tipo

No Nulo Default Comentarios

uid

int(10)



0

Primary Key: {user}.uid for user.

rid

int(10)



0

Primary Key: {role}.rid for role.

Estructura de la tabla variable Named variable/value pairs created by Drupal core or any other module or theme. All variables are cached in memory at the start of every Drupal request so developers should not be careless about what is stored here. Campo

Tipo

No Nulo Default Comentarios

name

varchar(48) Sí

The name of the variable.

value

longtext

The value of the variable.



Estructura de la tabla view_argument Stores view's arguments (normally passed to views via url). Campo

Tipo

No Nulo Default Comentarios

vid

int(10)



type

0

Primary Key: Unique view ID.

varchar(255) No

NULL

Type of view argument.

argdefault

varchar(255) No

NULL

Argument's default value.

title

varchar(255) No

NULL

View's title when argument is set.

options

varchar(255) No

NULL

Options string.

position

int(2)

No

NULL

Argument position in the url.

wildcard

varchar(32) No

NULL

Argument's wildcard string.

wildcard_substitution varchar(32) No

NULL

Wildcard replacement.

Estructura de la tabla view_exposed_filter Stores view's exposed filters (that will be shown to the final users) Campo

Tipo

No Nulo Default Comentarios

vid

int(10)



field

0

Primary Key: Unique view ID.

varchar(255) No

NULL

Formated string to indicate what field need to be exposed as a filter for the final user. Syntax: CONCAT ({view_tablefield}.tablename, “.”, {view_tablefield}.field)

label

varchar(255) No

NULL

The html label of the exposed field.

optional

int(1)

NULL

Indicates if the field-filter need to be set by the user:

No

Modelo de datos “Drupal 5.7” con CCK

Página 51 Optional (1) or mandatory (0).

is_default

int(1)

No

NULL

The field-filter if is active by default as was set as a filter. Enabled (1) or disabled (0).

operator

int(1)

No

NULL

The field-filter operator is locked or could be changed.

single

int(1)

No

NULL

The field-filter accepts multiple values. Single (1) or multiple (0).

position

int(2)

No

NULL

The order how this exposed filter will be shown.

Estructura de la tabla view_filter Stores view's filters (that shrinks the available data). Campo

Tipo

No Nulo Default Comentarios

vid

int(10)



tablename

0

Primary Key: Unique view ID.

varchar(255) No

NULL

Table name this filter refers to.

field

varchar(255) No

NULL

Formated string to indicate what field need to be applied as a filter. Syntax: CONCAT ({view_tablefield}.tablename, “.”, {view_tablefield}.field)

value

longtext

No

NULL

Value to filter.

operator

varchar(20) No

NULL

Logical operator to apply in the filter.

options

varchar(255) No

NULL

Additional options.

position

int(2)

NULL

The order how this filter will be applied.

No

Estructura de la tabla view_sort Stores view's sort conditions. Campo

Tipo

No Nulo Default Comentarios

vid

int(10)



0

Primary Key: Unique view ID.

position

int(2)

No

NULL

The order how this sort condition will be applied.

field

varchar(255) No

NULL

Formated string to indicate what field this sort refers to. Syntax: CONCAT ({view_tablefield}.tablename, “.”, {view_tablefield}.field)

sortorder

varchar(5)

No

NULL

Type of sorting. Ascendent (ASC) or descendent (DESC).

options

varchar(255) No

NULL

Additional options.

tablename

varchar(255) No

NULL

Table this sort condition refers to.

Estructura de la tabla view_tablefield Stores available view's fields and their default settings. Campo

Tipo

No Nulo Default Comentarios

vid

int(10)



0

Primary Key: Unique view ID.

Modelo de datos “Drupal 5.7” con CCK

Página 52

tablename

varchar(255) No

NULL

Table name.

field

varchar(255) No

NULL

Field name

label

varchar(255) No

NULL

Field label to be shown.

handler

varchar(255) No

NULL

Name of the handler.

sortable

int(1)

No

NULL

Indicates if the filed is sortable: Sortable (1) or Not sortable (0).

defaultsort

varchar(5)

No

NULL

Default sorting. Not sortable (0), ascendent (ASC), descentent (DESC)

options

varchar(255) No

NULL

Additional options.

position

int(2)

NULL

Global position where this field will be shown in lists.

No

Estructura de la tabla view_view Stores view's settings. Campo

Tipo

No Nulo Default Comentarios

vid

int(10)



name

varchar(32) Sí

description

varchar(255) No

NULL

An administrative description of the view.

access

varchar(255) No

NULL

Coma separated list of roles that could access this view.

page

int(1)

No

NULL

View will be provided as a page if is set to “1”.

page_title

varchar(255) No

NULL

Page's title.

page_header

longtext

NULL

Text to be shown on page's header.

No

page_header_format int(4)



page_empty

No

longtext

page_empty_format int(4)



page_footer

No

longtext

page_footer_format int(4)

0

Primary Key: Unique view ID. The name.

Format for the page's header. NULL

Text to show if view offers no results. Format for the empty text.

NULL



Text to be shown on page's footer. Format for the page's footer.

page_type

varchar(20) No

NULL

Kind of view. Examples: node, teaser, list, table, calendar, calc_table...

use_pager

int(1)

No

NULL

Include a pager to cut the results of this view.

nodes_per_page

int(5)

No

NULL

Number of nodes to be shown on each page.

url

varchar(255) No

NULL

URL of this view.

menu

int(1)

No

NULL

Provide a menu entry in the Drupal menu system.

menu_tab

int(1)

No

NULL

Shown as tab rather than in the main menu system.

menu_tab_weight

int(4)

No

NULL

Tab order.

menu_title

varchar(255) No

NULL

Menu/Tab title.

menu_tab_default

int(1)

No

NULL

Default tab.

menu_tab_default_p varchar(10) No arent_type

NULL

Parent of this menu/tab item.

menu_parent_title

NULL

A title for the menu/tab parent.

NULL

Weight of the menu/tab parent.

varchar(255) No

menu_parent_tab_w int(4) eight

No

Modelo de datos “Drupal 5.7” con CCK

Página 53

block

int(1)

No

NULL

View will be provided as a block if is set to “1”.

block_title

varchar(255) No

NULL

Block's title.

block_use_page_hea int(1) der

No

NULL

Include page's header as block header.

block_header

No

NULL

Text to be shown on block's header.

longtext

block_header_format int(4)



block_use_page_foot int(1) er

No

NULL

Include page's footer as block footer.

block_footer

No

NULL

Text to be shown on block's footer.

longtext

Format for the block's header.

block_footer_format int(4)



block_use_page_em int(1) pty

No

NULL

Include page's “empty text” as block's one.

block_empty

No

NULL

Text to show if view offers no results.

longtext

block_empty_format int(4)

Format for the block's footer.



Format for the empty text.

block_type

varchar(20) No

NULL

Kind of view for this block. Examples: node, teaser, list, table, calendar, calc_table...

nodes_per_block

int(5)

No

NULL

Number of nodes to be shown on this block.

block_more

int(1)

No

NULL

Display a more link in the block that links to the view URL (if page view is also avaliable).

breadcrumb_no_hom int(1) e

No

NULL

If is set to “1”, the breadcrumb trail for this page will discard "Home".

changed

int(11)

No

NULL

Timestamp for view last change.

view_args_php

longtext

No

NULL

PHP code to process view's arguments.

is_cacheable

int(1)

No

NULL

The view is cachable by Drupal catching system. Cachable (1) or Not cachable (0).

Estructura de la tabla vocabulary Stores vocabulary information. Campo

Tipo

No Nulo Default Comentarios

vid

int(10)



name

varchar(255) Sí

description

longtext

help

varchar(255) Sí

relations

tinyint(3)



0

Whether or not related terms are enabled within the vocabulary. (0 = disabled, 1 = enabled)

hierarchy

tinyint(3)



0

The type of hierarchy allowed within the vocabulary. (0 = disabled, 1 = single, 2 = multiple)

multiple

tinyint(3)



0

Whether or not multiple terms from this vocablulary may be assigned to a node. (0 = disabled, 1 = enabled)

required

tinyint(3)



0

Whether or not terms are required for nodes using this vocabulary. (0 = disabled, 1 = enabled)

tags

tinyint(3)



0

Whether or not free tagging is enabled for the vocabulary. (0 = disabled, 1 = enabled)

No

Primary Key: Unique vocabulary ID. Name of the vocabulary. NULL

Description of the vocabulary. Help text to display for the vocabulary.

Modelo de datos “Drupal 5.7” con CCK module

varchar(255) Sí

weight

tinyint(4)



Página 54 The module which created the vocabulary. 0

The weight of the vocabulary in relation to other vocabularies.

Estructura de la tabla vocabulary_node_types Stores which node types vocabularies may be used with. Campo

Tipo

No Nulo Default Comentarios

vid

int(10)



type

varchar(32) Sí

0

Primary Key: the {vocabulary}.vid of the vocabulary. The {node}.type of the node type for which the vocabulary may be used.

Estructura de la tabla watchdog Table that contains logs of all system events. Campo

Tipo

No Nulo Default Comentarios

wid

int(11)



uid

int(11)



type

varchar(16) Sí

Type of log message, for example "user" or "page not found.

message

longtext



Text of log message to be passed into the t() function.

severity

tinyint(3)



link

varchar(255) Sí

Link to view the result of the event.

location

text

URL of the origin of the event.

referer

varchar(128) Sí

URL of referring page.

hostname

varchar(128) Sí

Hostname of the user who triggered the event.

timestamp

int(11)

Primary Key: Unique watchdog event ID. 0

0





0

The {user}.uid of the user who triggered the event.

The severity level of the event; ranges from 0 (Emergency) to 7 (Debug)

Unix timestamp of when event occurred.

Al no resultar de interés para la migración del sistema y dada la falta de documentación de los respectivos módulos, se excluyen del diccionario de datos las tablas: ●

panels*



content_type_panel



case_tracker*



devel*



privatemsg*



tinymce*

Modelo de datos “Drupal 5.7” con CCK

Página 55

Estrategias de migración De forma adicional al análisis planteamos, muy brevemente, diversas estrategias y materiales para facilitar la ejecución del proceso de migración. Desconocedores de los entresijos del nuevo proyecto Coyote Aplication, pero conscientes del RDBS destino y sobretodo de todos los detalles del sistema origen, se planean (sin ser nada exhaustivos) las siguientes propuestas de migración de los datos MySQL al Oracle corporativo: 1) Migración “Directa” y post procesado en Oracle. 2) Scripts PHP al uso. 3) Módulos de Drupal (views + csv export).

Migración “directa” y post procesado en Oracle El gestor de base de datos MySQL (de forma nativa mediante mysqldump o con la ayuda de herramientas como phpMyAdmin) permite realizar volcados de la base de datos en distintos formatos. Uno de estos formatos es un estándard ISO vigente llamado SQL92 que Oracle puede interpretar y cargar correctamente. PhpMyAdmin a su vez, ofrece un amplio abanico de formatos de exportación en el caso de que la versión de Oracle destino no fuese compatible con SQL92. Los formatos disponibles son: ●

Datos CSV



CSV para datos de MS Excel



Microsoft Excel 2000



Microsoft Word 2000



LaTeX



Hoja de cálculo Open Document



Texto Open Document



PDF



SQL92



XML



YAML

En Oracle y con la ayuda de la documentación aportada, el administrador de la base de datos puede procesar las tablas (por ejemplo, creando vistas) de la forma que se considere pertinente la nueva aplicación.

Modelo de datos “Drupal 5.7” con CCK

Página 56

Para confirmar la viabilidad de esta alternativa, se incluye: ●

El volcado completo de la base de datos a SQL92 (con compatibilidad para Oracle). ○

coyote_exportacion1.sql.zip (140 MB / 7MB)

Comentario: Se recomienda encarecidamente esta opción, dada su simplicidad y versatilidad.

Scripts “al uso” A modo de ejemplo se ha desarrollado un breve script PHP que permite la exportación de las tablas existentes a Microsoft Excel. El script incluye un fichero de configuración que permite decidir que tablas van a ser exportadas e incluso, que tipo de query se lanza para realizar la exportación. La simple modificación del fichero de configuración permitiría ejecutar consultas cruzadas, incluyendo los operadores SQL necesarios (JOINS, queries anidadas, etc.) para que la extracción se ajuste a la demanda. El script aportado no pretende ser una solución definitiva, sino un ejemplo que puede ser modificado por los programadores de ACME, Inc (al margen de las opciones previstas en el archivo de configuración) para que se ajuste a las necesidades específicas de la migración. Se incluye: ●

El código fuente del script: ○



tironi/export.php

Los documentos Excel resultado de una exportación directa completa. ○

tironi/tablas/tablas2excel.zip

Módulos de Drupal (Views + CSV export). Drupal incorpora el módulo views que básicamente es un generador de consultas contra la base de datos. En combinación con el módulo “Views bonus pack”, cualquier consulta realizada puede exportarse a CSV (Coma Separated Values) lo que permitiría su posterior carga en Oracle. Se incluye:

Modelo de datos “Drupal 5.7” con CCK ●



Página 57

Un ejemplo de exportación parcial de la vista “acutaciones” a CSV y Excel. ○

coyote_exportacion3.csv



coyote_exportacion3.xls

URL de ejemplo (si se instala table-export): http://yoursite.com/table-export/format/export_csv/1

Comentario: Existen problemas de compatibilidad entre el módulo de y Excel. Las herramientas de Microsoft trabajan con ISO-8859-1 mientras que el módulo lo hace en UTF-8. La exportación incluida se ha realizado desde un gnu/Linux con OpenOffice con UTF-8 como charset nativo, por lo que no se ve afectado por este problema de compatiblidad, pero seria posible adaptar el módulo para trabajar con el charset de Excel corrigiendo así los problemas de compatibilidad.

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.