lunes, 10 de octubre de 2011

Tipos de Estructura

SEMANA 3

ESTRUCTURA DE LA BASE DE DATOS

La estructura de la base de datos es bastante sencilla. Las convenciones utilizadas aparecen implícitamente en este documento. Por ejemplo, la mayoría de los objetos se indexan con un entero autoincrementado cuyo nombre es de tipo id_objet, y que se declara como clave primaria en la tabla apropiada.
NB: este artículo necesita ser actualizado y nadie lo está haciendo todavía. Hay que leerlo como un elemento que ayuda a comprender el funcionamiento de SPIP, pero ya no como una referencia. Si quieres contribuir a la documentación rehaciendo este artículo, ¡no lo dudes!

Contenido referido a la redacción [1]

Las secciones: spip_rubriques

-  Cada sección se identifica por su id_rubrique .
-  id_parent es la id_rubrique de la sección que contiene esta sección (cero si la sección se encuentra en la raíz del sitio).
-  tire, descriptif, texto se explican ellos mismos [2].
-  id_secteur es la id_rubrique de la sección inicial de la jerarquía que contiene la sección actual. Una sección depende de una sección que depende de una sección… hasta una sección colocada en la raíz del sitio; es esta última sección la que determina el id_secteur. Este valor calculado previamente permite acelerar ciertos cálculos del espacio público (de hecho las breves son clasificadas únicamente por sector y no según toda la jerarquía).
-  maj es un campo técnico [3] calculado automáticamente por MySQL. Contiene la fecha de la última modificación introducida en la tabla.
-  export, id_import son dos campos reservados para funcionalidades futuras.
Los artículos: spip_articles


-  Cada artículo está identificado por su id_article.
-  id_rubrique indica en que sección está incluido el artículo.
-  id_secteur indica el sector correspondiente a la sección antes mencionada (ver el párrafo precedente para advertir la diferencia entre los dos).
-  tire, surtitre, soustitre, descriptif, chapo, texto, ps se explican ellos mismos.
-  date es la fecha de publicación del artículo (si todavía no está publicado, es la fecha de creación).
-  date_redac es la fecha de publicación anterior si introduces un valor; si no, es « 0000-00-00 ».
-  status es la situación actual del artículo: prepa (en curso de redacción), prop (propuesto a su publicación), publie (publicado), refuse (rechazado), poubelle (en la papelera).
-  accepter_forum: permite seleccionar manualmente si el artículo acepta foros o no (por omisión, sí).
-  maj: el mismo significado que en la tabla de las secciones.
-  export es un campo reservado para funcionalidades futuras.
-  images es un campo que contiene la lista de las imágenes utilizadas por el artículo, en un formato propio. Este campo se genera por spip_image.php3..
-  visites y referers son usados para las estadísticas sobre los artículos. El primero es el número de visitas del artículo en el espacio público; el segundo contiene un extracto de hash de las visitas externas para recordar esos diferentes enlaces externos. Ver inc-stats.php3.
Los autores/as: spip_auteurs


-  Cada autora o autor es identificado por su id_auteur.
-  nom, bio, nom_site, url_site, pgp son, respectivamente, el nombre de la autora o autor, una corta biografía, su dirección de email, el nombre de la URL de su sitio Web, y su clave PGP. Son informaciones que él o ella puede modificar libremente.
-  email, login son su email de inscripción y su login. Sólo puede modificarlos un administrador.
-  pass es el hash MD5 de la contraseña.
-  htpass es el valor encriptado (es decir, generado mediante crypt ()) de la contraseña para el .htpasswd.
-  statut es el estado del autor/a: 0minirezo (administrador/a), 1comite (redactor/a), 5poubelle (en la papelera), 6forum (registrado en los foros, cuando están definidos en el modo «por registro»).
-  maj tiene el mismo significado que en las otras tablas.
Las breves: spip_breves


-  Cada breve está identificada por su id_breve.
-  id_rubrique es la sección (de hecho el sector) en la cual está clasificada la breve.
-  tire, texto, lien_titre, lien_url son el título, el texto, y el nombre y la dirección de referencia asociados a la breve.
-  date_heure es la fecha de la breve.
-  statut es el estado de la breve: prop (propuesta a su publicación), publie (publicada) o refuse (rechazada).
-  maj: igual que en las otras tablas.
Las palabras clave: spip_mots


-  Cada palabra clave es identificada por su id_mot.
-  El type de la palabra clave es el tipo, o grupo, elegido para esa palabra clave. Definiendo varios tipos se obtienen diversas clasificaciones independientes (por ejemplo «tema», «época», «país»...).
-  titre, descriptif, texto se explican ellos mismos.
-  maj: igual que en las otras tablas.
Los sitios sindicados: spip_syndic


-  Cada sitio sindicado es identificado por su id_syndic.
-  id_rubrique e id_secteur contienen la posición en la jerarquía del sitio donde se encuentran los contenidos sindicados.
-  nom_site, url_site, descriptif son el nombre, la dirección y la descripción del sitio sindicado.
-  url_syndic es la dirección del archivo dinámico utilizado para recoger los contenidos sindicados (normalmente se trata de la url_site seguida de backend.php3).
Los artículos sindicados: spip_syndic_articles


-  Cada artículo sindicado es identificado por su id_syndic_article.
-  id_syndic se refiere al sitio sindicado de donde es extraído el artículo.
-  titre, url, date, lesauteurs se explican ellos mismos.

Elementos interactivos

Los mensajes de los foros: spip_forum


-  Cada mensaje de un foro es identificado por su id_forum.
-  El objeto al cual está vinculado el foro es identificado por su id_rubrique, id_article o id_breve. Por omisión estos valores son iguales a cero.
-  El mensaje padre (es decir, el mensaje al que se responde con el mensaje actual) es identificado por id_parent. Si el mensaje no es una respuesta a ningún otro mensaje este valor es cero.
-  titre, texto, nom_site, url_site son el título y el nombre del mensaje, y el nombre y la dirección del objeto relacionado.
-  auteur y email_auteur son el nombre y el email declarados por la autora o autor. En el caso de los foros con registro, no tienen porque ser los mismos que los datos guardados del autor (es decir, en la tabla spip_auteurs).
-  id_auteur identifica al autor o autora del mensaje en el caso de los foros con inscripción.
-  statut es el estado del mensaje: publie (visible en el espacio público), prive (escrito en relación a un artículo del espacio privado), privrac (escrito en el foro interno en el espacio privado), off (suprimido o a validar, según la moderación de los foros -a priori o a posteriori-).
-  ip es la dirección IP del ordenador de conexión al redactar una contribución en los foros públicos.
-  maj: igual que en las otras tablas.
Las peticiones: spip_petitions


-  id_article identifica el artículo al cual está asociada la petición (una sola petición por artículo).
-  email_unique, site_obli, site_unique, message definen la configuración de la petición: la dirección email de los firmantes debe ser única en las firmas; la dirección Web es obligatoria y debe ser única; un mensaje relacionado con las firmas es autorizado (oui o non).
-  texto es el texto de la petición.
-  maj igual que en las otras tablas.
Las firmas de las peticiones: spip_signatures


-  Cada firma es identificada por su id_signature.
-  id_article identifica el artículo en el que está incluida la petición que tiene la firma.
-  nom_email, ad_email, nom_site, url_site son el nombre, la dirección email, así como el sitio Web escritos por la persona firmante.
-  message es el mensaje eventualmente introducido por la persona firmante.
-  statut es el estado de la firma: publie (aceptada), poubelle (suprimida) ; cualquier otro valor da el valor de la clave de validación utilizada para la confirmación por email.
-  maj: igual que en las otras tablas.

Las relaciones entre los objetos

Estas tablas no generan ningún contenido, simplemente una relación entre los objetos presentes en otras tablas. Así:
-  spip_auteurs_articles especifica la relación entre autores/as y sus artículos. Si un id_auteur está asociado a un id_article, eso quiere decir que el autor/a en cuestión ha escrito o coescrito el artículo (puede haber varios artículos por autor/a y viceversa).
-  spip_mots_articles la define la relación para relacionar los artículos por palabras clave.

Gestión del sitio

La tabla spip_meta es fundamental. Contiene parejas (nom, valeur) indexadas por el nombre (clave primaria); estas parejas permiten almacenar diferentes informaciones como la configuración del sitio o la versión instalada de SPIP.
La tabla spip_forum_cache es utilizada para adaptar el sistema de caché a la inmediatez de los foros. Para cada fichero de la caché que haya dado lugar a una búsqueda en la tabla spip_forum, la tabla spip_forum_cache almacena los parámetros de la búsqueda (artículo, sección, breve y eventual mensaje padre del foro). Cuando un mensaje es enviado, sus parámetros son comparados con los guardados en spip_forum_cache, y para cada correspondencia encontrada el fichero caché hallado en la tabla es borrado. Así los mensajes no tienen que esperar a que la página en la que se encuentran vuelva a ser calculada para aparecer en el espacio público.

Indexación (motor de búsqueda)

Seis tablas son utilizadas por el motor de búsqueda. Se dividen en dos categorías.
El diccionario de indexación: spip_index_dico
Cada palabra encontrada durante la indexación es almacenada en esta tabla, así como los 64 primeros bits de su hash MD5. Es la palabra que sirve de clave primaria, permitiendo así efectuar muy rápidas búsquedas sobre el comienzo de una palabra; se recuperan entonces los hash que satisfacen la búsqueda, con el fin de efectuar la búsqueda propiamente dicha en las tablas de indexación.

Las tablas de indexación: spip_index_*
Estas tablas, son cinco, generan cada una la indexación de un tipo de objeto: artículos, secciones, breves, autores/as, palabras clave. Se almacena una entrada por palabra y por objeto. Cada entrada contiene el hash de la palabra (de hecho, los 64 bits más importantes del hash MD5, cf. debajo), el identificador del objeto indexado (por ejemplo el id_article para un artículo), y el número de puntos asociado a la indexación de la palabra dentro del objeto. Este número de puntos es calculado en función del número de ocurrencias de la palabra, ponderado por el campo donde se producen esas apariciones: una ocurrencia en el título de un artículo genera más puntos que una ocurrencia en el cuerpo del artículo.

1 comentario:

  1. Me alegra mucho haber encontrado esta pagina, entre tanta y tanta informacion que he indagado.
    Saludes desde Colombia.

    ResponderEliminar