Database Design: un proceso iterativo (Nunca lo olvides!)
El mundo sabe que una Base de Datos es una colección de Datos con un mínimo de redundancia las cuales pueden ser compartidos por diferentes sistemas de aplicaciones. Para llegar a obtener esta "colección de datos no con un mínimo de redundancia" se debe seguir una metodología para el Diseño de Base de Datos. Bien, en este post voy hablarles acerca de los pasos preliminares, objetivos, cuestiones, problemas comunes que puedan surgir en el proceso de diseño de una base de datos, y explicar porque este es un proceso iterativo (para que nunca lo olvidemos).
Todos sabemos que esta metodología se divide en tres fases (diseño conceptual, diseño lógico y diseño físico) que ayudarán a obtener un conjunto de esquemas relacionales que faciliten la recuperación de la información. El Diseño de Base de Datos es un proceso iterativo, por lo que es díficil trazar una linea recta entre las actividades de diseño preliminar y detallado, sin embargo, el diseño preliminar de la base de datos tiene como objetivo elaborar un esquema contra la cual los desarrolladores puedes empezar a escribir código, sin centrarse en la parte interna, física del esquema. El diseño detallado puede hacerse luego con o ningún impacto fuerte en el código.
El Diseño físico de la Base de Datos tiene que ver con el almacenamiento físico de la data, el cual tiene como punto de inicio el modelo lógico de la data en tercera forma normal. Existen pasos preliminares al proceso de Diseño de Base de Datos, las cuales debemos de analizar para convertir el modelo logico en un modelo físico de datos:
- Convertir las entidades en archivos, es decir, en tablas.
- Convertir la relationshisps a Foreing Keys.
- Convertir atributos a elementos de datos, es decir, campos.
- Si fuera necesario, habrá desnormalizar la data, agregar nuevos Keys, o definir relaciones jerárquicas en lugar de arrastrar Primary Keys por todos lados.
Antes de empezar con el Diseño de Base de Datos, aparte de haber llevado acabo un análisis de requerimientos del negocio, debió haberse determinado los objetivos:
- ¿Cuál es el problema que se necesita resolver?
- ¿Cómo se resolverá el problema?
- ¿Existen métodos alternativos para resolver el problema?
- ¿Cuáles serán los productos finales del proyecto? ... reportes?, Working Maps?, etc.
- ¿Con qué frecuencia se generarán los productos?
- ¿Quienes usarán los productos finales?, es decir, ¿Quiénes conforman las audiencia prevista para los productos finales? : Técnicos?, Administradores?, Planificadores?, Público en General? .. Quiénes?...
- ¿Hay o habrán otros usos de la información?, Si hubieran otros usos, entonces ¿Cuáles serán los requerimientos específicos?
Además hay que en tener en cuenta las siguientes cuestiones:
- ¿Qué medios de almacenamiento se deben de utilizar?, esto incluye saber ¿Cuan grande debe ser la Base de Datos?, ¿Cómo va creciendo con el tiempo la Base de Datos?
- ¿Cuáles deben ser la velocidades de acceso?
- ¿La data debe ser particionado por ubicación o tema?
- La Base de Datos será Distribuido? o Centralizado?, Si fuera distribuido, sobre que sitios o hosts se ubicarán o asignará la data?.
- ¿Quién es el responsable para hacer que la data se ajusten a los standares?
Durante este proceso de Diseño de la Base de Datos puede surgir algunos problemas comunes de Diseño, como por ejemplo:
- Se tiene una tabla con gran número de campos que no están relacionados con el objeto.
- Pueden existir campos que son intencionalmente blancos a la izquierda en algunos registros porque ellos no son aplicables para esos registros.
- Se obtienen un gran número de tablas las cuales contienen los mismos campos.
Siendo el diseño de la Base de Datos un proceso iterativo, entonces para solucionar los problemas anteriores será necesario redefinir el diseño(cuantas veces sea necesario), intentando responder a las siguientes preguntas(y otras que podrían surgir más adelante):
- ¿Existen campos que usted ha olvidado?, es decir, existe información que usted no ha incluido hasta el momento?
- ¿Eligió un primary key para cada tabla?, si es así, este es fácil de escribir y recordar?
- ¿Está usted repetidamente ingresando información duplicada en una de sus tablas?
- ¿Tiene usted tablas con muchos campos, número limitado de registros, y muchos campos vaciosn en registros individuales?
En fin, luego de haber seguido estos pasos, y teniendo en cuenta lo dicho, estoy seguro que les ayudará a obtener un buen diseño de la Base de Datos. Espero les sirva.
Saludos cordiales!,