Diferencia entre revisiones de «Patrones de diseño de bases de datos»
| Línea 1: | Línea 1: | ||
| − | '''Patrones de | + | <div align="justify"> |
| + | '''Patrones de diseño de bases de datos'''. Un patrón 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. Los patrones de diseño de una bases de datos le permiten al usuario crear una bases de datos más fortalecida ya que tiene una guía que especifica como debe ser la base de datos. | ||
==Arboles== | ==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. | + | 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. |
[[Image:ArbolBD.jpg|thumb|right|100px|Arbol de nodos]] | [[Image:ArbolBD.jpg|thumb|right|100px|Arbol de nodos]] | ||
| − | ===Árboles fuertemente codificados(Hardcoded tree)=== | + | ===Árboles fuertemente [[codificados]](Hardcoded tree)=== |
A cada nodo se le asocia una entidad. | 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). | 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. | 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. | ||
| + | [[Image:Arboles Fuertemente codificados.jpg|thumb|right|100px|Arbol fuertemente codificado]] | ||
Debe utilizarse sólo en los casos en que los cambios en la estructura a representar sean poco probables. | 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. | El patrón admite tantos niveles como requiera la jerarquía que se vaya a representar. | ||
| Línea 14: | Línea 16: | ||
===[[Árboles]] simples=== | ===[[Á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. | + | 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. |
| + | [[Image:Arboles Simples.jpg|thumb|right|100px|Arbol simples]] | ||
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. | 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. | ||
| Línea 20: | Línea 23: | ||
===Árbol estructurado=== | ===Á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. | 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. | ||
| + | [[Image:Arboles Estructurado.jpg|thumb|right|100px|Arbol estructurado]] | ||
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. | 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== | + | ==[[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 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. | Un grafo dirigido puede tener múltiples raíces y cada nodo puede tener múltiples padres. | ||
| Línea 29: | Línea 33: | ||
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 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. | 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. | ||
| − | + | [[Image:Grafo dirigido simple.jpg|thumb|right|100px|Grafo Dirigido Simple]] | |
| − | + | ===Grafo dirigido estructurado=== | |
| − | |||
| − | |||
| − | 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. | 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. | 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== | ==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. | + | 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. |
| − | + | [[Image:Flujo de trabajo en UML.jpg|thumb|right|100px|Flujo de trabajo disennado en UML]] | |
| − | 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 | + | 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áquinas de estado para un tipo de entidad. | ||
===Máquina de estado para escenarios (control de flujo)=== | ===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== | ==Fuente== | ||
Patterns of Data Modeling. Michael Blaha, 2010. Capítulo 1. | Patterns of Data Modeling. Michael Blaha, 2010. Capítulo 1. | ||
| − | + | </div> | |
[[Category:Informática]] | [[Category:Informática]] | ||
Revisión del 10:05 24 may 2011
Patrones de diseño de bases de datos. Un patrón 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. Los patrones de diseño de una bases de datos le permiten al usuario crear una bases de datos más fortalecida ya que tiene una guía que especifica como debe ser la base de datos.
Sumario
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.
Á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
Patterns of Data Modeling. Michael Blaha, 2010. Capítulo 1.