lunes, 26 de mayo de 2014

Ejemplo de formularios de inserción, edición y consulta para PHP y MySQL

La nueva versión del programa PHP de prueba "test2-phpmysql" incluye nuevos archivos con las funciones de inserción, edición y consulta, con el objetivo de comprender los mecanismos de interacción con la base de datos MySQL, y demostrar los principios y funciones de programación básicos para la configuración de los formularios que hacen posible la gestión de las bases de datos profesionales.

Descargar test2-phpmysql.zip

Algunos aspectos relevantes para comprender el funcionamiento del programa.
  • Almacenar resultados de una consulta MySQL en una variable denominada $results
  • Empleo de la estructura de control condicional "while"
  • Representar cada registro de los resultados obtenidos en la consulta con la función "mysql_fetch_assoc"

Diseñando formularios en PHP: el interfaz de MySQL

A diferencia de MS Access, que permite la creación de formularios integrados en el propio programa, MySQL no consta de tales capacidades. Para ello es necesario diseñar los formularios en HTML y PHP de forma tal que permitan la interacción entre el usuario y el sistema de base de datos en los puntos y aspectos que se definan. Éstos pueden ser los siguientes:

Insertar registros
La función insertar registros queda patente en todos los sistemas de información y bases de datos. Siempre será necesario alimentar las tablas de la BD de forma manual o automática. En tales casos, se emplean los siguientes elementos:
  • Formulario HTML que contenga los campos de la base de datos. Los campos deben contener la denominación correspondiente con el atributo "name=" con la finalidad de que la información enviada a través del formulario pueda ser recuperada con la variable $_POST o $_GET. Contendrá además un botón para el envío de datos. 
  • Estructura condicional en PHP que permita detectar si el usuario envió el formulario. Por ejemplo: if($_POST[insert]){ instrucciones a ejecutar + SQL }
  • Instrucción SQL "INSERT INTO tabla SET campo1='valor1', campo2='valor2'" que permite la introducción o adición de un nuevo registro en la tabla de la base de datos que se especifique.
  • Método de redirección Javascript para que una vez insertado el registro la página del formulario sea actualizada.
Modificar y eliminar registros
La función de modificar resulta esencial para la actualización de registros su edición y tratamiento. Para elaborar un formulario de edición de registros se necesitan los siguientes elementos:
  • Consulta SQL para mostrar todos los registros de la tabla especificada. La instrucción empleada es "SELECT * FROM tabla WHERE condición" que permite la selección de todos los registros de la tabla que cumplan la condición que se establezca.
  • Estructura condicional en PHP "while" que permita recorrer todos los resultados obtenidos con la consulta, uno a uno, imprimiendo formularios para cada uno de los registros. 
  • Los formularios para cada uno de los registros, constarán de un campo oculto que almacenará el número de identificación del registro. El identificador permitirá indicar a posteriori sobre qué registro se realizarán los cambios efectuados. Además cada valor de cada campo tendrá que ser recogido en un campo de texto o área de texto del formulario a fin de que pueda ser modificable. Finalmente, el formulario de cada registro, constará de dos botones; el primero para el envío de datos que identifique que el registro será modificado con los nuevos valores que el usuario hubiese especificado; el segundo para indicar que el registro será eliminado de la base de datos
  • Cuando el usuario modifica uno de los formularios y hace clic en el botón de actualizar o modificar el registro, se necesita una estructura condicional en PHP que permita detectar si el usuario envió el formulario, por ejemplo: if($_POST[edit]){ instrucciones a ejecutar + SQL } y  if($_POST[delete]){ instrucciones a ejecutar + SQL }
  • Instrucción SQL para la acción de edición: "UPDATE tabla SET campo1='valor1', campo2='valor2' WHERE id='$_POST[id]'" que permite la modificación de los valores de los campos del registro especificado en la cláusula condicional WHERE. Es decir, la actualización o cambio de los valores se produce cuando el campo "id" de la tabla sea igual al valor enviado desde el formulario con el campo oculto que almacena el identificador del registro. 
  • Instrucción SQL para la acción de eliminación: "DELETE FROM tabla WHERE id='$_POST[id]'" que permite eliminar el registro de la tabla cuyo campo "id" sea igual al valor enviado desde el formulario con el campo oculto que almacena el identificador del registro.
Buscar registros
La función buscar registros debe ser incluida en todas las tablas y no únicamente la capacidad de filtrado por campos. En muchos casos las tablas principales requieren métodos de consulta avanzados que permitan procesar consultas a texto completo. En este aspecto MySQL proporciona prestaciones a tener en cuenta. Para elaborar un formulario de consulta de registros se necesitan los siguientes elementos:
  • Formulario de consulta HTML con un campo de texto para que el usuario exprese la consulta y un botón para lanzar o ejecutar dicha consulta.
  • Estructura condicional en PHP "if" que permita detectar que la consulta fue efectuada por el usuario al presionar el botón buscar. Por ejemplo: if($_POST[search]){ instrucciones a ejecutar + SQL }
  • Instrucción SQL para la acción de buscar: "SELECT * FROM tabla WHERE indexer LIKE '$_POST[query]'" que permite la comparación de la cadena de consulta del usuario con respecto al campo de indexación "indexer".
  • Estructura condicional en PHP "while" que permita recorrer todos los resultados obtenidos con la consulta, uno a uno, imprimiendo formularios para cada uno de los registros. 

Ejemplo de archivo de instalación y configuración PHP+MySQL

A partir del archivo de configuración (o conexión con BD) y del archivo de instalación con las especificaciones técnicas de las tablas y sus campos se hace posible el desarrollo de una primera prueba de funcionamiento del binomio PHP-MySQL. 


Para entender el funcionamiento del programa de prueba test1-phpmysql.zip es necesario comprender  los siguientes aspectos:
  • Código Javascript especializado en redirección de páginas web para su actualización
    <script language='javascript'>window.location.href='index.php';</script>

Diseñando el archivo de instalación de base de datos MySQL en PHP

El desarrollo de bases de datos en entornos AMP (Apache, MySQL y PHP) no sólo requieren del empleo de la herramienta de gestión PhpMyAdmin. En la mayor parte de los casos, se necesitan programas PHP que permitan la instalación o creación automática de la base de datos con las características determinadas por el documentalista en su pliego de especificaciones. A continuación se explican distintos fragmentos de un archivo de instalación. 

Parte1. Creación del archivo de configuración
El programa de instalación debe tener en cuenta que el nombre de usuario, contraseña, servidor de instalación y nombre de la base de datos que compondrán el archivo de configuración. Por tanto se debe crear un formulario que sea capaz de recoger dicha información, procesarla y crear un archivo independiente con los datos señalados. Éstos serán utilizados en sucesivos pasos de instalación como la creación de la base de datos y la instalación de las tablas y sus campos.

Parte2. Instalación de la base de datos
Cualquier operación en MySQL se lleva a cabo en PHP con la función "mysql_query()" que permite introducir cualquier tipo de sentencia, consulta u operación con la base de datos. En este caso, se observará que las consultas SQL coinciden con las experimentadas anteriormente en PhpMyAdmin, lo que significa que son igualmente interpretadas cuando el archivo PHP es ejecutado en el servidor Apache.

mysql_query("CREATE DATABASE nombre-base-de-datos ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci",$con);
echo "<div><li>La base de datos <b>nombre-base-de-datos</b> fue creada correctamente.</li></div>";

En el código anterior se observa la función mysql_query que contiene la consulta SQL que se ejecutará en el archivo de instalación. En color rojo se observa una variable $con que corresponde a los datos de conexión o configuración básicos para acceder a MySQL y poder ejecutar la consulta SQL. Finalmente las últimas líneas corresponden a la función "echo" empleada para imprimir en pantalla un mensaje que indique al usuario que se creó la base de datos correctamente. 

Parte3. Instalación de la tabla y sus campos
Una vez creada la base de datos, se deben crear las distintas tablas de la misma. Para ello es necesario en primer lugar seleccionar la base de datos en la que se realizará la operación. En este sentido se emplea la función "mysql_select_db" que contiene el nombre de la tabla y la variable $con con los datos de conexión para acceder a MySQL. Seguidamente, MySQL interpreta que la operación que se efectuará será realizada en la base de datos ya seleccionada. A continuación se observará que se vuelve a emplear la función "mysql_query()" que siguiendo el mismo patrón que en el caso anterior, contiene la consulta SQL correspondiente a la creación de una tabla denominada "catalogue" con todos los campos especificados y sus correspondientes características. El ejemplo corresponde a un caso real de instalación de una tabla bibliográfica.

mysql_select_db("nombre-base-de-datos", $con);
mysql_query("CREATE TABLE catalogue (
id                         INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id),
idadmin                VARCHAR(25) CHARACTER SET utf8 COLLATE utf8_general_ci,
date_entry            VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
date_update         VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
uri                        VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
typedocid             VARCHAR(25) CHARACTER SET utf8 COLLATE utf8_general_ci,
typedoc                  VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
subtypedoc               VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
signature_decimal         VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
signature_surname        VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
signature_head          VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
title                         VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
title_alf                 VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
subtitle               VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,      
othertitle           VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,  
uniformtitle          VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
uniformtitle_alf      VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
translatetitle          VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
language           VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
edition             VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
authorities           TEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
authorities_alf          VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
lawtype                 VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
lawdate              VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
lawcode           VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
lawcountry      VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
lawregion           VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
lawcity                VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
periodicity           VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
pubplace           VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
pubdate            VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
date1              VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
date2             VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
serie              VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
nserie             VARCHAR(25) CHARACTER SET utf8 COLLATE utf8_general_ci,
physical           VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
npages            VARCHAR(25) CHARACTER SET utf8 COLLATE utf8_general_ci,
ncms            VARCHAR(25) CHARACTER SET utf8 COLLATE utf8_general_ci,
summary       TEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
fulltext1           MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
fulltext2           MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
fulltext3           MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
fulltext4           MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
fulltext5           MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
notes               TEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
rights               VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
rightscases       VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
decimalid1        VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_general_ci,
decimalnumber1  VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
decimaltext1          VARCHAR(300) CHARACTER SET utf8 COLLATE utf8_general_ci,
decimalid2              VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_general_ci,
decimalnumber2  VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
decimaltext2          VARCHAR(300) CHARACTER SET utf8 COLLATE utf8_general_ci,
categoryid           VARCHAR(25) CHARACTER SET utf8 COLLATE utf8_general_ci,
category1           VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
category2           VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
category3           VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
category4           VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
bagtags               TEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
edocument            VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
urlresources          TEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
reference           TEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
cite                     VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationid1           VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationtype1          VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationprop1          VARCHAR(150) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationtitle1          VARCHAR(300) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationid2           VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationtype2          VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationprop2          VARCHAR(150) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationtitle2          VARCHAR(300) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationid3           VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationtype3          VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationprop3          VARCHAR(150) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationtitle3          VARCHAR(300) CHARACTER SET utf8 COLLATE utf8_general_ci,
indexer            LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
FULLTEXT(indexer)
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci
",$con);
echo "<div><li>La tabla <b>catalogue</b> fue creada correctamente.</li></div>";


Aprendiendo a crear páginas PHP con conexión a base de datos MySQL

El complemento perfecto de la base de datos MySQL es el lenguaje de programación PHP, Hypertext Pre-processor, orientado al desarrollo de aplicaciones y páginas web dinámicas. PHP es habitualmente empleado para crear aplicaciones con interfaz basado en formularios web que pueden interactuar con las tablas y bases de datos de MySQL. Gracias a esta posibilidad es posible crear buscadores, gestores de contenidos, blogs, wikis y prácticamente cualquier sistema de información. El lenguaje de interacción con la base de datos MySQL es el Structured Query Language, también conocido como SQL.

Teniendo en cuenta estas consideraciones, se hace indispensable conocer algunos aspectos básicos de la programación en lenguaje PHP y especialmente de su conexión con la base de datos MySQL. Es lo que se conoce como archivo de configuración que almacena la información necesaria para acceder a MySQL mientras se ejecute el programa diseñado en PHP y por ende realizar todas las consultas que se deseen.

Archivo de conexión
Se denomina archivo de conexión, aquel que contiene la información básica para acceder como usuario de la base de datos principal, en este caso MySQL. Tal como se puede observar a continuación, existe una función denominada "mysql_connect()" que contiene diversos datos indispensables para la conexión con la base de datos. En primer lugar la dirección IP o nombre DNS del servidor donde se encuentra instalada la BD. Si se trata de una instalación local como puede resultar el caso de Server2Go, el valor a introducir es "localhost" o "127.0.0.1" o bien "127.0.0.1:4001". Seguidamente aparecen las cadenas de caracteres "root" y "root" que especifican en el siguiente orden, el usuario y la contraseña de acceso a la BD. Habitualmente cuando se tratan de instalaciones locales, el usuario y contraseña siempre suelen ser las especificadas, dado que resulta una convención entre los programadores para referirse a tal caso. Finalmente otro valor de gran importancia es el nombre de la base de datos, que como puede observarse es almacenado en una variable que lo identifica explícitamente. Véase Art2. Recuperación de información en base de datos. En: Aplicaciones Documentales de la Recuperación de Información.

<?php  
$con = 
mysql_connect('localhost', 'root', 'root') or die ('error: no se pudo conectar');
$database = '
nombre-base-de-datos';
?>

Estas líneas configuran un sencillo archivo que puede tomar distintos nombres, como por ejemplo "config.php", "connect.php", "info.php" siendo utilizado en todos los casos siempre que es necesaria cualquier operación con la BD. La forma de implementarlo en otros programas PHP es la siguiente:

<?php
include("config.php");
// 
--> Instrucciones de consulta SQL <--
?>

En este caso se muestra el código de una página PHP que incluye las instrucciones del archivo de configuración o conexión anterior, para posteriormente escribir las instrucciones de consulta SQL que se estudiarán en sucesivos capítulos. El método de inclusión de otras páginas es denominado método include. Véase Art13. Diseño de estructuras web: iframe vs include. En: Arquitectura de la Información y Desarrollo Web Avanzado y PHP: include - Manual

miércoles, 7 de mayo de 2014

Creación de bases de datos, tablas y campos con el SGBD PhpMyAdmin

El SGBD PhpMyAdmin es una herramienta de ayuda a la gestión y administración de la base de datos MySQL, por medio de un interfaz de páginas web desarrolladas en lenguaje PHP. Permite la creación y eliminación de bases de datos, tablas, campos, así como la edición e inserción de datos y contenidos. Para ello se ejecutan las consultas correspondientes en lenguaje SQL. 

Crear base de datos
En PhpMyAdmin es posible crear tantas bases de datos como sean necesarias, pudiendo ser gestionadas todas desde la misma herramienta, aspecto que MS Access no permite. Para crear una nueva base de datos, seguir los siguientes pasos:
  • Acceder a PhpMyAdmin - http://127.0.0.1:4001/phpmyadmin/ -> usuario y contraseña "root" -> Página de inicio de PhpMyAdmin -> Crear nueva base de datos -> Escribir nombre de base de datos sin mayúsculas, acentos, caracteres extraños, guiones bajos, signos de puntuación -> Seleccionar cotejamiento UTF-8 General Ci -> Crear base de datos
Al crear una nueva base de datos se observará la siguiente instrucción SQL. En ella se indican las instrucciones CREATE DATABASE, que indican la creación de una base de datos con el nombre establecido y con el DEFAULT CHARACTER SET o set de caracteres por defecto UTF8 cotejado.
CREATE DATABASE `nombre-base-de-datos` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
De esta forma es posible el aprendizaje de SQL con PhpMyAdmin e incluso la modificación de las sentencias y consultas utilizadas por el programa. Otro de los aspectos que se advierten es la creación de la base de datos y su presencia vacía de tablas en la columna de bases de datos. Automáticamente PhpMyAdmin selecciona la base de datos recientemente creada para la edición de tablas.

Crear tabla
Al igual que en MS Access, MySQL permite la creación de tablas para la base de datos creada recientemente. El proceso de creación de tablas es el siguiente:
  • Seleccionar la base de datos correspondiente -> Observar la opción "Crear nueva tabla en la base de datos" -> Escribir el nombre de la tabla que se creará en la base de datos seleccionada -> Escribir el número de campos de la tabla -> Continuar -> En pantalla aparecerán tantas filas como campos se especificasen para la creación de la tabla
Crear campos
En PhpMyAdmin la tabla y los campos son dos pasos en uno. De hecho al crear la tabla y especificar el número de campos aparece un formulario para la concreción de los mismos. Se procederá de la siguiente forma:
  • Escribir los datos correspondientes a los campos, identificados en cada una de las filas. Esto es determinar el nombre del campo, el tipo de campo, la longitud de valores, el cotejamiento, atributos, nulidad del campo, valores predeterminados, opciones extra, tipo de campo clave primario, campo índice, campo único, campo indexable a texto completo, comentarios.
  • El siguiente paso es el establecimiento de los motores de almacenamiento y el cotejamiento de la tabla que se creará. El cotejamiento debe coincidir con el set de caracteres de la base de datos, por lo tanto será utf8_general_ci. En cuanto al motor de almacenamiento se recomienda el estándar MyISAM, ya que permite la recuperación en lenguaje natural y la indexación del contenido a texto completo. Una vez preparados todos los datos, se hará clic en el botón "grabar".
Al grabar los datos en la base de datos, PhpMyAdmin realiza la operación de creación tanto de la tabla como de los campos, mostrando a la par la consulta SQL derivada del proceso, similar a la que se muestra a continuación.
CREATE TABLE `prueba` (
`id` INT NOT NULL ,
`titulo` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
`descripcion` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
PRIMARY KEY ( `id` ) ,
FULLTEXT (
`titulo` ,
`descripcion`
)
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;
Se puede observar cómo todos los aspectos reflejados en el formulario anterior fueron convertidos en una sentencia de consulta SQL, lo cual demuestra una vez más, que todo cuanto se opera en el programa PhpMyAdmin es realizado en este estándar, de aquí su importancia e imprescindible conocimiento para operar con bases de datos profesionales.

Dar el salto a MySQL

Hasta el momento se han explicado los fundamentos básicos del diseño de una base de datos, su edición y preparación de cara a su gestión posterior. Pero MS Access tiene problemas insalvables como la imposibilidad de gestionar millones de registros, difícil de adaptar al entorno web, no permite la colaboración de varios editores simultáneos en el sistema, limitado por el interfaz del SGBD integrado y Visual Basic, SQL limitado, entre otros muchos aspectos. Por este motivo, se recomienda "Dar el salto a MySQL". Si bien es cierto que los métodos de trabajo cambiarán con MySQL también lo es que dominar la técnica proporciona una mayor libertad y capacidad en el desarrollo de sistemas de información, no existiendo ningún tipo de límite, excepto la imaginación del documentalista.


Qué se necesita para dar el salto a MySQL
Para poder dar el salto es necesario disponer de las herramientas adecuadas que son las siguientes:
  • Servidor web Apache. El servidor web Apache es el soporte básico para el funcionamiento de las páginas web en la red. En este caso es necesario para crear las páginas web que permitirán interactuar con MySQL. Un servidor Apache se encarga de recibir y dar respuestas a los equipos clientes que solicitan una determinada página web o IP, por medio del protocolo HTTP. Ello permitirá que cuando un usuario acceda al formulario de edición del catálogo pueda guardar los datos de la catalogación y procesarlos en la base de datos MySQL. 
  • Compilador intérprete de PHP. Aunque los formularios del interfaz de la base de datos se programarán en lenguaje de marcado HTML, el procesamiento de la información que es remitida se realiza siempre con algún lenguaje del lado del servidor. Esto significa que existen lenguajes de programación especializados en el pre-proceso del hipertexto. Todas las respuestas que vemos en el navegador web son resultado de una programación PHP invisible para el usuario, que determina si el formulario del catálogo fue correctamente rellenado y debe enviar al usuario a una página de aviso para que lo subsane, o bien si fue correctamente cumplimentado, sugerirle con la carga de otra página que imprima el código de barras y su signatura. Tales decisiones se realizan automáticamente en virtud de la programación desarrollada en este caso con PHP.
  • Base de datos MySQL. La base de datos MySQL es la pieza clave en todo el instrumental. Por sí sola requeriría un terminal de consulta para poder interactuar. Ello requeriría del usuario un conocimiento completo de todo el lenguaje de consulta SQL. Dado que no es el caso, la base de datos suele acompañarse del SGBD PhpMyAdmin que proporciona una interfaz visual que permite realizar la mayoría de las operaciones con ella. De esta forma todo lo aprendido con MS Access puede ser aprovechado con MySQL y llevar a efecto el salto mencionado.
  • Alojamiento o espacio en disco. Si bien es cierto que tales herramientas requieren una alojamiento web para funcionar, también lo es el hecho de que pueden ser instaladas en un equipo de forma local (127.0.0.1) 
  • Editor de código fuente. Si bien la estructura y desarrollo de la base de datos puede realizarse de forma sencilla aprendiendo el SGBD PhpMyAdmin, hay que tener en cuenta que la interfaz de interacción con la base de datos puede no serlo tanto. Ello es debido a que exige del Documentalista-Desarrollador una experiencia de programación media en PHP y HTML como mínimo. En tal caso la mejor herramienta de desarollo es un Bloc de notas y el editor Eclipse PDT especializado en programación PHP. Teniendo en cuenta la imposibilidad de explicar todo ello en un curso tan reducido, todas las explicaciones en materia de formularios e interacción con la base de datos serán respaldadas con ejemplos ya programados que apenas requieran modificación.

Descargar la herramienta todo en uno: Server2Go
Para realizar las pruebas correspondientes a la base de datos MySQL se utilizará la distribución Server2Go. Se trata de una aplicación portable de las herramientas anteriormente descritas y que no requiere instalación. Es capaz de funcionar en pendrives, discos duros externos y básicamente en cualquier equipo con sistema operativo Windows. La versión que se pone a disposición ha sido configurada y preparada especificamente para la ocasión de tal manera que no será necesario realizar ningún cambio añadido, estando disponible desde el principio para su funcionamiento. Algunos requerimientos básicos son la disposición del navegador Mozilla Firefox que será el utilizado por defecto por Server2Go para crear la sesión del servidor. 


Ejemplo de macros, navegación y consulta


Con el objetivo de poner en práctica lo estudiado en torno a las consultas y las macros se proporciona el siguiente ejemplo de la base de datos biblioteca_v03.accdb, disponible para su descarga en el siguiente enlace.

Descargar biblioteca_v03.accdb

Cambios producidos
Los cambios producidos en la versión 03 corresponden a un funcionamiento completo de todos los botones de navegación, introducción de macros para el préstamo y la indexación de contenidos en el catálogo. También se incluye un ejemplo de consulta utilizando el operador "Como" con truncamiento. Por otra parte todos los estilos de la base de datos fueron armonizados y normalizados.

Fundamentos de bases de datos y diseño con MS Access: Informes y macros. Parte5

Informes
Los informes permiten generar documentos cuya información procede de una tabla determinada, permitiendo su impresión vía PDF o impresora. Los informes pueden contener información de tablas relacionadas, pueden incluir campos calculados, etc. Los informes constan de diversas partes, a saber: 
  • Encabezado de informe. Se introduce el título del informe.
  • Encabezado de página. Títulos de las columnas de los campos presentados en el informe.
  • Encabezado de grupo. Identificación del grupo de registro.
  • Detalle. Visualización del registro propiamente dicho
  • Pie de grupo. Utilizado para campos calculados, sumatorios, etc.
  • Pie de página. Página y fecha.
  • Pie de informe. Campos calculados para todo el informe.
La creación de informes resulta sencilla con el siguiente protocolo de trabajo:
  • Menú Crear -> Crear informe en blanco -> Agregar campos existentes -> Arrastrar campos de la lista de campos a la página del informe. (Idéntico funcionamiento al de los formularios) Es posible arrastrar campos relacionados de otras tablas y mostrar la información.
  • También es posible introducir subformularios en los informes para mostrar información complementaria mucho más extensa. Para ello, seleccionar la Vista Diseño del informe y utilizar la herramienta para crear subformularios.
Macros
Las macros constituyen elementos fundamentales para el desarrollo de los sistemas de bases de datos MS Access. Ello es debido a que es posible automatizar múltiples procesos que con las tablas y formularios no es posible. Para poder trabajar adecuadamente con macros es necesario, preparar la base de datos y habilitarla para su correcto funcionamiento. Por tanto serán necesarios los siguientes pasos:
  • Botón principal de Office -> Opciones de Access -> Centro de confianza -> Configuración del centro de confianza -> Barra de mensajes -> Mostrar la barra de mensajes en todas las aplicaciones cuando se haya bloqueado el contenido
  • Botón principal de Office -> Opciones de Access -> Centro de confianza -> Configuración del centro de confianza -> Configuración de macros -> Habilitar todas las macros
Cambiados estos parámetros es necesario salir de la aplicación y volver a cargar la base de datos. En caso contrario, no se aplicarán los cambios necesarios para que se puedan ejecutar las macros de forma segura. Para crear macros, acceder al menú Crear -> Macro. Inicialmente la pantalla de creación de macros no es completa. Para desplegar todas las posibles macros disponibles, se necesita hacer clic en el botón "Mostrar todas las acciones". Otras opciones recomendables son el botón "Nombre de macro" y "Condiciones" Los nombres de macro, permiten identificar las acciones que se programan en la secuencia lineal. Por otra parte las condiciones, permiten establecer bucles de ejecución, métodos desencadenantes de las acciones y en definitiva las condiciones que deben cumplirse para que se desencadene la macro o el procedimiento almacenado. Por tanto las columnas que se pueden desplegar en la ventana de Macro, son las siguientes:
  • Nombre de macro. Identifica con un nombre la acción que se está llevando a cabo. Dicho nombre debe cumplir las condiciones de denominación establecidas anteriormente para los nombres de las tablas, formularios, etc. Ello es debido a que es posible nombrar a una acción concreta de la macro, por el nombre aquí asignado.
  • Condición. Establece una condición que debe cumplirse para desencadenar una lista de acciones programadas en la macro.
  • Acción. Es la tarea o proceso pre-programado en access que puede ser configurado para hacer múltiples actividades. En otros programas como Filemaker se les denomina Guiones.
  • Argumentos. Son las características y valores generados como resultado de programar una determinada acción. 
  • Comentarios. En muchos casos es aconsejable crear comentarios para explicar el funcionamiento de los procesos programados. 
Ejemplos precisos de la utilidad de las macros
  • Asignar valores automáticamente en campos de un formulario. Establecer valor
  • Rellenar automáticamente un campo de indexación con los datos introducidos en un formulario.
  • Abrir y cerrar formularios, tablas, informes y consultas
  • Aplicar filtros en las consultas
  • Desplazar a un determinado registro de la colección
  • Mostrar mensajes
  • Ejecutar otras macros y procedimientos programados
  • Imprimir informes y formularios
  • Guardar registros...

lunes, 28 de abril de 2014

Fundamentos de bases de datos y diseño con MS Access: consultas. Parte4

Además de los formularios y subformularios, en un sistema de información fundamentado en el uso de bases de datos, también es necesario el uso de consultas, informes y procedimientos programados. Las "consultas" constituyen formularios especializados en el filtrado de la información de las tablas de MS Access. En otras palabras, las consultas en Access son equivalentes a las consultas SQL realizadas directamente en bases de datos MySQL. Los informes en MS Access suponen una vista de datos destinada a la impresión bien sea por vía impresora o PDF. Finalmente los procedimientos programados constituyen un mecanismo fundamental para el control de los procesos en los formularios. También denominados "macros" son un conjunto de órdenes o funciones pre-programadas, que combinadas pueden desempeñar ciertas tareas o procesos automáticos en el entorno del formulario.

Consultas
Las consultas en MS Access permiten mostrar información de una o varias tablas relacionadas empleando para ello uno o varios filtros, también denominados "criterios". Estos criterios pueden ser simples, cuando se basan en los términos introducidos por el usuario, o complejos cuando son programados con el "generador de expresiones". Existen varios métodos para crear consultas. A continuación se exponen los más recomendables:
  • Asistente para consultas
    Menú Crear -> Asistente para consultas -> Asistente para consultas sencillas -> Seleccionar tabla -> seleccionar campos a visualizar en la consulta -> Seleccionar consulta en detalle -> Asignar nombre a la consulta con el prefijo "cons-" -> Modificar el diseño de la consulta -> Añadir los criterios de la consulta -> Ver consulta.
  • Utilizar un formulario para crear una consulta
    Abrir formulario creado anteriormente para la tabla objetivo -> Menú inicio -> Opciones de filtro avanzadas -> Filtro por formulario -> El formulario aparecerá en blanco, sin registros. Se deben introducir los valores de la consulta en los campos vacíos. (En el margen inferior aparecen las pestañas Buscar y Or que corresponde al tipo de consulta Booleana que se aplica en MS Access) -> Una vez determinados los parámetros o valores de consulta -> Aplicar filtros -> Acto seguido la información de la tabla aparecerá filtrada en el formulario directamente.
Convertir la consulta en un buscador
Siguiendo el modelo del operador "Como" traducción del operador  "LIKE" utilizado en SQL se puede crear un método de interrogación o consulta sencillo para buscar en un determinado campo de la consulta, tal como establece la documentación oficial. Tan sólo hay que introducir el siguiente código, véase tabla1, en el apartado de criterios de consulta del campo correspondiente y adaptarlo al caso.


Como [Introduzca Título:] & "*"
El operador “Como” actúa como operador de comparación similar a “LIKE” utilizado en las consultas SQL. El contenido entre corchetes corresponde al título que se desea mostrar en el cuadro de búsqueda. El ampersand indica que la consulta se realiza con el término introducido entre comillas dobles que contiene truncamiento automático. De esta forma cualquier palabra introducida será recuperada en la tabla.
Tabla1. Operador "Como" de consulta

Formularios basados en consultas
Una forma de elaborar formularios especializados es crear las consultas de las tablas que filtran previamente la información en ellas introducida. Por ejemplo la tabla "autoridades" puede contener múltiples tipologías que pueden ser filtradas previamente, creando una consulta para cada tipo de autoridad. Posteriormente se pueden crear formularios de autoridades especializados en autoridades personales, autoridades corporativas, entre otras tomando como "origen de datos" la consulta previamente creada.

Edición experta de las consultas
Las consultas en MS Access al igual que las relaciones que se establecen en las tablas de la base de datos están basadas en SQL. Por tanto, resulta posible modificar las consultas, editando su código SQL. Tomando una consulta ya terminada, dentro de los tipos de vistas para las consultas aparecerá la opción SQL. Al cargar la consulta en modo SQL se mostrará una sentencia que contiene la cláusula SELECT que indica selección de campos, los campos propiamente dichos que se muestran en la consulta, la cláusula FROM que identifica la tabla de origen de los datos y finalmente si fue establecida alguna condición, la cláusula WHERE tras las cuál aparecerán las condiciones de las consultas.
  • Ruta de acceso para la vista SQL
    Abrir consulta ya existente -> Menú Inicio -> Vistas -> Vista SQL
  • Ejemplo de consulta SQL en MS Access
    SELECT autoridades.[id], autoridades.[id_tipoautoridad], autoridades.[denominacion], autoridades.[fechaextrema1], autoridades.[fechaextrema2], autoridades.[descripcion], autoridades.[id_lugar] FROM autoridades;

martes, 22 de abril de 2014

Ejemplo de edición de formularios y subformularios en base de datos MS Access

Con el objetivo de poner en práctica lo estudiado en torno a los formularios y subformularios se proporciona el siguiente ejemplo de la base de datos biblioteca_v02.accdb, disponible para su descarga en el siguiente enlace.

Descargar biblioteca_v02.accdb

Cambios producidos
Para la presente versión de la BD biblioteca se han realizado algunos cambios relativos al almacenamiento de las autoridades. Si bien en la versión anterior el campo "autoridades" de la tabla "catalogo" había sido diseñado para almacenar varios valores, en este caso ha sido reemplazado por tres campos de autoridades "id_autoridad1", "id_autoridad2" e "id_autoridad3" con el objetivo de almacenar una autoridad en cada campo foráneo. Ello no significa que el método de almacenamiento de varios valores sea incorrecto, ya que suele ser empleado para almacenar varios valores en vista de hoja de datos. Pero para el ejercicio relativo a formularios y subformularios es más conveniente un tratamiento de las autoridades individualizado que permita elaborar los subformularios necesarios para visualizar toda la información de la tabla relacionada de las autoridades, tal como se puede comprobar en el ejemplo.

Los formularios y subformularios
La base de datos de la biblioteca_v02 incluye varios formularios de ejemplo entre los que destaca el formulario "form-catalogo" y los subformularios "subform-autoridades" y "subform-regostros", puesto que representan un buen ejemplo del significado de relaciones entre tablas y su visualización mediante formularios y subformularios. Por otra parte se ha introducido un sencillo menú de navegación que permite el acceso a terceros formularios de acuerdo a las necesidades de edición de cada caso y manteniendo el esquema de procesos de la cadena documental.

Formulario "form-catalogo"

  • Introduce los campos foráneos propios de la tabla "catalogo" y los campos de denominación relacionados por dichos campos foráneos que son los siguientes: [estadocatalogacion].[denominacion], [tipodocumento].[denominacion], [lugar].[denominacion], [editorial].[denominacion]
  • El formulario del catálogo consta de 4 subformularios embebidos. Los tres primeros corresponden a las autoridades y el cuarto a los ejemplares vinculados de cada ficha catalográfica.

Subformularios "subform-autoridades1,2,3"

  • Cada subformulario establece relaciones del tipo "[catalogo].[id_autoridad1] - [autoridades].[id]", "[catalogo].[id_autoridad2] - [autoridades].[id]" y "[catalogo].[id_autoridad3] - [autoridades].[id]". Por medio de este tipo de relaciones es posible mostrar la información de la autoridad relacionada en el cuadro del subformulario.
  • Los subformularios de autoridades originalmente tenían un modo de visualización de tipo "hoja de datos" similar al de una hoja de cálculo. Para cambiar su apariencia es necesario acceder a la hoja de propiedades del elemento -> pestaña Formato -> Vista predeterminada -> modificar el modo de visualización por "un único formulario". De esta forma es posible editar el subformulario en vista diseño al igual que un formulario normal.
  • La propiedad de "Formato" barras de desplazamiento figura como "Ninguna", se han inhabilitado los selectores de registro, los botones de desplazamiento y los separadores de registros para que el cuadro del formulario esté libre de controles y sirva como superficie de visualización de datos vinculados.

Subformulario "subform-registros"

  • El subformulario registros permite mostrar los ejemplares vinculados a la ficha catalográfica. La relación que se establece es la siguiente: "[catalogo].[id] - [registros].[id_catalogo]"
  • Dado que para una ficha catalográfica pueden existir múltiples ejemplares el modo de visualización de tipo "hoja de datos", puede que no sea el más adecuado. Por ello es modificado por el modo "Formularios continuos" que mostrará una sucesión de formularios según el número de registros a mostrar. Esta solución permite una maquetación del formulario y la visualización de los registros en lista.

Formulario "index"

  • El formulario "index" es el primer formulario del sistema de información que permite mostrar todas las opciones, accesos y formularios. El objetivo del formulario es redirigir al usuario al formulario que necesita para su edición. 

Formulario "workflow"

  • El formulario "workflow" está diseñado sobre un diagrama o flujo de trabajo que puede identificarse con la cadena documental, en cuyas fases puede observarse la presencia de un botón de redirección a un formulario concreto que permite desempeñar las actividades y funciones establecidas para cada fase del flujo de trabajo. Es de gran utilidad cuando la información es sometida a un tratamiento largo y complejo.

Tabla y formulario de ayuda "ayuda" - "form-ayuda"

  • Se introduce una tabla nueva denominada "ayuda" en la que se definen las preguntas y respuestas sobre el uso del sistema de información, sus formularios y tablas. Es obligatorio crear este tipo de mecanismos de asistencia para el usuario y que estén disponibles o visibles en todos los formularios del sistema, ya que suponen la documentación e instrucciones de uso del mismo.

martes, 1 de abril de 2014

Fundamentos de bases de datos y diseño con MS Access: formularios y subformularios. Parte3

Una vez creadas las tablas y campos que conforman la base de datos, puede afirmarse que la estructura de almacenamiento está preparada para recibir y guardar información. Sin embargo no toda la información puede introducirse directamente de una forma adecuada, es decir, muchos registros de las tablas son dependientes del procedimiento documental que se lleve a cabo en el sistema de información. Por ejemplo una tabla que registre pedidos o la circulación del préstamo en una biblioteca puede tener múltiples cambios entre sus datos. Y tales cambios son propiciados por la introducción de un formulario que actúa a modo de interfaz entre el usuario y la base de datos. En este apartado, se determina una forma de proceder a la hora de crear formularios. Los pasos a seguir son los siguientes:

Introducir registros de prueba
Antes de crear los formularios pertinentes para la base de datos, resulta fundamental crear varios registros de prueba en todas las tablas y con todos los campos de descripción. De esta forma es posible asegurarse de que están presentes todos los campos necesarios y efectuar correcciones antes de comenzar con el proceso de creación de los formularios. Si este paso se toma a la ligera, al crear los formularios y estar directamente vinculados con la estructura de las tablas, implica un doble trabajo de modificación en caso de fallo o error. Por tanto es muy aconsejable tener muy en serio la introducción de datos básicos iniciales. Esta prueba también permite observar si las relaciones establecidas entre tablas mediante campos foráneos y el asistente para búsquedas, funcionan correctamente. Por otra parte, se recomienda introducir datos verosímiles a fin de poder determinar si la información que se tratará de gestionar es correctamente recogida en los campos disponibles, si es necesario ampliar la extensión de los campos o modificar el tipo de campo. 

Crear formularios
Los formularios son el interfaz de edición que habitualmente utilizan los usuarios para interactuar con las bases de datos. Permiten establecer un método de trabajo para tratar la documentación y la información que se almacena en las tablas, permitiendo un flujo de trabajo, también conocido como workflow. El flujo de trabajo en casi todos los casos puede ser identificado con la cadena documental de la unidad de información y documentación. Por ejemplo un despacho de abogados no sólo registra la información de los procesos legales sino que los relaciona con sus fuentes legales, resoluciones ya existentes, fallos jurídicos, personas e instituciones implicadas, que se suceden a lo largo del proceso legal. Por tanto puede afirmarse que no toda la información se encuentra disponible desde el principio, suponiendo una labor de varias personas y departamentos la edición de un mismo registro desde diversos puntos de vista. Profundizando en el ejemplo, a la fase de "demanda" le sigue la "contestación de la demanda", "la apertura a pruebas", la fase de "alegatos", los "autos para sentencia", la "sentencia", los "recursos de apelación y de alzada" y finalmente una "sentencia firme". Cada uno de los estadios implica un tratamiento del caso y un enriquecimiento constante de información, nuevos documentos, que aportan múltiples actores y que contribuyen a crear el flujo de trabajo al que antes se aludía. En una biblioteca sucede igual, el proceso de "selección", "identificación", "precatalogación", "catalogación", "clasificación", "indización", "vaciado" y finalmente "recuperación de información". Para cada una de las fases que se determina clave y determinante en el proceso o flujo de trabajo se requerirá un formulario. Por definición y añadido a lo que se ha referido, también se crearán tantos formularios como tablas tenga la base de datos. De esta forma el usuario puede editar la información de cada tabla o bien introducirse en la cadena documental o proceso de trabajo en el que debe editar la información. Volviendo al caso del despacho de abogados, cada departamento tendría un formulario sobre el que centrar su trabajo, editando una parte muy concreta de un registro. Dicho de otra forma, el proceso legal se construye gracias a la cooperación entre departamentos con formularios especializados en cubrir cada apartado o cada fase del proceso. De tal forma que el departamento encargado de demandas, registra la demanda de los clientes, describiéndola por completo y añadiendo las pruebas correspondientes. A continuación el departamento jurídico, guarda la contestación para dicha demanda y los alegatos de la parte contraria y así sucesivamente con el resto de departamentos hasta completar el proceso jurídico-legal. Resulta obvio que los datos introducidos en la primera fase repercuten en el resto de fases y procesos, tales aspectos deben ser tenidos en cuenta en el diseño de los formularios. Por ejemplo, volviendo al caso de la biblioteca, en el momento de la fase de identificación en el que se detecta que el documento es una fotografía y no una monografía, tal hecho debe causar importantes cambios en el modelo de formulario para la catalogación. De hecho, aunque existen campos de descripción análogos tanto para la fotografía como para la monografía, no son el mismo material y ambos tipos documentales tienen campos de descripción diferenciados. Por tanto, deben existir formularios para la catalogación de los distintos tipos documentales si se desea realizar un trabajo documental de calidad y un correcto proceso de catalogación. Por tanto se deben recordar las siguientes reglas:
  • Cada tabla debe tener su correspondiente formulario.
  • Si existe un flujo de trabajo, deben crearse los formularios necesarios para emular todas sus fases, de forma tal que pueda tratarse la información o la documentación en cadena por varios administradores o departamentos. Ello implica un profundo conocimiento de la institución o centro de información y documentación para el que se está desarrollando el sistema de información.
  • Si una determinada tipificación implica distintos campos de descripción para el registro, deben diseñarse diversos formularios o plantillas para la introducción de los datos correspondientes de acuerdo al modelo de descripción.
Tipos de formularios
  • Formulario de inserción de datos. Formularios cuya única función es la introducción de registros o datos. Suelen corresponder a tablas con un alto número de campos y cuya estructuración suele ser compleja.
  • Formulario de inserción y edición. El formulario combina la introducción de datos y su edición o modificación. Por ende se permite la navegación y filtrado de los registros.
  • Formulario de recuperación. Formulario con campos de búsqueda, que permite desencadenar el proceso de recuperación sobre una serie de tablas de la base de datos.
  • Formulario de navegación. Son formularios cuyo propósito es permitir el acceso a terceros formularios. Por ejemplo un formulario con un menú de opciones que correspondan a los formularios de  edición de las distintas tablas de la base de datos. Un formulario de navegación típico también es aquel que representa el diagrama del flujo de trabajo o cadena documental y los accesos correspondientes a los formularios de cada fase definida en dicho diagrama. 
Método para la creación de formularios
  • Crear formulario en blanco
  • Menú superior -> Crear -> Crear formulario en blanco -> Lista de campos -> Seleccionar tabla  -> Arrastrar campos al formulario en blanco
  • Al arrastrar un campo al formulario en blanco, aparece un apartado de campos disponibles en tablas relacionadas, de forma tal que es posible introducir campos de terceras tablas para la visualización de información complementaria.

Crear subformularios
Los subformularios son formularios integrados dentro de otros formularios y tienen como objetivo proporcionar registros relacionados con respecto al que se está editando en el formulario portador. Por ejemplo el formulario correspondiente al catálogo de la biblioteca puede contener un subformulario que haga posible la visualización de los registros correspondientes a los ejemplares de las fichas catalográficas registradas en la tabla catálogo. Esta información es importante para poder observar información complementaria constituida por múltiples campos de descripción correspondientes a tablas relacionadas. 

Método para la creación de subformularios
  • Una vez creado el formulario principal se puede crear el subformulario
  • Abrir el formulario principal en modo vista diseño -> Observar el cuadro de herramientas de diseño -> Seleccionar icono de subformulario/subinforme -> Crear recuadro sobre la superficie de edición del formulario -> al soltar el botón cuando se crea el recuadro, aparece una ventana de diálogo con el asistente para la creación de subformularios -> Seleccionar la tabla relacionada que se desea mostrar en el subformulario -> Definir relación entre la tabla del formulario principal y la tabla del subformulario (también es posible elegir una relación sugerida por el asistente) ->  asignar denominación al subformulario.

Edición y maquetación
  • Todos los formularios deben incorporar un encabezamiento que proporcione un diseño uniforme con respecto al resto de formularios del sistema, el título de la aplicación, subtítulo de la aplicación y título o nombre del informe.
  • Normalización de la apariencia de todos los formularios en el sistema de información. 
  • Todos los formularios deben incorporar un menú de navegación básico que permita acceder al resto de formularios para la edición de todas las tablas del sistema.
  • Cada formulario debe contener todos los campos necesarios para realizar las funciones de edición, inserción y recuperación según el caso. 

Consideraciones 
  • Los nombres de los formularios deben ser cortos y suficientemente denotativos y claros del contenido que van a gestionar. Es muy recomendable emplear algún tipo de prefijo que identifique claramente el formulario del subformulario. Por ejemplo el prefijo "ff", "ff-", "form-" identifican formularios. Los prefijos "sff", "sff-", "subform-" identifican los subformularios. El resto de reglas de denominación para tablas y campos tienen igual aplicación en el caso de los formularios y subformularios.
  • En MS Access no está permitido el uso del guión bajo (_) en la denominación de formularios y subformularios.

martes, 25 de marzo de 2014

Fundamentos de bases de datos y diseño con MS Access: diseño de relaciones. Parte2

Las tablas y campos de la base de datos no tienen interacción alguna, a no ser que se establezcan las relaciones pertinentes entre las mismas. Según lo explicado en relación al modelo ER, las relaciones han de ser establecidas utilizando los campos clave primarios y los campos clave foráneos o externos, véase artículo  de relaciones. De esta forma es fácil adivinar que un campo clave foráneo denominado "id_catalogo" sito en la tabla "registro" tendrá una relación directa con el campo clave primario "id" de la tabla "catalogo". Teniendo estos aspectos claros, hay que recordar que las relaciones entre tablas de cualquier base de datos están basadas en una consulta SQL. Esto significa que en esencia una relación entre tablas de una base de datos es de hecho una sentencia en lenguaje de consulta SQL. Esta apunte es importante para comprender que aunque MS Access permita representar visualmente las relaciones a través de líneas vinculantes entre tablas, no son más que representaciones subjetivas de lo que realmente articula, de forma poco visible para el usuario, las relaciones en un sistema de bases de datos. Dicho lo cual se procede a explicar los dos métodos más adecuadas para generar las relaciones entre tablas en bases de datos de tipo Access.

Método de asistente para búsqueda
Es el método más sencillo para crear relaciones de forma rápida y sencilla. Se utiliza durante el proceso de creación y edición de las tablas y sus correspondientes campos. Se parte del supuesto en el que todas las tablas y sus campos fueron creados. A partir de este punto se editan uno a uno los campos foráneos de las tablas, concretamente se especifica que el tipo de campo es "asistente para búsqueda". Esta opción hace posible que se genere automáticamente una relación con las características que se establezcan a través de un asistente de búsqueda. Los pasos a seguir son los siguientes:
  • Selección del campo foráneo en la tabla correspondiente en modo "vista diseño"
  • Cambiar el tipo de campo por "asistente para búsqueda"
  • Acto seguido aparecerá una ventana de diálogo con un proceso guiado para establecer la relación la tabla objetivo, con las siguientes preguntas:
  • P1 - ¿Cómo desea que la columna de búsqueda obtenga sus valores? R1.1 - Deseo que la columna de búsqueda busque los valores en la tabla o consulta (Ésta opción permite relacionar la tabla actual con la tabla que se seleccione a continuación) R1.2 - Escribiré los valores que desee (Se utiliza en el caso en el que se tenga una lista de valores fijos e inamovibles que debe ser mostrada en el formulario, sin necesidad de terceras tablas)
  • P2 - ¿Qué tabla o consulta debe proporcionar los valores para la columna de búsqueda? R2 - Seleccionar la tabla correspondiente.
  • P3 - ¿Qué campos contienen los valores que desea incluir en la columna de búsqueda? R3 - Seleccionar sólo los campos principales que identifican adecuadamente el registro de la tabla relacionada. Por ejemplo el campo clave primario, los campos de denominación o titulación y algún campo de control. Si la tabla posee muchos campos y se vuelcan todos, la longitud de la fila sera mayor de lo que la resolución de la pantalla puede soportar. 
  • P4 - ¿Qué orden desea para los elementos del cuadro de lista? R4 - El orden depende de las necesidades del diseño. Es habitual ordenar de acuerdo al campo clave primario o con orden alfabético de denominación.
  • P5 - Ancho de las columnas. R5 - Establecer un ancho determinado aproximado y desmarcar la opción de ocultar la columna clave. En muchos casos es necesario conocer en todo momento cuál es el identificador de los registros de cada tabla, favoreciendo la transparencia de la misma.
  • P6 - ¿Qué columna en la columna de búsqueda contiene el valor que desea guardar o utilizar en la base de datos? R6 - Elegir en todo caso el campo clave primario "id".
  • P7 - ¿Qué etiqueta desea para la columna de búsqueda? R7 - Mantener el valor dado por defecto. 
  • P8 - ¿Desea almacenar varios valores para esta búsqueda? R8 - Cuando la relación es de muchos a muchos es necesario marcar la casilla "Permitir varios valores"
  • Finalizar proceso.

Automáticamente al finalizar el proceso del asistente, se genera una relación con la tabla especificada de la que extraerá la información indicada, generando una lista con todos los registros que pueden ser relacionados. Ésta relación puede ser comprobada desde el "menú herramientas de base de datos -> relaciones -> mostrar todas las relaciones". Por otra parte, el cuadro de propiedades del campo recientemente editado en su pestaña de "búsqueda" contendrá una instrucción similar a la siguiente en el apartado de "Origen de la fila".
  • SELECT [autoridades].[id], [autoridades].[id_tipoautoridad], [autoridades].[denominacion] FROM autoridades ORDER BY [id]; 
Esta sentencia es lenguaje de consulta SQL que puede ser modificado para adaptar la relación y sus características, ordenación y campos recuperados, lo que demuestra la afirmación anteriormente referida. Otro detalle importante es el apartado "Origen de la fila" que indica en todos los casos de dónde toma el campo, el formulario, el informe o la consulta la información, dicho de otra forma, qué tabla proporciona la información. No hay que olvidar este concepto, puesto que más adelante será utilizado de forma extensiva.


Método convencional de herramienta de relaciones
El método convencional no influye directamente en los campos de las tablas con los que existe una relación, obligando en tal caso a configurar posteriormente cada uno de los campos foráneos. Con el método anterior el campo foráneo y la relación quedan resueltas en el acto. Para editar las relaciones se puede acceder desde "menú herramientas de base de datos -> relaciones -> mostrar todas las relaciones". Inicialmente es posible que nos visualice ninguna tabla. En ese caso hacer clic en la opción "mostrar tabla" y cargar todas las que se necesiten para establecer las relaciones. A continuación basta con seleccionar el campo clave primario y arrastrarlo al campo clave foráneo para mostrar un cuadro de diálogo que permite editar la relación; esto es, los campos clave primario y clave foráneo de la tabla1 y de la tabla2 entre las que se establece la relación, el tipo de combinación y la integridad referencial de la misma.