martes, 27 de diciembre de 2011

HeidiSQL

Se llama HeidiSQL, y los más viejos de por aquí queremos pensar que el nombre alimenta la más tierna nostalgia. A día de hoy, la versión es la 6.0. Como dicen en Wikipedia, es gratis y de código abierto, y el proyecto se está desarrollando bajo el paraguas de Google Code. Como dicen en su propia página, bueno, bonito, barato y poco exigente.

Lo he probado poco pero ya ha sido instalado en los laboratorios y va a ser el cliente de referencia para conectar con nuestros servidores MySQL. Dado el entorno en el que se va a ejecutar y el objetivo, un detalle no menor, el poder conectar con cualquier usuario definido en el servidor sin guardar su nombre y contraseña en el cliente, nos ha decidido.

miércoles, 14 de diciembre de 2011

Leyendo de la BD

Ya sabemos conectar, ahora a trabajar. En una situación normal la base de datos ya estaría creada y con alguna tabla con datos. Sigamos, por tanto, preparando el entorno en el que va a trabajar nuestra aplicación PHP.

Desde un cliente cualquiera (phpMyAdmin, MySQL Workbench, etc.), entrando con un usuario con los suficientes privilegios (si la instancia de MySQL es local, probablemente será el root), ejecutamos las siguiente órdenes:

create database phpbd;
use phpbd; 

create table usuario (usuario integer, nombre varchar(20), ingreso date, 
primary key (usuario)) engine=innodb; 

insert into usuario values (3,'Pepe',now()),(10,'Juan',now()),(1,'María','2011-11-30');

grant select on phpbd.* to 'phpuser'@'%';


Ahora que ya tenemos una conexión abierta con el servidor, toca elegir la base de datos con la que trabajar.

martes, 13 de diciembre de 2011

¿Alguien sabe lo que pasa?

Mal de muchos... dicen. Yo no sé, me preocupa que esto sea tan general. Aunque en otro ámbito, coinciden impresiones. Alguien, alguno de nosotros debería saber cuál es la solución.

Curiosamente, el texto es lo suficientemente largo como para que los realmente aludidos desistan de su lectura. Paradojas.

Vía "La semana de los blogs" en Error500, ¿Por qué dejo mi cátedra en la universidad?

lunes, 28 de noviembre de 2011

Otras tontunas

No puedo evitarlo, debo resaltar esta noticia. La he leído en Xakata: noventa heridos en unas rebajas de Blackberry en Indonesia. Hay que ser cenutrio para dejarse el tiempo y la piel en estas cosas.

Por cierto, a riesgo de caer en lo herético, ¿para cuándo van a dejar de molestarme con tarjetitas de gasolinera, de carrefourses, con "ipás" al contratar un plan de pensiones, con cuberterías en el periódico? ¿Para cuándo la gente va a dejar de matarse por comprar el Marca en el que regalan una maqueta 3D del Mestalla? Si ya es suficiente dolor que lo lea...

jueves, 24 de noviembre de 2011

Conectar con el servidor MySQL

En primer lugar, se supone que nuestro PHP tiene activadas las librerías necesarias para trabajar con MySQL. Si no es así, (compruébalo con phpinfo). Nuestra intención, ahora, es únicamente conectar con el servidor de base de datos y comprobar que no ha habido error.

En segundo lugar, necesitas un usuario en MySQL con los permisos adecuados. En la creación de usuarios tenemos, básicamente, dos opciones, usuarios locales y remotos pero, cuidado, hablamos en el contexto del servidor: "locales" a la máquina donde está instalado el servidor. La razón de ser de los usuarios locales, como el 'root'@'localhost', es que solo puedan conectarse desde la consola del propio ordenador donde está instalado MySQL.

MySQL Workbench y conectar con cualquier usuario


Esto es una tontería pero no lo había necesitado hasta ahora. Por ser software que prevemos utilizar en las prácticas de la asignatura, su instalación en los ordenadores del aula no nos permitirá definir una conexión concreta a nuestro servidor por una simple cuestión: no sabemos qué usuario se va a sentar delante de cada teclado.


MySQL Workbench y la versión 5.2.35.1

No soy muy amigo de actualizar programas por aquello de estar a la última. Pasar de XP a W7 me ha costado horrores, y solo tras renovar la placa del ordenador que si no... Cierto que navegadores y sistema operativo los tengo "en automático" por aquello de garantizar algo la seguridad del sistema pero, si otro tipo de programa te funciona bien, ¿para qué cambiarlo? Pero, bueno, como después os lo vais a descargar e instalar pues lo hago. Venga.

MySQL Workbench 5.2.35.1, de este septiembre, es la última versión estable que, a día de hoy, ofrece Oracle en esta página. No hay novedades notables en la interfaz, todo parece que está en el mismo sitio, la mayor parte ha sido rectificación de errores. Eso sí, puede que por cómo está configurado mi sistema, Windows 7 x64, me han obligado a descargar e instalar una librería adicional, el Microsoft Visual C++ 2010 Redistributable Package (x86) que he tenido que buscar en el navegador.

Por lo demás, todo parece funcionar sin problemas en 64 bits sin necesidad de ajustar compatibilidad alguna. Pues nada, me tocará hablar de la 5.2.37, que ya están en ella.

viernes, 18 de noviembre de 2011

No puedo, no puedo...

De un tiempo a esta parte va girando este cuaderno de la asignatura hacia aspectos no directamente atribuibles a, eso, la asignatura. La relación profesor-alumno cada día se hace más compleja. Es injusto llamarlo guerra pero es exactamente así como parece que discurre el día a día: el alumno inventa nuevas tácticas y el profesor se adapta y contraataca, o trata de adelantarse a la batalla y ser fiel a su estrategia. Nuevamente injusto, muy probablemente, decir que el alumno inventa nuevas tácticas... o que así le han enseñado que han de ser las cosas, tampoco quiero cargar a sus espaldas todo lo que, con el paso de los años, va acumulándose en el "cualquier tiempo pasado no necesariamente eees, ni mucho menos, peor".

Vaya, todo esto para enlazar otra de esas noticias que sorprende que lleguen a la prensa de toda la vida, no el simple exabrupto tuitero. Pues suscribo el fondo de la crónica, aún cuando se dé la falsa impresión de que esto es cosa de la crisis, como si fuera la primera vez.

Curioso, también, que se vocee que la masificación de las aulas se arregla con el paso de unas pocas semanas. Y nos quedamos tan tranquilos, "ya está dicho, ¡ea!, a otra cosa...". Me parece a mí que no es ley de vida esperar a que se mitigue la falta de sillas por simple decantación. Como apunte al margen: yo sigo buscando (todos los años, en grado y en no grado) ese grupo, numeroso por cierto, de matriculados cuyo único ánimo es apoyar a la Universidad Española, que dan su dinero a fondo perdido pero que no quieren molestar y, por lo menos las mías, jamás pisan el aula, ni para los exámenes.

viernes, 11 de noviembre de 2011

PHP-MySQL simplón

Empezamos aquí una serie de artículos sobre cómo acceder a bases de datos, MySQL, desde una aplicación PHP. Todo muy básico, que para profundizar ya están los manuales. Aún así, antes hay que explicar un par de cosas.

PHP es un lenguaje interpretado que se ejecuta en un servidor. Sin entrar en detalles, necesitamos un servidor HTTP que nos proporcione páginas HTML, o sea, un sitio web, y un intérprete PHP que ejecute una serie de programas que estarán almacenados, normalmente, en el mismo servidor. La ejecución de estos genera páginas HTML que son el resultado que se ve en nuestro navegador. Punto importante este, pues, el programa se ejecuta en el servidor, no en el cliente, no en el navegador lo que redunda en seguridad ya que ni Firefox ni IExplorer, ni ninguno, tiene acceso directo al código fuente.

Nuestro objetivo es generar páginas dinámicas a partir de los datos extraídos de una base de datos. Como ya dice el título, vamos a usar MySQL pero no es obligatorio elegir este motor.

domingo, 23 de octubre de 2011

Tontuna y/o ignorancia


Vaya por delante, y/o por detrás, que comprendo que el interés en las cosas es variado, tanto como la cantidad de ácaros por centímetro cuadrado de moqueta de cada hotel venido a menos, desde el nulo al paranoide-obsesivo. Y si de escribir y/o hablar dignamente se trata, una pregunta me hago: ¿quién fue el inútil que se inventó el "y/o"?

jueves, 6 de octubre de 2011

Bolonia: ¿dónde dice lo de la evaluación continua?

A raíz de un artículo escrito por un exrector de la UPV/EHU y rescatado del diariovasco.com por la lectura de Anecado, me han vuelto las ganas —nunca materializadas hasta ahora— de aportar un diminuto grano de arena a la confusión generada a partir del llamado proceso de Bolonia y su implantación en nuestras y nuestra universidad. El citado artículo trata más del lado del docente y administrador que del papel del alumno, se centra en el incremento bestial de la burocracia —pongan la erre donde quieran— y de papeleo incomprensible en que ha degenerado lo que se suponía que iba a ser un proceso de normalización y armonización. Por destacar algo, la innecesaria confusión de adjetivos a las competencias: que si básicas, que si transversales, que si... la insulsa creación de clasificaciones complejas para lo simple. Pero ya digo, aprovechando.

miércoles, 28 de septiembre de 2011

¿Nuevo blog? Y ya van...

Esto del blog de la asignatura —un marco donde publicar información complementaria— viene de lejos. De tan lejos que ya vamos por el tercer blog.

Hace años, pero no "siglos", empezamos con BD1blog (http://blogs.ua.es/BD1blog, ahora en desuso) y allí cabía todo: divulgación, noticias, resultados de exámenes, avisos... Más tarde convivió con FBDblog que seguía la misma filosofía de contenidos. Pero FBD es otra historia: la conversión al Grado —lo de la Bolonia, sí—, un paso gigantesco de una asignatura de segundo curso, anual, a una cuatrimestral de primero. Nada que ver. Y así se vio en el movimiento de comentarios, también influenciado por errores de planificación y algún malentendido; o varios.

Pues eso, que comenzamos otro blog, en un sitio diferente por aquello de ciertas comodidades que el antiguo no proporcionaba o no acababan de gustar. Incrustado ahora en el sitio web de la asignatura, FBDdocs, y ahora con un enfoque más de divulgación y no de discurrir del curso. Esperamos que sirva como ayuda y estímulo en vuestro aprendizaje.

lunes, 22 de agosto de 2011

SQL Workbench no es MySQL Workbench

En la búsqueda de clientes ligeros que, prácticamente, solo sirvan para lanzar consultas al servidor de base de datos —que no es poco—, que permitan conectarse a sistemas dispares —MySQL, PostgreSQL, Oracle, SQL Server…— y, sobre todo, que sean gratuitos, nos hemos encontrado con SQL Workbench/J. Como muy bien dicen en su página —deben estar hartos— no se debe confundir con MySQL Workbench, que es otra cosa y de otra casa, y del que hablaremos en otro momento. Todas sus características pueden consultarse en esa misma página.

jueves, 12 de mayo de 2011

La permanencia

Ayer que estábamos con ganas de hablar de otras cosas, me acordé de algo que se supone que todo estudiante de grado de la Universidad de Alicante debería conocer pero que me pareció oportuno mencionar. Lo cierto es que no tenía nada frescos los detalles y que, tal vez, el detalle más inmediato no fue de lo que comentamos: las convocatorias. Para quien ha entrado por primera vez por el grado tal vez no le resulte del todo extraño, para los que vienen de matrículas anteriores en esta universidad sí es un cambio.

Se puede decir que el NO PRESENTADO ha desaparecido de las nuevas titulaciones. Es decir, hagas o no hagas la evaluación continua —perdón, "distribuida"—, te presentes o no al examen oficial de julio, la convocatoria se agota, se "gasta". Eso quiere decir que te dejamos matricularte hasta 3 veces de la misma asignatura —y con sus restricciones— y después ya tendrías que "hablar" con el rector para ver si ese día te concede la gracia de una matrícula más...

En cualquier caso, me ha parecido oportuno enlazar la normativa y procedimiento de la UA al respecto en la página Datos de FBDdocs. Casi os recomiendo empezar por la tabla resumen que confeccionaron en la Facultad de Ciencias que es un resumen de los otros.

Originalmente en blogs.ua.es/fbdblog

martes, 29 de marzo de 2011

De las claves ajenas, foráneas, externas…

El modelo relacional no sería nada sin claves ajenas. Foreign key, lo encontraréis traducido de todas las formas posibles: ajena, externa, aliena, alienígena…

El modelo relacional no usa el tradicional e imprescindible puntero. Los punteros son para programadores, no para usuarios “normales”, y el modelo relacional tiene vocación de “llegar a las masas”. El puntero apunta a un dato concreto y sólo a uno, de hecho es una dirección física de memoria. En el modelo relacional, un valor “apunta” a todos los sitios donde se utilice ese mismo valor. La referencia se consigue por comparación, por igualdad.

jueves, 24 de marzo de 2011

MySQL Workbench y antecesores

Nos hemos resistido a comentar MySQL Workbench porque tiene muchas mas opciones de las que necesitamos en FBD y, hasta hace poco, sus sucesivas ediciones tenían algún que otro problema de estabilidad, pero a la vista de que muchos optáis por sistemas operativos de 64 bits y la última de la última y más potente versión del mismo, hablemos de él. Tampoco es que funcione mal en versiones más modestas.

jueves, 10 de marzo de 2011

El modelo relacional ya tiene unos añitos

Para que no se diga que somos como los de teletienda, y ya que todo en esta vida es susceptible de ser criticado y mejorado, he aquí un par de enlaces sobre algo que más o menos hemos mencionado en clase: el modelo relacional, hoy en día, es imbatible en cuanto a penetración en los sistemas de gestión de datos del mundo entero, pero esta situación de privilegio o casi monopolio, muy posiblemente, se debe más a la falta de alternativas claras.

viernes, 11 de febrero de 2011

MySQL y SQL Developer, una de versiones

Andábamos buscando un cliente sencillo para acceder a nuestros servidores. Viniendo de Oracle, como veníamos desde hace tiempo, el SQL*plus resulta muy unix-like, antediluviano. Más tarde nos llegó el iSQL*plus que como idea era muy bueno, acceder con un navegador a una url y poco más, ninguna instalación, objetivos de la asignatura cumplidos… pero el demonio o el servicio, según sistema operativo, se nos colgaba hoy sí y ayer y mañana también. Es una historia larga y complicada para añadir comentarios a lo obvio de la solución. Con esto de pasarnos a MySQL, el problema es que lo que ofrece la casa se pasa algún pueblo de lo que necesitamos. Y volvemos a Oracle. Y si somos como somos nos bajamos lo último, incluso en beta.

jueves, 27 de enero de 2011

Configurar SQL Developer para acceder a MySQL

¿Necesito SQL Developer en mi casa? ¿En mi portátil? Os preguntaréis. Vosotros,digo.

De lo que se trata es de instalar una herramienta cliente en vuestro ordenador, no un sistema de gestión de bases de datos local ni, por supuesto, base de datos alguna. Con el cliente y la url oportuna podéis acceder a los servidores de la asignatura. Otra cosa ya son las cosas de la red, la vuestra y la de la universidad, ahí no se puede hacer nada. Lo bonito de los clientes que vamos a ir comentando es que la mayoría son programas poco exigentes en recursos de máquina, incluso alguna cosa hay para iPhone e iPad —yo es que lo leo tal cual me enseñaron, “i-fone”e “i-pá”. En cualquier caso,el objetivo es poder practicar desde casa. Por familiaridad, aunque ya decimos que iremos mostrando otras opciones, parece que SQL Developer es la elección más evidente.

En primer lugar, nada de susto, es muy sencillo.

viernes, 7 de enero de 2011

Cálculo relacional: ¿pero qué necesidad tengo yo…?

A estas alturas de curso, con tantas y tantas clases y prácticas a vuestras espaldas, y llegamos nosotros y nos metemos con un tema de base de datos titulado “la perspectiva lógica del modelo relacional”. Y venga fórmulas, y venga “para-todos”, y venga “existes”, y que si el universo de discurso, y que si predicados, y que si…(1)

Desde un punto de vista práctico es difícil justificar el porqué de este tema en un curso básico de bases de datos: “cuando yo tenga jefe, como le hable de cálculo relacional dejo de tener jefe…”. No obstante, el cálculo y el álgebra relacionales forman parte de la historia del modelo relacional. Parece que solo exista SQL como lenguaje de manejo de datos en bases de datos relacionales. Pero pongamos perspectiva al asunto, antes no existía SQL. ¿De dónde salió SQL?

miércoles, 5 de enero de 2011

De registros y tuplas

Ya no pedimos yogur, pedimos Danone. Hay quien escribe “a parte” cuando debería escribir “aparte” o dice “poneros” cuando debería decir “poneos” y ni vagamente avergonzado se siente. “Pero tú entiendes lo que quiero decir ¿no?”.

Todo esto viene a cuento de lo adecuado o no que es usar el término “registro” cuando hablamos de filas de una tabla, o “campo” si de sus columnas se trata. Registro y campo son propios de la estructura de datos fichero. Relajando la definición, y olvidándonos de sus múltiples organizaciones posibles, un fichero es una secuencia de registros que se definen por los campos que contienen. Los registros, se use o no, están ordenados dentro del fichero. El acceso a un campo de un registro se realiza utilizando su nombre de campo —aunque no necesariamente, hay otras formas de recuperar datos de un fichero y todo es muy relativo dependiendo del lenguaje que se use.

martes, 4 de enero de 2011

El álgebra relacional

Llegados a este punto del curso, siempre se nos plantea a nosotros, como docentes, si seremos capaces de transmitir la importancia de este tema dentro de la asignatura. Sin esforzarnos demasiado, citemos la bibliografía recomendada:
El álgebra relacional es muy importante por varias razones. La primera, porque proporciona un fundamento formal para las operaciones del modelo relacional. La segunda razón, y quizá la más importante, es que se utiliza como base para la implementación y optimización de consultas en los SGBD-R [...]. Tercera, porque algunos de sus conceptos se han incorporado al lenguaje estándar de consultas SQL.
Elmasri, Navathe. Fundamentos de Sistemas de Bases de Datos.
Y una cuarta razón: no se puede entender el modelo relacional y el SQL sin el álgebra relacional, es una oportunidad más para profundizar en la naturaleza subyacente de una tabla: que es un conjunto de tuplas.

Es interesante recalcar una de las diferencias fundamentales entre el álgebra y los cálculos relacionales, incluso con el SQL —particularizando, si acaso, en la orden select: podemos decir que el álgebra es un lenguaje procedimental, establecemos una secuencia de operaciones a realizar con los datos, mientras que los cálculos relacionales son declarativos. En otras palabras, con el álgebra le decimos a la base de datos qué queremos y cómo lo vamos a obtener mientras que con el cálculo solo le decimos el qué; en el álgebra importa el orden de los operadores mientras que en el cálculo no.

Edición de lo publicado originalmente en bd1blog el 9 de diciembre de 2008.

lunes, 3 de enero de 2011

Normalizar, que no “formalizar”

La normalización es un ejercicio de sentido común —convenientemente traducido a un lenguaje formal que, por cierto, nosotros no vamos a utilizar— para conseguir esquemas de base de datos eficientes. El término clave es redundancia. No la queremos. La odiamos.

El ejemplo clásico es el vecino que un día descubrió el Access® dentro de su disco duro y que a fuerza de autoaprendizaje ha declarado al mundo que las bases de datos son su pasión. Regenta un kiosko de periódicos que, como es habitual, también vende chuches y juguetillos de plástico de todo a 1€. Pues este señor nuestro ha diseñado la siguiente base de datos, consistente en una única tabla.

artículo descripción precio dni nombre localidad fecha
P1 Información 1,10 2122 Pepe El Campello 1/1/2009


domingo, 2 de enero de 2011

Organización física, diseño físico, esquema interno

El diseño físico es un concepto que puede llevar a confusión ya que, a veces, las fronteras entre los distintos esquemas que se definen para una base de datos y un sistema de gestión(SGBD) no están tan claras. Un SGBD, según el estándar, tiene una arquitectura a 3 o 4 niveles y de ahí parte de la posible confusión. En un principio se distinguía entre conceptual (en realidad, lógico), interno (físico) y externo. Más tarde se pensó que era necesario un esquema adicional de forma que la primera descripción de datos fuera realmente independiente del tipo de base de datos y del sistema en la que se iba a implementar y gestionar. Al final, como es lógico, en un SGBD real todo se mezcla hasta cierto punto, y del esquema interno, en concreto, no tenemos más que un control parcial, suele ser gestionado directamente por el SGBD.

No obstante, al final, los SGBD proporcionan ciertas herramientas para ir más allá de lo que el esquema lógico —las tablas, para entendernos— nos permite: ¿una consulta, con cierto criterio de ordenación, se ejecutará muchas veces y con un volumen importante de datos? Entonces, igual merece la pena definir un índice para ese criterio de ordenación. Algunos SGBD pueden permitir tomar decisiones sobre la forma en que se almacenarán los ficheros en el disco duro o, como poco, decidir sobre alternativas de organización de los mismos.

En definitiva, estamos hablando del almacenamiento físico de los datos, y esto son ficheros diseñados específicamente para mejorar el rendimiento en la recuperación de los datos hasta su presentación en pantalla o suministro a la aplicación correspondiente. Se suele incidir en los siguientes aspectos: espacio y optimización de uso del almacenamiento secundario, indexación, y análisis de transacciones, ninguno de ellos independiente de los otros.
Edición de lo publicado originalmente en bd1blog, el 16 de febrero de 2010.

sábado, 1 de enero de 2011

Y llegó el modelo relacional

Era 1970. Cuentan en Wikipedia que Edgar Frank Codd trabajaba en IBM por entonces y que después de conseguir publicar en la Communications of the ACM el artículo “A Relational Model of Data for Large Shared Data Banks” (también aquí) se enfadó con sus jefes por no hacerle mucho caso. De hecho, parece ser que otros se le adelantaron en la puesta en marcha de sus ideas.
Es lectura “obligada”, el artículo que dio origen a todo lo que hoy se atribuye el título de sistema de gestión de bases de datos relacionales. La idea de Codd era utilizar la lógica de predicados de primer orden y, de rebote, la teoría de conjuntos para conseguir un modelo lógico que permitiera el uso de lenguajes declarativos, no procedurales. En otras palabras, algo que pudiera usar el oficinista de toda la vida. Pero es que lo simple hay que trabajárselo.
En la asignatura, sin hacer referencias explícitas, vamos a ir exponiendo su contenido de forma gradual, muchas veces simplificada en exceso. Pero para eso están las fuentes.

Edición de lo publicado originalmente en bd1blog, el 6 de octubre de 2008