Está en la página 1de 10

METODO DE DERIVACION DE LAS BASES DE DATOS

Introducción

A continuación se presenta una herramienta para facilitar el diseño de una Base


de Datos de un sistema informático.

Entre los objetivos que se deben alcanzar en el diseño de una BD están los
siguientes:

 Minimizar la redundancia que consiste en la repetición de la información en


diferentes partes de la BD. En caso de haber redundancia de los datos los
procesos de actualización son más complejos.
 Reducir el costo de programación
 Representación simple y modular de la estructura lógica.
 Compatibilidad lógica con desarrollo de futuras BD.

Derivación del Diagrama Entidad-Relación (DER)

Para la derivación del DER se parte del conjunto de DFD que representan la
parte del sistema a automatizar. Se recorre el DFD desde el nivel de contexto
hacia el nivel de fondo, buscando todos los accesos a archivos desde procesos
(tanto de lectura como de escritura). Seguidamente se hace un censo de los
accesos a archivos desde los procesos que son primitivas funcionales. A
continuación se muestra en la figura 1 un ejemplo de un DFD con dos niveles
donde se representan los flujos de accesos a archivos (los flujos entre procesos
no se describen por ser irrelevantes al objeto de estudio de este trabajo).

Figura 1. Diagrama 0 y 5 del Sistema


A continuación se realliza el Censo de Accesos correspondiente:

Acceso Proceso Escrit/Lect Flujo de Datos

1 1 Escritura Guarda despacho de aduana

2 1 Lectura Busca conocimiento de embarque y despacho


de aduana

3 1 Escritura Guarda copia azul de forma 418

4 3 Escritura Guarda arribos

5 4 Escritura Guarda manifiesto de embarque

6 4 Lectura Busca arribos para preparar reporte PR 4382

7 5.1 Escritura Guarda Número de Consignación y Nombre


de Agente

8 5.2 Lectura Encontrar espacio disponible para nueva


consignación
9 5.2 Escritura Marcar espacio usado para consignación

10 5.2 Escritura Marca consignación asignada a espacio

11 5.3 Lectura Encontrar ubicación asignada a consignación

12 5.4 Escritura Marca espacio liberado.

Luego se remplazan los flujos de datos en el Censo de Accesos por los conjuntos
mínimos de datos requeridos para completar el propósito del acceso,
asociando la llave requerida para cada acceso. Esta información se toma de las
definiciones de los flujos definidos en el Diccionario de Datos (DD). De esta
manera se crean los Censos Lógicos de Lecturas y Escrituras.

Para nuestro ejemplo el Censo Lógico de Lecturas es el siguiente:

Acceso Llave Flujo de Datos Lógico

2 Nombre_Barco + Nombre_Agente + Código_Autorización +


Num_Consignación

6 Nombre_Barco + Dia_Arribo + Nombre_Compañia +


Total_Valor_en_Barco + {Num_Consignación + Valor_Consignación +
{Num_Bulto+Valor_Bulto + Código_Despacho +
Descripción_Despacho}}

8 Localidad Almacén _ Presencia o ausencia de un almacén

11 Num_Consignación Num_Espacio_Disponible+Nombre_Agente+
{Localidad_Almacén+{Num_Bulto}}

Censo de Escrituras Lógicas

1 Num_Consignación Código_Autorización

4 Nombre_Barco {Num_Consignación+Nombre_Agente+
Valor_Total_en_Barco+{Num_Bulto+
Valor_Bulto+Código_Despacho
+Descripción_Despacho}}

5 Nombre_Barco Dia_Arribo+Valor_Total_en_Barco+
Nombre_Compañia

7 Num_Consignación Nombre_Agente

9 Num_Consignación Num_Espacio_Disponible+
{Localidad_Almacén}+{Num_Bulto}

10 Localidad_ Presencia en Num_Consignación Almacén

12 Localidad_ Presencia en Num_Consignación Almacén

3er Paso: Crear por cada acceso una relación

R1={Num_Consignación+Código_Autorización}

R2={Nombre_Barco+Num_Consignación+Nombre_Agente+
Código_Autorización}

R4={Nombre_Barco+{Num_Consignación+Nombre_Agente+
Valor_Total_en_Barco+{Num_Bulto+Valor_Bulto+
Código_Despacho+Descripción_Despacho}}}

R5={Nombre_Barco+Dia_Arribo+Valor_Total_en_Barco+Nombre_Compañia}

R6={Nombre_Barco+Dia_Arribo+Valor_Total_en_Barco+Nombre_Compañia+
{Num_Consignación+Valor_Consignación+{Num_Bulto+Valor_Bulto+
Código_Despacho+Descripción_Despacho}}}

R7={Num_Consignación+Nombre_Agencia}

R8={Localidad_Almacén+Indicador_de_Localidad}

R9={Num_Consignación+Número_de_Espacio_Disponible
+{Localidad_Almacén+{Num_Bulto}}}

R10={Localidad_Almacén+Indicador_Localidad}

R11={Num_Consignación+Número_Espacio_Disponible+Nombre_Agente+
{Localidad_Almacén+{Num_Bulto}}}

R12={Localidad_Almacén+Indicador_Localidad}

Observece que no se formó la relación R3 por no tener datos lógicos y que


en R4 existen grupos repetitivos anidados y existe una llave por cada uno que lo
identifica.

Hasta aquí se ha obtenido toda la información referente a la BD a partir de los


DFDs y el DD. A continuación se comenzará el proceso de normalización de la
Base que tendrá como objetivo garantizar la eliminación de redundancia.

4to Paso: Llevar la Base de Datos a 1ra Forma Normal. Para lograr esto
hay que eliminar los grupos repetitivos. Se analiza cada relación
comenzando por los grupos repetitivos más externos y creando una nueva
relación por cada grupo repetitivo interno que se ha eliminado. La llave para la
nueva relación es creada concatenando la llave de la relación anterior y la llave
del grupo repetitivo. A continuación se muestra el resultado de aplicar la 1ra
Forma Normal a las relaciones de la Base.

N1R1=* Equivalente a R1*


{Num_Consignación+Código_Autorización}

N1R2=*EQUIVALENTE A R2*
{Nombre_Barco+Num_Consignación+Nombre_Agente+
Código_Autorización}

N1R4=*DERIVADA DE R4*
{Nombre_Barco+Num_Consignación+Nombre_Agente+
Valor_Total_en_Barco}

N1R5=*DERIVADA DE R4
{Nombre_Barco+Num_Consignación+Num_Bulto+Valor_Bulto+
Código_Despacho+Descripción_Despacho}
N1R6=*EQUIVALENTE A R5*
{Nombre_Barco+Dia_Arribo+Valor_Total_en_Barco+Nombre_Compañia}

N1R7=*DERIVADO DE R6*
{Nombre_Barco+Dia_Arribo+Valor_Total_en_Barco+Nombre_Compañia}
*DUPLICADO*

N1R8=*DERIVADO DE R6*
{Nombre_Barco+Num_Consignación+Valor_Consignación}

N1R9=*DERIVADO DE R6*
{Nombre_Barco+Num_Consignación+Num_Bulto+Valor_Bulto+
Código_Despacho+Descripción_Despacho}
*DUPLICADO*

N1R10=*EQUIVALENTE A R7*
{Num_Consignación+Nombre_Agente}

N1R11=*EQUIVALENTE A R8*
{Localidad_Almacén+Indicador_Localidad}

N1R12=*DERIVADO DE R9*
{Num_Consignación+Número_Espacio_Disponible}

N1R13=*DERIVADO DE R9*
{Num_Consignación+Localización_Almacén}

N1R14=*DERIVADO DE R9*
{Num_Consignación+Localidad_Almacén+Num_Bulto}

N1R15=*DERIVADO DE R11*
{Num_Consignación+Número_Espacio_Disponible+Nombre_Agente}

N1R16=*DERIVADO DE R11*
{Num_Consignación+Localización_Almacén} *DUPLICADO*

N1R17=*DERIVADO DE R11*
{Num_Consignación+Localidad_Almacén+Num_Bulto}
*DUPLICADO*

5to Paso: Llevar la Base a 2da Forma Normal. Para que las
relaciones estén en 2da Forma Normal tienen que estar en 1ra y además
cada atributo no llave tiene que tener una dependencia funcional completa
de la llave primaria. Para lograr esto se analiza cada una de las relaciones y
si no cumple la 2FN se separa la relación de tal forma que cada atributo quede
relacionado con la llave que realmente describe. Por ejemplo:

N1R5={Nombre_Barco+Num_Consignación+Num_Bulto+Valor_Bulto+
Código_Despacho+Descripción_Despacho}

Los atributos Valor_Bulto y Código_Despacho solamente describen al


atributo Num_Bulto que forma parte de la llave primaria, pero no describe a la
llave completa, por tanto estos atributos tienen que asociarse solamente a
Num_Bulto en otra relación, esto queda de la siguiente forma:

N2R51={Nombre_Barco+Num_Consignación+Num_Bulto}

N2R52={Num_Bulto+Valor_Bulto+Código_Despacho+Descripción_Despacho}

A continuación se mostrar la derivación de la Base a 2da Forma Normal

N2R1=* Equivalente a N1R1*


{Num_Consignación+Código_Autorización}

N2R2=*DERIVADA DE N1R2*
{Nombre_Barco+Num_Consignación}

N2R3=*DERIVADA DE N1R2*
{Num_Consignación+Nombre_Agente+Código_Autorización}

N2R4=*DERIVADA DE N1R4*
{Nombre_Barco+Valor_Total_en_Barco}

N2R5=*DERIVADA DE N1R4*
{Nombre_Barco+Num_Consignación} *DUPLICADA*

N2R6=*DERIVADA DE N1R4*
{Num_Consignación+Nombre_Agente}

N2R7=*DERIVADA DE N1R5*
{Nombre_Barco+Num_Consignación+Num_Bulto}

N2R8=*DERIVADA DE N1R5*
{Num_Bulto+Valor_Bulto+Código_Despacho+Descripción_Despacho}

N2R9=*EQUIVALENTE A N1R6*
{Nombre_Barco+Dia_Arribo+Valor_Total_en_Barco+Nombre_Compañia}

N2R10=*DERIVADO DE N1R8*
{Nombre_Barco+Num_Consignación} *DUPLICADA*

N2R11=*DERIVADO DE N1R8*
{Num_Consignación+Valor_Consignación}

N2R12=*EQUIVALENTE A N1R10*
{Num_Consignación+Nombre_Agente} *DUPLICADO*

N2R13=*EQUIVALENTE A N1R11*
{Localidad_Almacén+Indicador_Localidad}

N2R14=*DERIVADO DE N1R12*
{Num_Consignación+Número_de_Espacio_Disponible}

N2R15=*DERIVADO DE N1R13*
{Num_Consignación+Localidad_Almacén}

N2R16=*DERIVADO DE N1R14*
{Num_Consignación+Localidad_Almacén+Num_Bulto}

El próximo paso ser combinar las relaciones que tengan la misma llave
primaria.

N2R1C=* COMPUESTA DE N2R1, N2R3, N2R6, N2R11, N2R14*

{Num_Consignación+Valor_Consignación+Nombre_Agente+
Código_Autorización+Valor_Total_en_Barco+
Número_Espacio_Disponible}

N2R2C=*EQUIVALENTE A N2R2*
{Nombre_Barco+Num_Consignación}

N2R3C=*EQUIVALENTE A N2R7*
{Nombre_Barco+Num_Consignación+Num_Bulto}

N2R4C=*EQUIVALENTE A N2R8*
{Num_Bulto+Valor_Bulto+Código_Despacho+Descripción_Despacho}

N2R5C=*EQUIVALENTE A N2R9, N2R5*


{Nombre_Barco+Dia_Arribo+Valor_Total_en_Barco+Nombre_Compañia}
N2R6C=*EQUIVALENTE A N2R13*
{Localidad_Almacén+Indicador_Localidad}

N2R7C=*EQUIVALENTE A N2R15*
{Num_Consignación+Localización_Almacén}

N2R8C=*EQUIVALENTE A N2R16*
{Num_Consignación+Localización_Almacén+Num_Bulto}

6to Paso: Llevar la Base a 3ra Forma Normal (3FN). Las relacione se
encuentran en 3FN si se encuentran en 2FN y cada atributo no llave no depende
transitivamente de la llave primaria. En nuestro caso se procede a analizar cada
una de las relaciones de la Base, cuando aparezcan dependencias transitivas de
un atributo no llave con la llave primaria, se procede a crear nuevas relaciones
donde se relacione el atributo con el objeto que el describe. Por ejemplo:

N2R4C={Num_Bulto+Valor_Bulto+Código_Despacho+Descripción_Despacho}

El atributo Dirección_Usuario depende completamente del atributo


Codigo_Usuario y es a través de él que depende de la llave primaria Num_Bulto,
por tanto existe una dependencia transitiva en la relación, esto se resuelve
creando una nueva relación donde se pone el atributo con el objeto que describe.

N3R1=*DERIVADA DE N2R4C*
{Num_Bulto+Valor_Bulto+Código_Despacho}

N3R2=*DERIVADA DE N2R4C*
{Código_Despacho+Descripción_Despacho}

Pasando a ser Código_Despacho llave primaria de la relación N3R4C2.

El resto de las relaciones están en 3FN por lo que no se van a volver a


relacionar.

Existen otras simplificaciones que se le pueden hacer a las relaciones, por


ejemplo se puede calcular el Valor de una Consignación obviando el atributo
Valor_Consignación, simplemente sumando los atributos Valor_Bulto para los
bultos (Num_Bulto) asociados a un mismo Num_Consignación. Pero esto se
hace a consideración del diseñador de la Base pues se elimina redundancia
pero aumenta el tiempo de acceso y ejecución.
La Base de Datos se puede seguir perfeccionado hasta llegar a 5ta Forma
Normal, aunque en ocasiones se logra un buen diseño dejando la en 3ra Forma
Normal.

El próximo y último paso es mostrar la base de datos en un diagrama Entidad


Relación y para esto hay que diferenciar las entidades y las relaciones entre
entidades.

Una entidad es un objeto acerca del cual se guarda información. A continuación


se va a mostrar de las relaciones normalizadas las que son entidades y se les va
a asociar un nombre nemotécnico.

N2R1C -> Consignación

N2R5C -> Barco

N3R1 -> Bulto

N3R2 -> Usuario


N2R6C -> Almacén

Las relaciones entre entidades como su nombre lo indica son las relaciones que
existen entre las entidades a través de sus atributos comunes. Los ejemplos de
relaciones entre entidades se mostrarán a continuación asignándoles un nombre
nemotécnico:

N2R3C -> Bultos-Embarcados N2R8C -> Localización_Bulto_Embarcado

A continuación se va a crear el Diagrama Entidad Relación de acuerdo a


las entidades y relaciones entre ellas obtenidas a partir de la derivación.

(Raudel: Incorporar el Diagrama Entidad - Relación)


Conclusiones

Este método para el diseño de una Base de Datos forma parte de la


metodología ADESA2 y se automatizó como parte del sistema CASE
AUTOSOFT, que se realizó en el departamento de Aseguramiento de
Programa de la ESICH.

Bibliografía

Tom DeMarco, Structured Analysis and System Specification (Yourdon Press,


1978)

Gane, Chris, and Trish Sarson, Structured System Analysis: tools and
techniques.

Date, CJ: An Introduction to Database System (Addison-Wesley, 1975)

Garcia Hernández, Lucina; Iosifovich Zmitrovich, Anatoli: Bases de Datos


(Editorial Pueblo y Educación, Octubre 1988)

Teorey, Toby j; Yang, Dongqing; Fry, James P: A Logical Design


Methodology for Relational Databases Using the Extended Entity- Relationship
Model.

También podría gustarte