anti patrones sql, modelo conceptual

14
BASES DE DATOS JOSÉ CUARTAS Antipatrones SQL Modelo Conceptual

Upload: josecuartas

Post on 29-Jun-2015

1.052 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Anti patrones SQL, Modelo conceptual

BASES DE DATOSJOSÉ CUARTAS

Antipatrones SQLModelo Conceptual

Page 2: Anti patrones SQL, Modelo conceptual

Que es y para que sirven:

• Es una técnica que pretende resolver un problema, pero a menudo genera otros problemas. 

• Los antipatrones SQL describen los errores más frecuentes realizados por las personas en  SQL, son las metidas de pata mas frecuentes.

• Con la descripción de estos anti-patrones y las posibles soluciones, se pretende mejorar el desarrollo, “evitando” y generando una solución mas adecuada.

BASES DE DATOSJOSÉ CUARTAS

Page 3: Anti patrones SQL, Modelo conceptual

Almacenamiento de múltiples valores de un atributo

• ¿cómo  hacer para almacenar una colección de valores relacionados en una columna?

• Un atributo con formato de lista separada por comas(y hay mas).– Se complica las consultas para un registro en el campo separado por

comas– Las consultas de agregación usan filas, no listas separadas por comas– No cumple con normalización– La validación y actualización es algo dispendiosa y necesita

generalmente de programación con un lenguaje funcional.

• Si una diseño lógico tiene una tabla con un atributo que tiene un formato donde se almacena múltiples datos, piensa mejor en crear una tabla de intersección.– La tabla contiene las claves foráneas que referencia a dos tablas.

BASES DE DATOSJOSÉ CUARTAS

Page 4: Anti patrones SQL, Modelo conceptual

Almacenamiento de múltiples valores de un atributo:

BASES DE DATOSJOSÉ CUARTAS

• Recuerde esto se debe adaptar a las necesidades.• En caso de una desnormalización , donde los datos no se necesitan por

separado se puede aplicar esta antipatrón, pero recuerde pierde integridad.

Page 5: Anti patrones SQL, Modelo conceptual

Almacenamiento y consultas jerárquicas(Arboles)

• Es común que los datos tenga relaciones recursivas– http://es.wikipedia.org/wiki/Algoritmo_recursivo

• La solución tipo “anti patrón” es añadir una columna  id_padre(parent_id). Esto hace referencia a otra columna en la misma tabla y se puede crear una restricción (clave foránea)  para hacer cumplir la relación.– Esto se llama lista adyacente, y no siempre es la mejor solución en

sistemas jerárquicos.

BASES DE DATOSJOSÉ CUARTAS

Page 6: Anti patrones SQL, Modelo conceptual

Almacenamiento y consultas jerárquicas(Arboles)

• Posibles soluciones:– Netsed Sets(Conjuntos anidados)

• Fallos en integridad referencial.• Se utiliza mucho en consultas no en actualizaciones

– Closure Table• Permite que un nodo pertenezca a varios arboles(versatilidad)• Aumento en consumo de disco(tablas externas), disminuye el

procesamiento.– Path Enumeration

• Utilizado para jeraquias en GUI, no exige integridad referencial, tendencia a la redundancia.

– Consultas recursivas(SQL-99) • Depende si el motor que se utiliza tiene implementado SQL-

99(Estandar SQL-99) para almacenamiento jeraquico. .– Listas adjacentes(Adjacency List) el diseño mas convencional y muchas

veces mal utilizado.

BASES DE DATOSJOSÉ CUARTAS

Page 7: Anti patrones SQL, Modelo conceptual

Entidad-Atributo-Valor:

• Uno de los grandes desafíos en el desarrollo de software es que permita adaptarse a cambios futuros con poco o nada de programación.

• Una tabla relacional se compone de atributos que son relevantes para cada fila de la tabla, donde cada fila representa una instancia de unobjeto similar. En este caso cada fila representa  representa un tipo diferente de objeto.

• El anti patrón Tabla genérica de atributos: sería almacenar todos los atributos en una segunda tabla, un atributo por fila .– La entidad – El atributo: es el nombre de la columna, pero en este caso es el nombre

que se da en cada fila.– El valor: Cada entidad tiene un valor para cada atributo.

BASES DE DATOSJOSÉ CUARTAS

Page 8: Anti patrones SQL, Modelo conceptual

Entidad-Atributo-Valor:

BASES DE DATOSJOSÉ CUARTAS

Page 9: Anti patrones SQL, Modelo conceptual

Entidad-Atributo-Valor:

• El anti patrón Tabla genérica de atributos.– Se dificulta la lectura de los nombres de atributos.– Se dificulta la integridad del tipo de dominio de dato.– No puede usar un dominio definido.– Recuerde el SQL se aplica a columnas no a filas.– Mezcla de metadato y datos.

• No olvide, Use metadatos para metadatos.– Defina atributos en columnas– Defina tablas relacionadas para tipos relacionados

• Crear una tabla de herencia• Considere el uso de soluciones no relacionales para atributos

demasiado flexibles y dinamicos(datos semi-estructurados).• En caso de ser necesario realizar atributos dinámicos, utilice este anti

patrón solo con pocas tablas, o busque una alternativa noSQL.

BASES DE DATOSJOSÉ CUARTAS

Page 10: Anti patrones SQL, Modelo conceptual

Entidad-Atributo-Valor:

• La mejor solución cuando se presenta este antipatron tiene varias alternativas y dependen de como se realizara la consulta, generalmente estas alternativas funciona mejor cuando se tiene pocos “subtipos”.

• Herencia de una sola tabla: El diseño más simple es almacenar todos los tipos de objetos(metadatos) relacionados en una tabla, con una columnas distintas para cada atributo que existe en cualquier tipo de objetos.– En caso de almacenar otro nuevo tipo de objeto, se debe alterar la tabla

y adicionar una nueva columna con su respectivo dominio.– En esta tabla se tendrá varios subtipos o atributos que son generales

par varios objetos.– Esta solución es la mejor cuando se tiene pocos

• Datos semiestructurados: Solucion altamente flexible permite agregar nuevos atributos frecuentemente..– Esta solución es muy buena cuando no se puede controlar el limite de

nuevos objetos o se definen nuevos atributos con mucha frecuencia.

BASES DE DATOSJOSÉ CUARTAS

Page 11: Anti patrones SQL, Modelo conceptual

Entidad-Atributo-Valor:

• Tabla concreta de herencia: Esta solución crea una tabla para cada subtipo de objeto, lo cual tendría atributos iguales en cada tabla que son comunes entre los subtipos de objetos.– La ventaja es que elimina el almacenamiento de datos innecesarios

para cada fila de un subtipo. – Se complica cuando se necesita realizar una adición o eliminación en

los atributos comunes a la “superclase”.– Es la mejor solución cuando se consulta pocas veces todos los

subtipos.• Tabla clase herencia: Se crea una tabla para el tipo base y una tabla para

cada subtipos particular.– Recuerde la clave primaria en las tablas particulares son la referencia o

relación con la tabla base.– Este diseño es conveniente cuando se consulta todos los subtipos

referenciando los que se tiene en común..

BASES DE DATOSJOSÉ CUARTAS

Page 12: Anti patrones SQL, Modelo conceptual

metadatos tribbles:

• El objetivo es mejorar el desempeño ante tablas que tiene mucho almacenamiento.

• El antipatrón separa en varias tablas con estructura similar los datos– Separación por fecha, año, mes, usuario , numero de documento– Se crea una nueva tabla para nuevos datos, esto termina realizando

una combinación de datos con metadatos.• Con esta solución Tabla clase herencia: Sconesta solución se dificulta la

consulta por mutiples tablas ( crea una tabla para el tipo base y una tabla para cada subtipos particular.– Recuerde la clave primaria en las tablas particulares son la referencia o

relación con la tabla base.– Este diseño es conveniente cuando se consulta todos los subtipos

referenciando los que se tiene en común..

BASES DE DATOSJOSÉ CUARTAS

Page 13: Anti patrones SQL, Modelo conceptual

metadatos tribbles:

• El objetivo es mejorar el desempeño ante tablas que tiene mucho volumen de datos(bajo desempeño en consultas).

• El antipatrón clonar tablas o columnas: separa en varias tablas con estructura similar los datos– Separación por fecha, año, mes, usuario , numero de documento– Se crea una nueva tabla para nuevos datos, esto termina realizando

una combinación de datos con metadatos.• Esta solución dificulta la consulta e históricos por múltiples tablas (Id de

clave primaria esta disperso) • difícil mantener una sincronización de datos.• Difícil mantener la integridad de datos(Cuando se generan reportes de

diferentes tablas tribbles).• La integridad referencia se pierde, la tabla maestra se compone de

múltiples tablas• Recuerde la clave primaria en las tablas particulares son la referencia o

relación con la tabla base.– Este diseño es conveniente cuando se consulta todos los subtipos

referenciando los que se tiene en común..BASES DE DATOSJOSÉ CUARTAS

Page 14: Anti patrones SQL, Modelo conceptual

ANTIPATRON CADENAS PREDEFINIDAS

• El dominio del tipo de dato solo admite valores predefinidos• El cambio de valores es una alteración de la metadata• Utilizalo si estos valores nunca cambian• Un atributo con formato de lista separada por comas.

– Se complica las consultas para un registro en el campo separado por comas

– Las consultas de agregación usan filas, no listas separadas por comas– No cumple con normalización– La validación y actualización es algo dispendiosa y necesita

generalmente de programación con un lenguaje funcional.

• Se resuelve creando una tabla de intersección.– La tabla contiene las claves foráneas que referencia a dos tablas.

BASES DE DATOSJOSÉ CUARTAS