|
Muchos de los datos que vemos en Joomla! se almacenan en la base de datos. Una instalación base tiene más de treinta tablas. Algunas de estas están relacionadas con las extensiones del núcleo y otras para el funcionamiento interno de Joomla!.
Una descripción de las tablas de Joomla! está disponible en: http://dev.joomla.org/downloads/Joomla15_DB-Schema.htm.
Podemos acceder a la base de datos de Joomla! usando el objeto global JDatabase. La clase JDatabase es una clase abstracta, que puede ser extendida por diferentes base de datos. Actualmente sólo hay dos bases de datos incluidas en el nucleo de Joomla!, MySQL y MySQLi.
Podemos acceder al objeto global JDatabase usando JFactory:
$db = &JFactory::getDBO();
Prefijo de las tablas
Todas las tablas de bases de datos tienen un prefijo, normalmente jos_, que ayuda en el uso de una base de datos única para múltiples instalaciones de Joomla!. Cuando escribimos consultas SQL, para acomodar la variable del prefijo de las tablas, se utiliza un prefijo simbólico que es sustituido por el prefijo real en tiempo de ejecución. Normalmente es el prefijo simbólico # __ , pero podemos especificar un prefijo alternativo si queremos.
Esquema de convenciones
Cuando creamos tablas para nuestras extensiones, tenemos que seguir algunas convenciones estándar. La más importante es el nombre de la tabla. Todas las tablas deben utilizar el prefijo de la tabla y deben empezar con el nombre de la extensión. Si la tabla es el almacenamiento de una entidad específica, agregue el plural del nombre de la entidad al final del nombre de la tabla separados por un guión bajo. Por ejemplo, una tabla de artículos para la extensión 'Mi extensión "se llamaría # __miExtension_items.
Todos los campos de las tablas deben estar en minúsculas y se debe usar un guion bajo para separar las palabras; tenemos que evitar el uso de guiones si no son necesarios.
Por ejemplo, podemos nombrar a un campo de dirección de correo electrónico como email. Si tuvieramos un campo para un mail primario y un campo para un mail secundario; no hay razón para llamar al primer campo email_primario.
Si estamos usando un registro de clave principal de identificación, debemos llamar al campo ID, el cual tiene que ser del tipo integer auto_increment, y no permitir nulos. Hacer esto nos permitirá usar de una manera más eficaz el framework de Joomla!.
Los campos comunes
Podemos usar algunos campos comunes en nuestras tablas. El uso de estos campos nos permitirá tomar ventaja del framework de Joomla!.
Vamos a discutir cómo aplicar y manipular estos campos, utilizando la clase JTable, en un artículo mas adelante.
Publicación
Nuestro método de publicación nos permite determinar si se debe mostrar o no un dato. Joomla! utiliza un campo especial llamado published, de tipo tinyint (1); 0 = para los no publicados, y 1 = para los publicados.
Hits
Si queremos mantener un seguimiento del número de veces que un registro ha sido visto, podemos utilizar el campo especial hits, de tipo integer y con el valor predeterminado 0.
Bloqueando registros
Para evitar que más de un usuario intente modificar un registro a la vez podemos bloquear los registros (una forma de bloquear el software de grabación). Usamos dos campos para hacer esto el campo checked_out y el campo checked_out_time. El campo checked_out, (de tipo integer), tiene el ID del usuario que ha protegido el registro. El campo checked_out_time (de tipo datetime), almacena la fecha y hora cuando el registro se desprotegió. Una fecha nula y un ID de usuario 0 se registra si el registro no está protegido.
Ordenamientos
A menudo queremos permitir a los administradores la capacidad de elegir el orden en que aparecen los elementos. El campo ordering, de tipo integer, se puede utilizar con un numero de secuencia para determinar el orden en el que se muestran los registros. Este campo no tiene por qué ser único y se puede utilizar en conjunción con las cláusulas WHERE para formar grupos de ordenamiento.
Campo de parámetros
Utilizamos un campo de parámetro, un campo de TEXT normalmente llamado params, para almacenar información adicional acerca de los registros, lo que a menudo se utiliza para almacenar datos que determina la forma en que un registro se mostrara. Los datos contenidos en estos campos se codifican como cadenas INI (que manejamos con la clase JParameter). Antes de utilizar un campo de parámetro, se deben considerar cuidadosamente los datos que se deseen almacenar en el campo. Los datos sólo se deben almacenar en un campo de parámetro, si todos los criterios siguientes son verdaderos:
- No se utiliza para ordenar registros
- No se utiliza en las búsquedas
- Sólo existe para algunos registros
- No es parte de una relación de base de datos
|