Skip to content

Database

DevPGSV edited this page Jun 5, 2017 · 4 revisions

BASE DE DATOS

Database structure Ver imagen

Tabla config

Usada para guardar datos de configuración en forma de clave/valor.

Las claves se nombran con un sistema de namespaces por puntos, categorizando cada clave en categorías y subcategorías.

Las categorías usadas actualmente son:

  • site: configuración básica de la aplicación
  • db: información de la base de datos. En db.version guardamos la versión de la base de datos desde que iniciamos el proyecto.
  • module: información y configuración de los módulos.

La entrada db.version nos ha resultado muy útil durante la etapa de desarollo. Nos ha permitido trabajar todo el equipo con una misma base de datos, que podía ser exportada, incluida en el proyecto, y compartida a través del repositorio de git. Cuando el valor de db.version en la base de datos no coincidía con el presente en el código, el código actualizaba la base de datos usando el dump exportado previamente.

Para los módulos, siempre existen al menos 3 entradas por cada módulo (sustituyendo [ModuleName] por el nombre del módulo):

  • module.[ModuleName].module: contiene el nombre del módulo, que debería ser igual a [ModuleName].
  • module.[ModuleName].setup: este valor se cambia a true una vez el módulo ha sido instalado correctamente, y se ha ejecutado la función setup del módulo (si la implementa). Si el módulo existe, pero el valor de este campo no es true, entonces se llama a la función setup del módulo para que realice su configuración inicial.
  • module.[ModuleName].enable: su valor se alterna entre true y false, según si el módulo está activado y desactivado.

Si un módulo necesita guardar valores en formato clave/valor, se recomienda seguir la siguiente convención:

module.[ModuleName].[ConfigVariable]

Siendo [ConfigVariable] la clave del valor a guardar, evitando setup, module y enable.

Tabla users

En esta tabla se guardan los datos de los usuarios registrados. El id de usuario (PRIMARY_KEY) se genera automatimanete de forma incremental al insertar nuevos usuarios.

En esta tabla tenemos varias columnas que no estamos usando actualmente, pero que introdujimos en un principio, y que nos facilitarán en un futuro ampliar la funcionalidad de la web en este aspecto.

Tabla users-1auth

Los datos de autenticación de un usuario se guardan en esta tabla. Se guarda la id del usuario al que referencia eestos datos de sesión, la contraseña hasheada, un salt de servidor y otro salt de cliente. El proceso de login se explica con más detalle en Security.

Tabla user-sessions

Cuando un usuario se loguea en la web, se crea una entrada en esta tabla con los datos necesarios para mantener la sesión abierta para el usuario de forma segura.

Creando varias entradas para un mismo usuario en esta tabla, un usuario puede tener sesiones abiertas en varios dispositivos al mismo tiempo.

Algunas columnas de esta tabla no están siendo usadas actualmente, debido a temas de privacidad y recolección de datos.

Tabla roles

Los roles están definidos en esta tabla. Hay 3 roles: root, administrator y user. Los roles están identificados por una id incremental según la cantidad de permisos disminuye. Esto permite comprobar si un usuario tiene ciertos permisos, según si el id de su rol es menor o igual a cierto valor.

Tabla watchdog

Esta tabla se usa para guardar un registro de los cambios en la web, por ejemplo, cambios de configuración, activación y desactivación de módulos y temas, etc...

Tablas hc_m_[ModuleName]_[Table]

Los módulos que deseen crear tablas para guardar datos deberían seguir un patrón similar a hc_m_[ModuleName]_[Table] para evitar colisiones de nombres. Cada módulo que lo necesite creará la tabla en la función setup de su clase, con las colunas correspondientes.