Patrones de diseño de bases de datos

Patrones de disenno de bases de datos. Un patron es una plantilla que ya ha sido evaluada como la responsable de resolver un problema, es una guía para apoyarse en realizar el trabajo.

Arboles

Un árbol es un conjunto de nodos conectados en la estructura de hijo a padre. Un nodo pude tener muchos nodos hijos pero solo un padre, con excepción del nodo raíz y no existen los ciclos por lo que un camino solo conecta a dos nodos.

Arbol de nodos

Árboles fuertemente codificados(Hardcoded tree)

A cada nodo se le asocia una entidad. En terminos de base de datos las relaciones que existen entre las tablas pueden ser de uno a uno, de uno a muchos, de muchos a muchos, etc en este caso las relaciones son de uno a muchos (n). El arbol fuertemente codificado es utilizado para representar jerarquías donde es bien conocida la estructura, es importante representar la correspondencia, por ejemplo las estructuras organizacionales. Debe utilizarse sólo en los casos en que los cambios en la estructura a representar sean poco probables. El patrón admite tantos niveles como requiera la jerarquía que se vaya a representar.


Árboles simples

Este patrón normalmente utilizado cuando el árbol es la representación de una estructura de datos.Los elementos a almacenar son del mismo tipo, es decir pueden ser almacenados en la misma entidad. No pueden existir ciclos, es decir, un hijo no puede ser su propio padre. Cuando hablamos de nodos hijos y nodos padres se refiere al nivel de los nodos, los que estan más arriba son los nodos padres y sus derivados, los nodos hijos.


Árbol estructurado

Este modelo es usado cuando se necesita diferenciar los nodos hojas (leaf), de aquellos que generan una nueva rama (branch), porque ambos tipos de nodos tienen diferentes atributos, relaciones y/o semántica. No pueden existir ciclos, es decir, un hijo no puede ser su propio padre. La generalización tiene cubrimiento total y exclusivo, cada elemento de la entidad Node, debe tener su correspondiente elemento en la entidad Leaf o en la entidad Branch.

Grafo

Un grafo dirigido es un conjunto de nodos y un conjunto de caminos dirigido entre los nodos. Cada camino puede representar un cambio de estado o una conexión entre nodos donde cada uno representa un rol determinado, ya sea el origen o el destino o ambos (en el caso de los ciclos o lazos). Desde un mismo nodo pueden salir un sinnúmero de caminos. Un ejemplo de un grafo dirigido puede ser visto al representar los vuelos entre aeropuertos de una aerolínea. Un grafo dirigido puede tener múltiples raíces y cada nodo puede tener múltiples padres.

Grafo dirigido simple

El conjunto de modelos o patrones de grafos es similar al de los árboles, solo que las relaciones de uno a mucho son sustituidas por relaciones de mucho a mucho, surgiendo así una nueva entidad producto de la relación. El patrón grafo dirigido simple se utiliza cuando todos los nodos contienen el mismo tipo de datos. Es similar al árbol simple, la diferencia es que en este caso la relación recursiva sobre Node tiene cardinalidad de muchos a muchos.



Grafo dirigido estructurado Se utiliza cuando todos los nodos contienen el mismo tipo de datos. Es similar al árbol simple, la diferencia es que en este caso la relación recursiva sobre Node tiene cardinalidad de muchos a muchos. Una aplicación práctica para este patrón sería la representación de las listas de contactos en un servicio web de correo electrónico, donde se permita la creación de listas anidadas, así como incluir a un mismo contacto o una misma lista dentro de varias listas.

Flujo de trabajo

Se encuentra la necesidad de representar y persistir flujos de trabajo. Aunque UML tiene su notación para la representación de un flujo de trabajo en el modelado en la base de datos es recurrente el tema de cómo representar esto en un modelo.

Existen dos patrones definidos para diseñar un flujo de trabajo: máquinas de estado para un tipo de entidad y máquinas de estado para escenarios Máquinas de estado para un tipo de entidad.

Máquina de estado para escenarios (control de flujo)

Representa los posibles cambios de estado por lo que puede atravesar un tipo de entidad.

Modelo Entidad-Atributo-Valor


Llaves subrogadas.


Modelos para la seguridad de aplicaciones.

Fuente

Patterns of Data Modeling. Michael Blaha, 2010. Capítulo 1.