Alguna vez habrán enfrentado la necesidad de modelar una base de datos relacional.
El mundo de bases de datos relacionales (RDBM) está regido por unos cuantos titanes en el tema. Desde Oracle, pasando por MS SQL Server y sin olvidar MySQL (y su hermana MariaDB) y PostgreSQL.
Para efectos de este artículo nos enfocaremos en MySQL y su nueva ramificación MariaDB.
MySQL forma parte de una pila de tecnologías web sumamente influyentes a nivel mundial. Nos referimos al «Stack LAMPP» que se traduce en Linux, Apache, MySQL, PHP/PERL.
En este conjunto de tecnologías, LINUX figura como un principal contendor en el mercado de sistemas operativos para servidores web (si es que existe tal cosa); mientras que Apache se desempeña como uno de los principales programas de servidor web a nivel mundial. Luego tenemos MySQL que es el componente de base de datos y finalmente PHP como lenguaje de programación para la web del lado del servidor.
Existen varios sistemas de instalación de la pila LAMPP; en nuestro caso usaremos una publicada por la organización ApacheFriends.org denominadada XAMPP. La «X» viene por la compatibilidad con sistemas operativos fuera de LINUX. Así XAMPP permite la instalación de la pila AMPP tanto en LINUX como en MS Windows y OSx de Mac.
A su vez, XAMPP trae algunas utilidades adicionales de las cuales vale la pena mencionar el sistema phpMyAdmin. Una herramienta avanzada que permite el diseño y manipulación de bases de datos MySQL.
Una vez que hemos descargado e instalado XAMPP en nuestro computador, y que nos hemos asegurado de que los servicios para Apache y MySQL están funcionando adecuadamente, podemos acceder al poder de XAMPP la dirección del servidor local: http://localhost/
La siguiente imagen muestra nuestra pantalla principal de XAMPP por medio del navegador.
Nótese entonces que en el menú superior a la derecha tenemos la opción «phpMyAdmin»
Seguidamente se ilustra como luce nuestra versión de phpMyAdmin en este momento.
Al lado izquierdo tenemos las diferentes bases de datos que están ya definidas en el servidor; mientras que a mano derecha tenemos el área de trabajo con diversos puntos de funcionalidad para editar bases de datos y cualquier otro elemento de base de datos.
PASO 1 – CREACIÓN DE BASE DE DATOS
Comenzamos este ejercicio haciendo clic en el nodo «New» que se encuentra a mano izquierda sobre la lista de bases de datos.
Esto nos muestra un formulario para crear una nueva base de datos que básicamente pregunta por el nombre de la base de datos y por el conjunto de caracteres (collation) predeterminado para la base de datos. Este parámetro define qué tipo de simbología usará la base de datos para almacenar texto. Uno de los conjuntos de caracteres más efectivos para occidente es el utf8 con sus variantes por idioma. Para este ejemplo que soporta símbolos en español y otros idiomas usaremos utf8_bin.
Una vez creada la base de datos podemos comenzar con el proceso de modelado.
Para esto utilizaremos el siguiente enunciado:
Se requiere diseñar una base de datos relacional para manejo de inventarios. El inventario contabiliza las cantidades disponibles de productos de diversos tipos; tomados del catálogo de productos que vende la organización. Para efectos de inventario se tienen dos tipos de producto: (1) los productos «serializables» que son productos que se pueden identificar de manera única (por número de serie asignado por el fabricante) y (2) los productos «a granel» que no se pueden identificar de manera unica sino por cantidades, por ejemplo 1 Kg de tornillos, o 300 destornilladores. El inventario se maneja en diversas bodegas y a su vez se contabilizan las entradas y salidas de inventario para y desde cada bodega.
Con este enunciado vamos a dar un siguiente paso para la identificación de los elementos fundamentales del modelo conceptual, es decir las entidades y sus relaciones.
PASO 2 – Identificación de Elementos
Una técnica que proponemos para esto es la de marcar el enunciado con un color (azul) aquellas partes que describen una entidad y con otro color (verde) aquellas partes que describen una relación. Así el enunciado queda de la siguiente manera:
Se requiere diseñar una base de datos relacional para manejo de inventarios. El inventario contabiliza las cantidades disponibles de productos de diversos tipos; tomados del catálogo de productos que vende la organización. Para efectos de inventario se tienen dos tipos de producto: (1) los productos «serializables» que son productos que se pueden identificar de manera única (por número de serie asignado por el fabricante) y (2) los productos «a granel» que no se pueden identificar de manera única sino por cantidades de alguna unidad de medida; por ejemplo 1 Kg de tornillos, o 300 destornilladores. El inventario se maneja en diversas bodegas y a su vez se contabilizan diferentes movimientos como entradas y salidas de inventario para y desde cada bodega.
De esta forma hemos identificado las siguientes entidades:
-
Catálogo de Producto
-
Tipo de Producto
-
Unidad de Medida
-
Bodega
-
Movimiento
-
Tipo de Movimiento
-
Fabricante
También se identifican algunas relaciones:
-
Catálogo de Producto >==> Tipo de Producto
-
Catálogo de Producto >==> Fabricante
-
Catálogo de Producto >==> Unidad de Medida
-
Movimiento >==> Tipo de Movimiento (entrada/salida)
-
Movimiento >==< Bodega
Finalmente algunos atributos relevantes son:
-
Número de serie
-
Cantidad
-
Nombre del Producto
-
Nombre de Bodega
-
Descripción de Unidad de Medida
-
Nombre de Tipo de Movimiento
PASO 3 – Modelo Conceptual
Una vez identificados los elementos básicos del modelo de datos, podemos realizar un diagrama de Entidad-Relación que nos permita comunicar cuales son las entidades que componen el modelo y como se relacionan entre si.
Aunque basta con Power Point o algun otro software que nos permita generar cajitas y conectarlas con líneas; en nuestro caso usaremos el poder de phpMyAdmin.
Para esto tomamos cada entidad y definimos las tablas respectivas con los valores más fundamentales que podemos pensar para cada entidad:
-
Tipo de Producto (Código de Tipo de Producto, Descripción)
-
Unidad de Medida (Código de Unidad de Medida, Descripción)
-
Fabricante (Código de Fabricante, Nombre)
-
Catálogo de Producto (Código de Producto, Descripción, Código de Tipo de Producto, Código de Fabricante, Código de Unidad de Medida)
-
Bodega (Código de Bodega, Descripción)
-
Tipo de Movimiento (Código de Tipo de Movimiento, Descripción)
-
Movimiento (ID de Movimiento, Código de Bodega, Código de Producto, Código de Tipo de Movimiento, Cantidad)
Nótese que hemos reorganizado las entidades de forma que primero se definen aquellas de las cuales hay dependencia en otras entidades. También debemos acotar que los nombres de las tablas (entidades) y sus atributos los realizamos usando una nomenclatura estándar, donde «cd» refiere a código, «dsc» refiere a descripción y «id» refiere a identificador numérico automático. Se usan ID’s en las entidades transaccionales, mientras que se usan códigos en las entidades tipificadoras.
La siguiente imagen muestra cómo se definen los campos básicos de una tabla (entidad). Para poder acceder a este formulario se hace clic en el nodo de base de datos «inventario» a la izquierda. En el área de trabajo hay una opción para iniciar la creación de una tabla (entidad) con una cantidad predeterminada de columnas (atributos)
PASO 4 – Modelado de las Relaciones
Una vez definidas las entidades (tablas) podemos visualizarlas usando el área de la izquierda, expandiendo los nodos correspondientes como se muestra en la siguiente imagen.
A su vez, si hacemos clic en la base de datos «inventario» podremos acceder a la función «Designer» la cual nos permitirá ir construyendo las relaciones entre las entidades (tablas) mientras que construimos el diagrama Entidad-Relación correspondiente.
La siguiente imagen muestra la función de diseño, desde donde se pueden crear relaciones entre las diferentes tablas.
Si hacemos clic en «Toggle small/big» en el menú de la izquierda podremos ver todos los atributos.
También, si hacemos clic en «Create relationship» podremos seleccionar – primero – un atributo de tipo «llave primaria» y – segundo – un atributo en otra tabla de tipo «referencia foránea» y así conformar las relaciones.
De esta forma podemos ver el diagrama con relaciones logrado como sigue, el cual no solamente expresa las relaciones en sí, sino también la cardinalidad entre las entidades.
Volviendo al diagrama reducido a solamente las entidades podemos ver que queda así; incluyendo indicadores de cardinalidad entre las entidades.
Estos diagramas son sumamente útiles para discutir y razonar sobre el modelo de datos. A su vez se puede utilizar phpMyAdmin para agregar o modificar atributos en la fase de modelado detallado de la base de datos.
71,570 total views, 11 views today
Comentarios