bases de datos

Introducción a Doctrine 2

¡Hola! Últimamente sigo liado sumergiéndome en el mundo de ASP.NET, de ADO.NET, y sacando tiempo de debajo de las piedras para un pequeño proyecto en mi querido Zend Framework en PHP. Tras ver ADO.NET Entity Framework sentí la necesidad de usar algo igual en PHP; la solución se llama Doctrine :) La primera pregunta que nos deberíamos hacer es, qué es exactamente Doctrine. Respuesta rápida: Es un ORM de PHP. Pero analicémoslo un poco más.

En primer lugar, ¿qué diantres es un ORM? Viene de las siglas Object-relational mapping, que viene a traducirse como Mapeo objeto-relacional. En concreto es una técnica, o patrón arquitectónico, que permite comunicar dos sistemas distintos, típicamente una base de datos relacional con objetos de un lenguaje orientado a objetos, mediante un sistema que “mapea” (vincula) ambos sistemas. Mucha gente (yo mismo) ha creado a mano sus objetos mapeadores que, junto con objetos usando el patrón Active Record, daban un resultado muy similar a lo que un ORM nos ofrece. Pero oye, un ORM hace todo el trabajo sucio por nosotros ;)

MySQL Workbench – Diseño de bases de datos

A menudo las aplicaciones necesitan almacenar información de forma persistente, de manera que pueda ser capturada más adelante. Cada vez son más las aplicaciones de escritorio que lo utilizan, al igual que aplicaciones web, donde los RDBMS más populares son Microsoft SQL Server y MySQL.Este últmo, es sin duda el sistema de bases de datos rey de Internet. Sin embargo, no sé si os pasará como a mí, que trabajar día a día con él a veces me resulta una tarea desorganizada y costosa. Para mejorar eso surge MySQL Workbench.

¿Pero para qué sirve este programa? Es una herramienta visual de diseño, modelado, creación y mantenimiento de bases de datos.

Hasta ahora yo venía funcionando con herramientas con las que, en conjunto, lograba un resultado similar. Para el modelado entidad relación utilizaba Dia, la aplicación de Gnome para la creación de diagramas, o Umbrello, la solución basada en KDE para modelar diagramas UML. Nunca me acabó de convencer ninguna de estas herramientas, aunque lograban su cometido (A veces veía casi más efectivo dibujar las cajitas directamente con un software de diseño vectorial). Posteriormente, bien de forma automática, bien a mano, generaba el código SQL que definía la base de datos. Finalmente, para el mantenimiento del día a día, empleaba mayormente phpmyadmin.

Muchas aplicaciones, muchos cambios de contexto, y mucha semántica que se pierde al pasar de una herramienta a otra. Mmmm eso no mola. Buscando, encuentro una aplicación que hace tiempo que había visto, pero que había olvidado por completo. Efectivamente, me refiero a MySQL Workbench :) Surge como evolución natural de DBDesigner, de FabForce, pues el equipo de desarrollo está liderado por el fundador de DBDesigner, Michael G. Zinner.

Cosas chulas que podemos hacer desde MySQL Workbench:

  1. Ingeniería inversa de DDL de MySQL. A partir del código SQL, sin mediar el servidor de bases de datos, podemos visualizar toda la información en forma de tablas y diagramas generados automáticamente.
  2. Forward engineer, que lógicamente nos permite crear el nuevo código SQL.
  3. Conexión directa con el SGBDR. Podemos incluso sincronizar modelos.
  4. Soporta triggers y procedimientos almacenados.
  5. Diagramas bonitos y personalizables (Por ejemplo, que los únicos campos mostrados sean las claves).

A continuación, pongo un ejemplo de diagrama generado utilizando la base de datos de ejemplo sakila.

esquema de sakila

¿Dónde consigo esta maravilla? Te estarás preguntando. Sígueme… ¿Y dónde funciona? En Windows, Mac OS X y por supuesto Linux. Por cierto, una pega que le veo: Utiliza GTK++ ;-)

Aviso para usuarios de Ubuntu: Existen paquetes .deb de la versión 5.1 Beta disponibles listos para instalar en Ubuntu. Yo estoy ejecutando Kubuntu 9.04 y me han dado problemas de tipo Segmentation Fault en libglade. He probado a compilar e instalar la versión 5.2 Alpha y por el momento todos los errores han desaparecido.