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:

  1. Se tiene una tabla con gran número de campos que no están relacionados con el objeto.
  2. Pueden existir campos que son intencionalmente blancos a la izquierda en algunos registros porque ellos no son aplicables para esos registros.
  3. 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!,

Published 6/11/2007 22:50 por Percy Reyes
Comparte este post:
http://geeks.ms/blogs/ozonicco/archive/2007/11/06/database-design-un-proceso-iterativo-nunca-lo-olvides.aspx

Comentarios

# re: Database Design: un proceso iterativo (Nunca lo olvides!)

buen esquema y muy bien detallado...

=)

Wednesday, November 07, 2007 4:56 AM por Johnny.Net

# re: Database Design: un proceso iterativo (Nunca lo olvides!)

Hace 2 años hice una presentacion sobre buenas practicas a la hora de diseñar una base de datos... aunque significaba ponerme en contra todo lo que el profesor hablaba en sus clases... y aunque ni los de mi grupo me apoyaron segui aferrado a los topicos de buenas practicas que habia encontrado, sin contar que con solo un pcoo de criterio te dabas cuenta que asi debia ser la cosa jeje.

Y Percy tienes mucha razon, a veces en conversaciones "informales" con mis patas les explicaba que diseñar una base de datos es mas que solo hace tablitas, campos y jalarle sus relaciones, implica muchisimo mas...

Ahora hay más  base en la que apoyar mis fundamentos cuando les hable sobre diseño de bases de datos :D

Saluds Percy!

y pásame el vaso, no te lo quedes jaaja

Wednesday, November 07, 2007 5:07 AM por Richard Karl

# re: Database Design: un proceso iterativo (Nunca lo olvides!)

Richard habla de "buenas practicas a la hora de diseñar una base de datos".

¿Que recomiendas para profundizar más sobre este tema, url, libros, blogs, etc?

Friday, November 09, 2007 4:19 AM por Bumiga

# re: Database Design: un proceso iterativo (Nunca lo olvides!)

Hola Bumiga!

Un gusto de tenerte por aqui.

Asi es, existen buenas prácticas para todo, hasta para cortejar ;).

Personalmente te recomendaría lo siguiente:

1.- Revisa este página: homepages.uc.edu/.../databasemethodology.html , alli existen guidelines que te serán muy utiles.

2.- Te recomiendo estos libros:

- "Database Design Using Entity-Relationship Diagrams - by Sikha Bagui and Richard Earp"

-  "Wiley, Agile Database Techniques Effective Strategies (2003) Lotb"

- "Refactoring Databases: Evolutionary Database Design - By Scott W. Ambler, Pramod J. Sadalage "

3.-  Tambien podrias revisar este website:  www.databasedesign.co.uk/home.asp

Algo más?, claro,.... sobre todo, llévalo a la práctica!, es suficiente por el momento,

saludos cordiales, y gracias por participar.

Friday, November 09, 2007 7:09 AM por Percy Reyes