SlideShare una empresa de Scribd logo
1 de 14
Antipatrones SQL
Modelo Conceptual




  JOSÉ CUARTAS   BASES DE DATOS
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.




       JOSÉ CUARTAS             BASES DE DATOS
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.


       JOSÉ CUARTAS             BASES DE DATOS
Almacenamiento de múltiples valores de un atributo:




•   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.


       JOSÉ CUARTAS             BASES DE DATOS
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.




       JOSÉ CUARTAS             BASES DE DATOS
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.
       JOSÉ CUARTAS            BASES DE DATOS
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 un
    objeto 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.



       JOSÉ CUARTAS             BASES DE DATOS
Entidad-Atributo-Valor:




    JOSÉ CUARTAS      BASES DE DATOS
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.


       JOSÉ CUARTAS              BASES DE DATOS
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.

       JOSÉ CUARTAS             BASES DE DATOS
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..


       JOSÉ CUARTAS             BASES DE DATOS
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..




       JOSÉ CUARTAS             BASES DE DATOS
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
         JOSÉ CUARTAS
         referenciando los que se BASES en común..
                                   tiene DE DATOS
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.




       JOSÉ CUARTAS             BASES DE DATOS

Más contenido relacionado

La actualidad más candente

Conceitos Tabelas Fatos e Dimensões no BI
Conceitos Tabelas Fatos e Dimensões no BIConceitos Tabelas Fatos e Dimensões no BI
Conceitos Tabelas Fatos e Dimensões no BIJosé Nascimento
 
What is sanity testing
What is sanity testingWhat is sanity testing
What is sanity testingpooja deshmukh
 
ISTQB, ISEB Lecture Notes- 2
ISTQB, ISEB Lecture Notes- 2ISTQB, ISEB Lecture Notes- 2
ISTQB, ISEB Lecture Notes- 2onsoftwaretest
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de softwareLiliana Pacheco
 
ISTQB / ISEB Foundation Exam Practice - 5
ISTQB / ISEB Foundation Exam Practice - 5ISTQB / ISEB Foundation Exam Practice - 5
ISTQB / ISEB Foundation Exam Practice - 5Yogindernath Gupta
 
500 istqb-sample-papers-2010-2011
500 istqb-sample-papers-2010-2011500 istqb-sample-papers-2010-2011
500 istqb-sample-papers-2010-2011Helen Nguyễn
 
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...Leinylson Fontinele
 
Tema 2 - T2: Métodos y actividades de la ingeniería de requisitos
Tema 2 - T2: Métodos y actividades de la ingeniería de requisitosTema 2 - T2: Métodos y actividades de la ingeniería de requisitos
Tema 2 - T2: Métodos y actividades de la ingeniería de requisitosMagemyl Egana
 
MiniSPA2022_Build_and_Test_Cloud_Infrastructure_using_Terraform_Modules.pdf
MiniSPA2022_Build_and_Test_Cloud_Infrastructure_using_Terraform_Modules.pdfMiniSPA2022_Build_and_Test_Cloud_Infrastructure_using_Terraform_Modules.pdf
MiniSPA2022_Build_and_Test_Cloud_Infrastructure_using_Terraform_Modules.pdfPradeep Bhadani
 
Tema 1 -T2: La ingeniería de requisitos de software
Tema 1 -T2: La ingeniería de requisitos de softwareTema 1 -T2: La ingeniería de requisitos de software
Tema 1 -T2: La ingeniería de requisitos de softwareMagemyl Egana
 
Тестирование требований
Тестирование требованийТестирование требований
Тестирование требованийNickola14
 
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeiraBanco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeiraNatanael Simões
 
ISTQB Foundation - Chapter 3
ISTQB Foundation - Chapter 3ISTQB Foundation - Chapter 3
ISTQB Foundation - Chapter 3Chandukar
 
Creating and Managing Tables -Oracle Data base
Creating and Managing Tables -Oracle Data base Creating and Managing Tables -Oracle Data base
Creating and Managing Tables -Oracle Data base Salman Memon
 
Create List Relationships by Using Unique and Lookup Columns - SharePoint 201...
Create List Relationships by Using Unique and Lookup Columns - SharePoint 201...Create List Relationships by Using Unique and Lookup Columns - SharePoint 201...
Create List Relationships by Using Unique and Lookup Columns - SharePoint 201...EPC Group
 

La actualidad más candente (20)

Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Conceitos Tabelas Fatos e Dimensões no BI
Conceitos Tabelas Fatos e Dimensões no BIConceitos Tabelas Fatos e Dimensões no BI
Conceitos Tabelas Fatos e Dimensões no BI
 
Good sql server interview_questions
Good sql server interview_questionsGood sql server interview_questions
Good sql server interview_questions
 
What is sanity testing
What is sanity testingWhat is sanity testing
What is sanity testing
 
ISTQB, ISEB Lecture Notes- 2
ISTQB, ISEB Lecture Notes- 2ISTQB, ISEB Lecture Notes- 2
ISTQB, ISEB Lecture Notes- 2
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
 
ISTQB / ISEB Foundation Exam Practice - 5
ISTQB / ISEB Foundation Exam Practice - 5ISTQB / ISEB Foundation Exam Practice - 5
ISTQB / ISEB Foundation Exam Practice - 5
 
500 istqb-sample-papers-2010-2011
500 istqb-sample-papers-2010-2011500 istqb-sample-papers-2010-2011
500 istqb-sample-papers-2010-2011
 
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
 
Tema 2 - T2: Métodos y actividades de la ingeniería de requisitos
Tema 2 - T2: Métodos y actividades de la ingeniería de requisitosTema 2 - T2: Métodos y actividades de la ingeniería de requisitos
Tema 2 - T2: Métodos y actividades de la ingeniería de requisitos
 
MiniSPA2022_Build_and_Test_Cloud_Infrastructure_using_Terraform_Modules.pdf
MiniSPA2022_Build_and_Test_Cloud_Infrastructure_using_Terraform_Modules.pdfMiniSPA2022_Build_and_Test_Cloud_Infrastructure_using_Terraform_Modules.pdf
MiniSPA2022_Build_and_Test_Cloud_Infrastructure_using_Terraform_Modules.pdf
 
Bug life cycle
Bug life cycleBug life cycle
Bug life cycle
 
Tema 1 -T2: La ingeniería de requisitos de software
Tema 1 -T2: La ingeniería de requisitos de softwareTema 1 -T2: La ingeniería de requisitos de software
Tema 1 -T2: La ingeniería de requisitos de software
 
Apex collection patterns
Apex collection patternsApex collection patterns
Apex collection patterns
 
Тестирование требований
Тестирование требованийТестирование требований
Тестирование требований
 
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeiraBanco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
 
Arquitetura MVC
Arquitetura MVCArquitetura MVC
Arquitetura MVC
 
ISTQB Foundation - Chapter 3
ISTQB Foundation - Chapter 3ISTQB Foundation - Chapter 3
ISTQB Foundation - Chapter 3
 
Creating and Managing Tables -Oracle Data base
Creating and Managing Tables -Oracle Data base Creating and Managing Tables -Oracle Data base
Creating and Managing Tables -Oracle Data base
 
Create List Relationships by Using Unique and Lookup Columns - SharePoint 201...
Create List Relationships by Using Unique and Lookup Columns - SharePoint 201...Create List Relationships by Using Unique and Lookup Columns - SharePoint 201...
Create List Relationships by Using Unique and Lookup Columns - SharePoint 201...
 

Similar a Anti patrones SQL, Modelo conceptual

Similar a Anti patrones SQL, Modelo conceptual (20)

Base de datos
Base de datos Base de datos
Base de datos
 
Base D E Dat Os Pau
Base D E Dat Os PauBase D E Dat Os Pau
Base D E Dat Os Pau
 
Creación de base de datos
Creación de base de datosCreación de base de datos
Creación de base de datos
 
BASE DE DATOS
BASE DE DATOSBASE DE DATOS
BASE DE DATOS
 
Base de datos
Base de datosBase de datos
Base de datos
 
Apache Cassandra
Apache CassandraApache Cassandra
Apache Cassandra
 
T2 bd
T2 bdT2 bd
T2 bd
 
BASE DE DATOS ARTURO
BASE DE DATOS ARTUROBASE DE DATOS ARTURO
BASE DE DATOS ARTURO
 
Trabajo Informática
Trabajo InformáticaTrabajo Informática
Trabajo Informática
 
Diseño de una base de datos
Diseño de una base de datosDiseño de una base de datos
Diseño de una base de datos
 
Diseño de una base de datos
Diseño de una base de datosDiseño de una base de datos
Diseño de una base de datos
 
Base de datos
Base de datosBase de datos
Base de datos
 
Base de datos y dba
Base de datos y dbaBase de datos y dba
Base de datos y dba
 
Sql dinamico14042011
Sql dinamico14042011Sql dinamico14042011
Sql dinamico14042011
 
SQL avanzado
SQL avanzadoSQL avanzado
SQL avanzado
 
Diseño de una base de datos
Diseño de una base de datosDiseño de una base de datos
Diseño de una base de datos
 
Modelos de base de datos
Modelos de base de datosModelos de base de datos
Modelos de base de datos
 
UNIDAD 1. El mundo de las Bases de Datos y los SMBD
UNIDAD 1. El mundo de las Bases de Datos y los SMBDUNIDAD 1. El mundo de las Bases de Datos y los SMBD
UNIDAD 1. El mundo de las Bases de Datos y los SMBD
 
base de datos
base de datosbase de datos
base de datos
 
Administración de base de datos oracle - sesion 8
Administración de base de datos oracle - sesion 8Administración de base de datos oracle - sesion 8
Administración de base de datos oracle - sesion 8
 

Más de josecuartas

Seguridad en el almacenamiento de las bases de datos
Seguridad en el almacenamiento de las bases de datosSeguridad en el almacenamiento de las bases de datos
Seguridad en el almacenamiento de las bases de datosjosecuartas
 
Tableros de control o Dashboard
Tableros de control o DashboardTableros de control o Dashboard
Tableros de control o Dashboardjosecuartas
 
Visualizacion de datos
Visualizacion de datosVisualizacion de datos
Visualizacion de datosjosecuartas
 
Calidad de datos
Calidad de datosCalidad de datos
Calidad de datosjosecuartas
 
De los datos a la información
De los datos a la informaciónDe los datos a la información
De los datos a la informaciónjosecuartas
 
Datos semiestructurados Xml
Datos semiestructurados XmlDatos semiestructurados Xml
Datos semiestructurados Xmljosecuartas
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos josecuartas
 
Bases de datos temporales
Bases de datos temporalesBases de datos temporales
Bases de datos temporalesjosecuartas
 
Transformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logicoTransformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logicojosecuartas
 
índices en bases de datos
índices en bases de datosíndices en bases de datos
índices en bases de datosjosecuartas
 
Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosjosecuartas
 
Seguridad en bases de datos
Seguridad en bases de datosSeguridad en bases de datos
Seguridad en bases de datosjosecuartas
 
Los datos en el disco duro
Los datos en el disco duroLos datos en el disco duro
Los datos en el disco durojosecuartas
 
Digramas de venn aplicado en las bases datos
Digramas de venn aplicado en las bases datosDigramas de venn aplicado en las bases datos
Digramas de venn aplicado en las bases datosjosecuartas
 
Bases de datos avanzado NOSQL
Bases de datos avanzado NOSQLBases de datos avanzado NOSQL
Bases de datos avanzado NOSQLjosecuartas
 
Disco duro bases datos
Disco duro bases datosDisco duro bases datos
Disco duro bases datosjosecuartas
 
Fuga de información
Fuga de informaciónFuga de información
Fuga de informaciónjosecuartas
 
Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)josecuartas
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacionaljosecuartas
 
Normalizacion db
Normalizacion db Normalizacion db
Normalizacion db josecuartas
 

Más de josecuartas (20)

Seguridad en el almacenamiento de las bases de datos
Seguridad en el almacenamiento de las bases de datosSeguridad en el almacenamiento de las bases de datos
Seguridad en el almacenamiento de las bases de datos
 
Tableros de control o Dashboard
Tableros de control o DashboardTableros de control o Dashboard
Tableros de control o Dashboard
 
Visualizacion de datos
Visualizacion de datosVisualizacion de datos
Visualizacion de datos
 
Calidad de datos
Calidad de datosCalidad de datos
Calidad de datos
 
De los datos a la información
De los datos a la informaciónDe los datos a la información
De los datos a la información
 
Datos semiestructurados Xml
Datos semiestructurados XmlDatos semiestructurados Xml
Datos semiestructurados Xml
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos
 
Bases de datos temporales
Bases de datos temporalesBases de datos temporales
Bases de datos temporales
 
Transformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logicoTransformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logico
 
índices en bases de datos
índices en bases de datosíndices en bases de datos
índices en bases de datos
 
Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datos
 
Seguridad en bases de datos
Seguridad en bases de datosSeguridad en bases de datos
Seguridad en bases de datos
 
Los datos en el disco duro
Los datos en el disco duroLos datos en el disco duro
Los datos en el disco duro
 
Digramas de venn aplicado en las bases datos
Digramas de venn aplicado en las bases datosDigramas de venn aplicado en las bases datos
Digramas de venn aplicado en las bases datos
 
Bases de datos avanzado NOSQL
Bases de datos avanzado NOSQLBases de datos avanzado NOSQL
Bases de datos avanzado NOSQL
 
Disco duro bases datos
Disco duro bases datosDisco duro bases datos
Disco duro bases datos
 
Fuga de información
Fuga de informaciónFuga de información
Fuga de información
 
Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Normalizacion db
Normalizacion db Normalizacion db
Normalizacion db
 

Anti patrones SQL, Modelo conceptual

  • 1. Antipatrones SQL Modelo Conceptual JOSÉ CUARTAS BASES DE DATOS
  • 2. 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. JOSÉ CUARTAS BASES DE DATOS
  • 3. 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. JOSÉ CUARTAS BASES DE DATOS
  • 4. Almacenamiento de múltiples valores de un atributo: • 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. JOSÉ CUARTAS BASES DE DATOS
  • 5. 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. JOSÉ CUARTAS BASES DE DATOS
  • 6. 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. JOSÉ CUARTAS BASES DE DATOS
  • 7. 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 un objeto 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. JOSÉ CUARTAS BASES DE DATOS
  • 8. Entidad-Atributo-Valor: JOSÉ CUARTAS BASES DE DATOS
  • 9. 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. JOSÉ CUARTAS BASES DE DATOS
  • 10. 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. JOSÉ CUARTAS BASES DE DATOS
  • 11. 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.. JOSÉ CUARTAS BASES DE DATOS
  • 12. 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.. JOSÉ CUARTAS BASES DE DATOS
  • 13. 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 JOSÉ CUARTAS referenciando los que se BASES en común.. tiene DE DATOS
  • 14. 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. JOSÉ CUARTAS BASES DE DATOS