Diseño de bases de datos relacionales para mantener historia

19
#SQSummit @fernansql, @miguelegea Diseño de base de datos relacionales para mantener historia 300 Mentor / CEO Global Clic para añadir certifi Clic para añadir certifi Clic para añadir certifi [email protected] / [email protected] MVP-MCT – MCAD – MCSD – MCSE - MCSA Miguel Egea / Fernando Guerrero

description

Presentación realizada por Miguel Egea y Fernando G. Guerrero

Transcript of Diseño de bases de datos relacionales para mantener historia

Page 1: Diseño de bases de datos relacionales para mantener historia

#SQSummit

@fernansql, @miguelegea

Diseño de base de datos relacionales para mantener historia300

Mentor / CEO Global

Clic para añadir certificacionClic para añadir certificacionClic para añadir certificacion

[email protected] / [email protected]

MVP-MCT – MCAD – MCSD – MCSE - MCSA

Miguel Egea / Fernando Guerrero

Page 2: Diseño de bases de datos relacionales para mantener historia

2

El cambio ¿es amigo o enemigo?

Los datos siempre cambian, los modelos relacionales tradicionales manejan ese cambio desde el principio de los tiempos pero ¿se pierde información con esos cambios?

Page 3: Diseño de bases de datos relacionales para mantener historia

3

Diseño de BBDD Rel. Para mantener historia

1. El cambio desde el punto de vista de BI– Que son los cambios– Que tipos de cambios tenemos

2. Arquitectura de una solución relacional que navegue los cambios

– Como funcionan los inserts– Como funcionan los updates– Como funcionan los deletes– Que hacer con los selects

Page 4: Diseño de bases de datos relacionales para mantener historia

4

SCD Dimensiones lentamente cambiantes

4

Hay dos tipos fundamentals de SCDs:– Tipo 1 – Se sobreescribe la version

previa perdiendo simplemente la historia

– Tipo 2 – oSe añade un Nuevo registro con una clave

subrogadaoSe mantiene la historia

Una dimension puede tener a la vez atributos de tipo 1 y 2

4© 2013 SolidQ

Page 5: Diseño de bases de datos relacionales para mantener historia

SDC Tipo 1

-- Correct elevationUPDATE DimResellerSET

Product_Type = ‘All’WHERE

Customer_ID = ‘AW014’ 5© 2013 SolidQ

Reseller Dim

Customer SK

27

Customer ID

AW014

Population

Reseller Type

Warehouse

Product Line (Type-1)

Mountain

Year Opened

1996

Bike Mart

All

• Actualizaciones in place

• Pierde la historia• No se podrá

consultar el valor antiguo

• No se necesitan claves subrogadas

• Sencillo

Customer Source

Customer ID

AW014

Customer Name

Customer Type

Business, Warehouse

Product Line

All

Year Opened

1996

Bike Mart

Page 6: Diseño de bases de datos relacionales para mantener historia

SCD tipo 2Product Dim

Product SK

462

Product ID

BK-M82S

Name Yukon Special

Size 44

Model(Type 2)

Mountain

Class(Type 2)

Light Frame

Start Time End Time

1/1/2003 NULL

1/1/2003 6/7/2005

6© 2013 SolidQ

477

BK-M82S

Yukon Special

44

All Terrain

Light Frame

6/7/2005 NULL• Se hace track de la historia

(versionado)• Se necesitan claves

subrrogados• Necesita más mantenimiento.

Product Source

Product ID

BK-M82S

Name Yukon Special

Size 44

Model All Terrain

Class Light Frame

Page 7: Diseño de bases de datos relacionales para mantener historia

Cambios en los hechosFactura

Customer SK

27

Customer ID

AW014

Importe

IVA 21%

Producto Mountain

1500

Bicicleta

Factura

Customer SK

27

Customer ID

AW014

Importe

IVA 21%

Producto Mountain

1600

Bicicleta chula

Que majo, me cambian la factura

Page 8: Diseño de bases de datos relacionales para mantener historia

Cambios en los hechos

Momento del cambio

• Cuando se produce el cambio? ¿Cuándo debo tener en cuenta esta nueva versión?

• ¿Qué cambia es relevante o irrelevante?

Acaso hay algo diferente?

• Cambia algo con respecto al tratamiento de las dimensiones?

Page 9: Diseño de bases de datos relacionales para mantener historia

¿Pero y en relacional?

No tenemos el concepto de dimensión, aquí son todo tablasNo tenemos el concepto de hecho aquí son todo tablasSin embargo, los datos cambian y seguirán haciéndolo

Page 10: Diseño de bases de datos relacionales para mantener historia

10

Solución propuesta

Crear una tabla de historia

• Almacenar los periodos de validez• En listados normales usar las tablas “Actuales”• En listados que quieran reflejar situaciones anteriores, filtrar la versión adecuada.

Atributos de la tabla histórica

• Clave subrogada o inventada• Fecha desde validez• Fecha Hasta Validez

Recursos tecnológicos.

• Triggers• CDC• Replicacion y procedimientos almacenados

Page 11: Diseño de bases de datos relacionales para mantener historia

11

DEMODiseño de las tablasInserts

Icon de tecnologíaIcon de tecnologíaIcon de tecnología

Page 12: Diseño de bases de datos relacionales para mantener historia

Actualizaciones

Relevante o irrelevante

• Si es irrelevante Actualizar versión actual• Si es relevante Cerrar versión actual y crear

versión nueva

Page 13: Diseño de bases de datos relacionales para mantener historia

13

DEMOupdates

Icon de tecnologíaIcon de tecnologíaIcon de tecnología

Page 14: Diseño de bases de datos relacionales para mantener historia

Borrados

Superar versión y borrar

• Actualiza histórico• Borrar elemento.

Page 15: Diseño de bases de datos relacionales para mantener historia

15

DEMODeletes

Icon de tecnologíaIcon de tecnologíaIcon de tecnología

Page 16: Diseño de bases de datos relacionales para mantener historia

Selects

Crear Select especificos

• Encapsular en vistas• Encapsular en funciones• Encapsular en procedimientos

Page 17: Diseño de bases de datos relacionales para mantener historia

17

DEMOSelects

Icon de tecnologíaIcon de tecnologíaIcon de tecnología

Page 18: Diseño de bases de datos relacionales para mantener historia

Power BI para usuarios de negocio

20

Curso onlineClases virtuales presenciales14, 15, 16, 21, 22 y 23 de JulioDe 16 a 20 h

Máster en BI 4ª Edición (Inicio Octubre 2014)- Clases presenciales virtuales- 450 horas (60 ECTS) - SolidQ – UPM

- Clases + trabajo práctico + proyecto- Beca de hasta 1.300 € para los primeros inscritos.

Máster en Big Data & Analytics1ª Edición (Inicio Octubre 2014)- Clases presenciales virtuales- 1 año (60 ECTS) UMA

- Clases + trabajo práctico + proyecto

Información e inscripción: http://university.solidq.com / [email protected]

Page 19: Diseño de bases de datos relacionales para mantener historia

Si quieres disfrutar de las mejores sesiones de nuestros mentores de España y Latino

América, ésta es tu oportunidad.

http://summit.solidq.com

Síguenos:

21