Patrones de diseño de bases de datos
| ||
Patrones de diseño de bases de datos. Plantilla que ya ha sido evaluada como la responsable de resolver un problema, es la guía para apoyarse en realizar el trabajo. Los patrones de diseño de bases de datos le permiten al usuario crear una más fortalecida a partir de una guía.
Diseño y construcción de la base de datos
El diseño y construcción de una bases de datos requiere del mayor esfuerzo y analisis posible ya que a partir de este diseño es que se crea la bases de datos, en la actualidad las bases de datos suelen ser muy grandes y a veces el trabajo con los patrones de diseño hacen que el trabajo sea mas fácil además asegura un resultado correcto. Estos patrones son utilizados mayoritariamente en los almacenes de datos.
Árboles
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.
Á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)
Este modelo representa la ocurrencia del cambio de estado en un escenario de una entidad dada, por lo tanto considera el tiempo y la persistencia del mismo en las tablas resultantes. También representa la ocurrencia de un estímulo en una fecha y los estados por los que ha pasado, caracterizados por la fecha de inicio y la fecha fin.
Modelo entidad-atributo-valor
El modelo entidad-atributo-valor es la representación de un modelo flexible donde se pueden representar objetos con sus atributos, es un acercamiento al modelo orientado a objeto representado en el modelo relacional, donde la entidad Class representa las clases, la entidad Attribute representa los atributos de las clases, por su parte la entidad Object representa las instancias de las clases, mientras que la entidad Value representa los valores de cada atributo para cada objeto dado.
Llaves subrogadas
Este patrón es muy utilizado pues se decide generar una llave primara única para cada entidad en vez de usar un atributo identificador en el contexto dado. Normalmente se usa enteros en columnas identity o GUID (Global UniqueIdentifier) que están demostrados que no se repiten o con una probabilidad extremadamente baja. Permite que las tablas sean más fáciles de consultar por el identificador dado que se conoce el mismo tipo de todos en cada tabla.
Fuente
- Blaha, Michael. Patterns of Data Modeling. 2010. Capítulo 1.