martes, 28 de junio de 2016

Receta T-SQL No. 4-9: ¿Cómo Comparar Subconjuntos de Datos de una Tabla?

Índice

1. Introducción
2. Palabras Clave
3. Problema
4. Solución
5. Discusión de la Solución
5.1 Jerarquía anidada
5.2 Alias para el nombre de una tabla
6. Práctica: Comparación de Subconjuntos de Datos de una Tabla
7. Conclusiones
8. Literatura & Enlaces

1. Introducción

En la definición del esquema de una base datos, el diseñador puede definir jerarquías anidadas de datos en una tabla. Este tipo de jerarquías permite, por ejemplo, por medio de un JOIN referenciar subconjuntos de datos y en consecuencia efectuar operaciones entre los registros de una misma tabla. En esta receta T-SQL se enseña cómo a través del renombramiento de tablas, operaciones del tipo JOIN sobre una sola tabla son posibles.

2. Palabras Clave

  • Base de datos
  • Esquema
  • Jerarquía anidada
  • JOIN
  • Subconjunto de datos
  • Tabla

3. Problema

Efectuar una operación JOIN sobre un subconjunto de datos de una tabla.

4. Solución

A través del renombramiento -i.e., alias- varias jerarquías anidadas de datos pueden estar presentes en una operación JOIN.

5. Discusión de la Solución

5.1 Jerarquía anidada


Una jerarquía anidada se define como una estructura integral de una entidad de datos -i.e., tabla o relación- con la que se determinan relaciones entre los datos de esa misma entidad. Por enunciar un ejemplo, el lector puede pensar en la clásica entidad Empleado: en una organización cada empleado está a cargo de un jefe y éste al mismo tiempo es un empleado; en vista gráfica se tendría: 
Jerarquía anidada Empleado-Jefe
Figura 1. Jerarquía anidada Empleado-Jefe.
En este caso el campo id_jefe es la llave foránea con la que se construye la relación «un empleado tiene un jefe».

Con este tipo de relación una tabla puede tratarse como dos tablas independientes o separadas, y realizar consultas acorde a las relaciones que puedan establecerse. Otro tipo de ejemplo constituye las clases de tablas que registran períodos de tiempo: periodos de venta, producción, actividad de transacciones, etc.

5.2 Alias para el nombre de una tabla

(Nota: En Receta T-SQL No. 1-7: Creación de un Alias para el Nombre de una Tabla se describe en detalle cómo renombrar o crear un alias para una tabla.)

6. Práctica: Comparación de Subconjuntos de Datos de una Tabla

El código T-SQL que viene a continuación renombra la tabla Sales.SalesPersoQuotaHistory dos veces; esto con el el propósito de totalizar las ventas de un vendedor para dos años distintos: 2008 y 2009.

En primer lugar se escribe 

FROM Sales.SalesPerson AS S

para obtener las identidades de los vendedores. Luego con 

LEFT OUTER JOIN Sales.SalesPersonQuotaHistory AS S2008
ON S.BusinessEntityID = S2008.BusinessEntityID
AND YEAR(S2008.QuotaDate) = 2008

se obtiene todos los registros de ventas para el año 2008.


A continuación se efectúa otro LEFT OUTER JOIN con la misma tabla pero para el período 2007 y los mismos vendedores:

LEFT OUTER JOIN Sales.SalesPersonQuotaHistory AS S2007
ON S.BusinessEntityID = S2007.BusinessEntityID
AND YEAR(s2007.QuotaDate) = 2007


Al unir estos fragmentos de código, se tiene 

Archivo T-SQL JerarquíaAnidada.sql [Enlace alternativo][Enlace alternativo]: 

Estos son los resultados obtenidos en Microsoft SQL Server Managamente Studio:
Jerarquía anidada SalesPersonQuotaHistory-PeriodoVentas
Figura 2. Jerarquía anidada SalesPersonQuotaHistory-PeriodoVentas.

7. Conclusiones

Se ha demostrado que una jerarquía de datos resulta de interés para la extracción de datos relevantes en una única relación: como la de Empleado-Jefe o la demostrado en el ejemplo de Sales.SalesPersonQuotaHistory.

La siguiente receta T-SQL describe y enseña a combinar los conjuntos de datos de dos relaciones.

8. Literatura & Enlaces

Brimhall, J., Dye, D., Gennick, J., Roberts, A., Sheffield, W. (2012). SQL Server 2012 T-SQL Recipes - A Problem-Solution Approach. United States: Apress.
Receta T-SQL No. 1-7: Creación de un Alias para el Nombre de una Tabla (2016, junio 28). Recuperado desde: https://ortizol.blogspot.com.co/2014/07/receta-t-sql-no-1-7-creacion-de-un-alias-para-el-nombre-de-una-tabla.html


V

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.