martes, 22 de marzo de 2016

XML con SQL SERVER Parte I

Buenas tardes queridos lectores, el día de hoy les traigo el tema de XML con SQL Server, en la red no hay mucha información, así que vamos a tocar este tema el día de hoy, ya es la última parte del curso de Transact SQL, espero sea de su agrado.

Introducción

En ocasiones anteriores a SQL SERVER 2005, para almacenar un valor de tipo XML se tenía que declarar como tipo TEXT, desde esa versión hacia adelante se puede implementar el tipo de datos XML.

El tipo de datos XML permite almacenar documentos y fragmentos XML en una base de datos de SQL Server. Un fragmento XML es una instancia XML en la que falta un solo elemento de nivel superior.

El tipo de datos XML y los métodos asociados ayudan a integrar el XML en el marco relacional del SQL Server.

Modelo de Datos Relacionales o XML

Si los datos están muy estructurados con un esquema conocido, el modelo relacional tiene mas probabilidades de funcionar mejor para el almacenamiento de datos. SQL Server proporciona la funcionalidad y las herramientas necesarias. Por otra parte, si los datos están semiestructurados o no están estructurados, o no se conoce su estructura, debe contemplar la posibilidad de crear un modelo para los datos.

XML es una buena opción si desea un modelo independiente de la plataforma para garantizar la portabilidad de datos mediante el uso de marcado estructural y semántico. Además es una opción apropiada si se cumplen alguna de las siguientes propiedades:

  • Los datos están dispersos o no se conoce la estructura de los mismos o la estructura de los datos puede cambiar de manera importante en el futuro
  • Los dato representan una jerarquía de inclusión, en lugar de referencias entre entidades y pueden ser recursivos.
  • El orden es inherente a los datos.
  • Desea realizar consultas en los datos o actualizar parte de ellos, basándose en su estructura.
Si no se cumple ninguna de éstas condiciones, debe utilizar el modelo de datos relacional. Por ejemplo, si los datos tienen formato XML pero la aplicación solo utiliza la base de datos para almacenar y recuperar datos, solo necesitará una columna [N] VARCHAR (MAX).

Ventajas de almacenar valores en XML

Siempre presentará muchas ventajas mientras sepa que hacer con los resultados que puede emitir un trabajo con XML, tenemos:
  • El motor de base de datos puede determinar si los datos contenidos en una columna XML tienen un formato correcto.
  • Se pueden realizar consultas y actualizaciones detalladas en los datos XML
  • Desea compartir los datos XML, hacer consultas en ellos y modificarlos de forma eficaz y con transacciones.
  • Se puede extraer alguna sección de un documento XML o insertar una nueva sección sin remplazar todo el documento.
  • Se pueden operar con datos relacionales y datos XML dentro de una misma aplicación.
  • En la actualidad el XML es totalmente compatible con la mayoría de los lenguajes de programación como NET, Java o PHP.
  • Un XML tiene acceso a SOAP, ADO.NET y OLE DB.
  • También se puede usar para realizar copias de seguridad, recuperaciones y réplicas de los registros de las tablas en una base de datos.
Pero ya basta de teoría, pasemos a la práctica que es lo que nos interesa y nos fascina.

Ejemplo 1:
Script que permita crear una tabla llamada PASAJEROXML en donde se registre el número de pasajero y sus correos electrónicos dentro de una columna de tipo XML

--1.
CREATE TABLE PASAJEROXML(
       NUMPASAJERO INT IDENTITY PRIMARY KEY,
       EMAIL XML)
GO

--2.
INSERT INTO PASAJEROXML VALUES ('<email>vcastillo@gmail.com</email>')
GO

En el punto uno se muestra el script que permite crear la tabla PASAJEROXML definiendo en este caso la columna NUMPASAJERO que será autonumérico y llave de los registros y la columna EMAIL que tiene el tipo de datos XML.

La imagen siguiente muestra la consulta realizada en la tabla PASAJEROXML


¿Qué pasaría en caso de que el pasajero no cuente con solo una cuenta de correo electrónico y se necesite registrar por lo menos 2 emails por cada pasajero?. Ejecutemos el siguiente script para insertar 3 emails para dos nuevos pasajeros

DECLARE @PXML AS XML
SET @PXML = '<email>mtorres@peru.com</email>
                           <email>mtorres@usa.net</email>
                           <email>mtorres@gmail.com</email>'
INSERT INTO PASAJEROXML(EMAIL) VALUES (@PXML)

SET @PXML = '<email>llazaro@hotmail.com</email>
                           <email>llazaro@peru.net</email>
                           <email>luz_lazaro@hotail.com.com</email>'
INSERT INTO PASAJEROXML(EMAIL) VALUES (@PXML)
GO

Ahora se procederá a mostrar el contenido de los registros de la tabla PASAJEROXML como lo muestra a siguiente imagen:


Ahora se procederá a visualizar el contenido de cada valor en la columna EMAIL para comprobar si se cumplió con registrar tres correos por cada pasajero:


Para lograr visualizar los valores XML registrados a un determinado pasajero será cuestión de dar un clic sobre el link del valor registrado en la columna EMAIL.

Hasta aquí este post introductorio a XML con SQL Server, espero haya sido de su agrado y utilidad, espero compartan, comenten, den +1 o un clic en algún anuncio que les interese.

Hasta la próxima



Banderas de Visitantes

Flag Counter