Diseño de Base de Datos
Diseño de Base de Datos
Diseño de Base de Datos
Recopile todos los tipos de información que podría querer registrar en la base de
datos, como los nombres de producto y los números de pedido.
Elija la clave principal de cada tabla. La clave principal es una columna que se usa
para identificar cada fila. Un ejemplo podría ser Id. de producto o Id. de pedido.
Busque en cada tabla y decida cómo se relacionan los datos en una tabla con los
datos de otras tablas. Agregue campos a las tablas o cree tablas para aclarar las
relaciones, según sea necesario.
Perfeccionar el diseño
Analice el diseño en busca de errores. Cree las tablas y agregue unos cuantos
registros de datos de ejemplo. Compruebe si puede obtener los resultados que
quiere de las tablas. Haga algunos ajustes en el diseño, si es necesario.
Después, tenga en cuenta los tipos de informes o correspondencia que podría querer
crear a partir de la base de datos. Por ejemplo, puede que quiera un informe de ventas
de un producto para mostrar las ventas por región o un informe de resumen de
inventario que muestre los niveles de inventario del producto. También es posible que
quiera generar cartas modelo para enviar a los clientes que anuncien un evento de
venta u ofrezcan una mejora. Diseñe el informe en su mente y luego imagine su
aspecto. ¿Qué información incluiría en el informe? Enumere todos los elementos. Haga
lo mismo para la carta modelo y para cualquier otro informe que tenga previsto crear.
Pararse a pensar en los informes y correspondencia que podría querer crear le ayudará
a identificar los elementos que necesitará en la base de datos. Por ejemplo, suponga
que los clientes tienen la posibilidad de darse de alta (o de baja) de las novedades
enviadas periódicamente por correo electrónico, y que quiere imprimir una lista de los
usuarios que se han dado de alta. Para registrar esa información, agrega una columna
"Enviar correo electrónico" a la tabla de clientes. Para cada cliente, puede establecer el
campo en Sí o No.
El requisito de enviar mensajes de correo a los clientes sugiere otro elemento del
registro. Una vez que sepa que un cliente quiere recibir mensajes de correo, también
deberá saber la dirección de correo electrónico a la que enviárselos. Por tanto,
necesita registrar una dirección de correo electrónico para cada cliente.
Tiene sentido crear un prototipo de cada informe o listado de salida, y considerar qué
elementos deberá generar el informe. Por ejemplo, cuando examina una carta modelo,
podrían venirle a la mente algunas consideraciones. Si quiere incluir un saludo formal,
por ejemplo, la cadena "Sr.", "Sra." o "Srta." con la que comienza un saludo, tendrá
que crear un elemento de saludo. Además, tal vez quiera comenzar una carta con
"Estimado Sr. Alcalá" en lugar de "Estimado. Sr. Jorge Alcalá". Esto sugiere que
normalmente querría almacenar el apellido separado del nombre.
Un punto clave que recordar es que debería dividir cada fragmento de información en
partes más pequeñas. En el caso de un nombre, para poder usar el apellido, dividirá el
nombre en dos partes: nombre y apellido. Para ordenar un informe por apellidos, por
ejemplo, resulta útil tener el apellido del cliente almacenado por separado. En general,
si quiere ordenar, buscar, calcular o crear informes en función de un elemento de
información, debe crear un campo propio para ese elemento.
Piense en las preguntas que tal vez quiere que responda la base de datos. Por ejemplo,
¿cuántas ventas de un producto destacado se cerraron el mes pasado? ¿Dónde viven
sus mejores clientes? ¿Quién es el proveedor de su producto más vendido? Anticipar
estas preguntas le ayuda a centrarse en qué elementos adicionales registrar.
Una vez recopilada esta información, está listo para pasar al siguiente paso.
Otro tipo de relación es la relación de uno a uno. Por ejemplo, supongamos que
necesita registrar información adicional sobre productos que casi nunca necesitará o
que solo se aplica a unos pocos productos. Puesto que no necesita la información con
frecuencia, y que almacenar la información de la tabla Productos daría como resultado
un hueco en todos los productos a los que no se aplica, la coloca en una tabla aparte.
Al igual que la tabla Productos, puede usar el Id. de producto como clave principal. La
relación entre esta tabla y la tabla Productos es una relación de uno a uno. Para cada
registro de la tabla Producto, existe un único registro coincidente en la tabla
complementaria. Cuando se identifica este tipo de relación, ambas tablas deben
compartir un campo común.
Determinar las relaciones entre tablas le ayuda a asegurarse de que tiene las tablas y
columnas correctas. Cuando existe una relación de uno a uno o uno a varios, las tablas
relacionadas tienen que compartir una o varias columnas comunes. Cuando existe una
relación varios a varios, se necesita una tercera tabla para representar la relación.
Refinar el diseño
Una vez que tiene las tablas, campos y relaciones que necesita, debería crear y rellenar
las tablas con datos de ejemplo e intentar trabajar con la información: creando
consultas, agregando nuevos registros, etc. Esto le permitirá resaltar los posibles
problemas. Por ejemplo, tal vez deba agregar una columna que olvidó insertar durante
la fase de diseño, y es posible que tenga una tabla que debería dividir en dos tablas
para eliminar los datos duplicados.
Vea si puede usar la base de datos para obtener las respuestas que quiere. Cree
bocetos de los formularios e informes y compruebe si muestran los datos que espera.
Busque duplicaciones de datos innecesarias y, si encuentra alguna, modifique el diseño
para eliminarla.
Una solución mejor es convertir Categorías en un nuevo tema de la base de datos para
realizar el seguimiento, con su propia tabla y su propia clave principal. Después, podrá
agregar la clave principal de la tabla Categorías a la tabla Productos como clave
externa.
Las tablas Categorías y Productos tienen una relación de uno a varios: una categoría
puede contener más de un producto, pero un producto pertenece únicamente a una
categoría.
Al revisar las estructuras de tabla, esté atento a los grupos que se repiten. Por ejemplo,
considere la posibilidad de una tabla que contiene las siguientes columnas:
Id. de producto
Nombre
Id. de producto1
Nombre1
Id. de producto2
Nombre2
Id. de producto3
Nombre3
Aquí, cada producto es un grupo de columnas que se repite y que difiere de los demás
solo porque agrega un número al final del nombre de columna. Si ve columnas
numeradas de esta forma, debería revisar el diseño.
Este tipo de diseño tiene varios defectos. Para empezar, lo obliga a poner un límite
superior en el número de productos. En cuanto supere ese límite, deberá agregar un
nuevo grupo de columnas a la estructura de la tabla, lo que implica más tareas
administrativas.
Otro problema es que los proveedores que tienen menos del número máximo de
productos desperdiciarán el espacio, ya que las columnas adicionales estarán en
blanco. El defecto más grave de este diseño es que hace que muchas tareas sean difícil
de realizar, como ordenar o indexar la tabla por Id. de producto o nombre.
Siempre que vea grupos que se repiten, revise cuidadosamente el diseño y esté
pendiente sobre cómo dividir la tabla en dos. En el ejemplo anterior, es mejor usar dos
tablas, una para proveedores y otra para productos, vinculadas por Id. de proveedor.
En cada paso, aplica las reglas consecutivamente, para garantizar que su diseño llegue
a tener lo que se denomina "formulario normal". En general, se aceptan cinco
formularios normales, del primer formulario normal al quinto formulario normal. Este
artículo se centra en los tres primeros, ya que son todo lo necesario para la mayoría de
los diseños de base de datos.
Primer formulario normal
El tercer formulario normal requiere que no solo cada columna de clave dependa de
toda la clave principal, sino también que las columnas que no son claves sean
independientes entre sí.
Otra forma de decirlo es que cada columna que no sea de clave debe depender de la
clave principal y nada más que de la clave principal. Por ejemplo, suponga que tiene
una tabla que contiene las siguientes columnas:
Suponga que Descuento depende del precio de venta sugerido (PVS). Esta tabla
infringe el tercer formulario normal porque una columna que no es de clave,
Descuento, depende de otra columna sin clave, PVS. La independencia de columna
significa que debería poder cambiar cualquier columna sin clave sin que afecte a
cualquier otra columna. Si cambia un valor en el campo PVS, el descuento cambiaría en
consecuencia, por tanto infringiría esa regla. En este caso Descuento se moverá a otra
tabla cuya clave sea PVS.