Você está na página 1de 32

Administrador de Bases de Datos

Un administrador de bases de datos es un experto en el diseño y mantenimiento de las


bases de datos relacionales. Su función es muy importante para todo negocio cuyo
crecimiento depende del manejo eficiente de la información.

Nivel 01

Lección 01

¿Qué hace un administrador de bases de datos?

Su trabajo es muy importante porque de él depende la disponibilidad y seguridad de la


información en las organizaciones.

Originalmente las bases de datos solo se utilizaban para guardar datos en cualquier
computadora o servidores especializados, por ejemplo, para saber cómo iban las ventas
de la empresa, quiénes eran los clientes y qué compras se hicieron durante un período
específico.

Ahora las bases de datos no solo sirven para conocer datos, sino para hacer
predicciones del comportamiento, de muchos aspectos de una organización.

Estas predicciones se logran a través de la transformación de los datos en información


estructurada, para su posterior análisis y aplicación, en sí, los datos se convierten en
conocimiento.

Antes de llegar al análisis de los datos, hay que dejarlos listos para ser analizados,
para ello, el administrador de bases de datos aplica metodologías de extracción de datos,
posteriormente los transforma en un repositorio de información más eficiente que permite
realizar búsquedas gracias a que la información está enfocada a un objetivo de
predicción.

Para que la extracción de la información de las bases de datos sea lo más eficiente
posible, estas deben estar normalizadas, es decir, todo proceso de modificación, debe
cumplir con las normas de la organización, de tal manera que el repositorio se alimente de
información que cumpla con el objetivo de predicción.

Todos estos procesos se realizan con el sistema gestor de bases de datos,


herramienta primordial del administrador porque en ella se crea y manipula la base de
datos.
Ética profesional

 Nunca compartas o modifiques la información sin autorización.


 No copies o robes información de una base de datos para usos alternativos.
 Notificar si existe alguna anomalía.
 Todo debe ser autorizado.

Lenguaje estructurado de consulta SQL

Se utiliza para definir y manipular a las bases de datos y consultar información.

¿Qué es SQL (Structure Query Language)?

Se divide en:

Lenguaje de definición de datos. Sirve para crear, modificar y borrar una base de
datos, tablas y campos. Contiene las siguientes funciones básicas:

 Create. Crear objetos de datos, como nuevas bases de datos, tablas, vistas,
entre otros.
 Alter. Modificar la estructura de una tabla u objeto, se pueden agregar y quitar
campos en una tabla, modificar el tipo de campo, etcétera.
 Drop. Elimina un objeto de la base de datos.
 Truncate. Borra todo el contenido de una tabla sin eliminar a la misma.

Lenguaje de manipulación de datos. Sirve para insertar, modificar, borrar y buscar un


registro de la base de datos. Opera con las siguientes funciones básicas:

 Insert. Agrega registros a una tabla.


 Update. Actualizar o modificar registros sin necesidad de borrarlos y volverlos a
agregar.
 Delete. Borra registros de una tabla.
 Select. Busca información en una base de datos.

Todos los sistemas gestores utilizan SQL para crear y manipular a las bases de datos
incluso en su interfaz gráfica.
Lección 02

Obtener requerimientos del cliente

Tener una estrategia para obtener requerimientos del cliente es fundamental.

 Al implementar una base de datos desde cero, pregunta a tu cliente cómo se


desempeña su negocio.
 Si tu cliente quiere migrar su sistema, pide toda la documentación existente.
 Anota todo lo que creas importante cuando te informen u observes el proceso
de negocio y siempre resuelve tus dudas. No des cosas por hecho.
 Prepara un cuestionario para aclarar puntos ciegos que no logres comprender,
preguntas como:
 ¿Es necesario que los empleados pertenezcan sólo a una tienda?
 ¿Los productos pueden pertenecer a más de un proveedor?
 Genera una propuesta y exponla en una reunión con tu cliente; de esta manera
podrá hacer correcciones y resolver tus dudas.
 Toma en cuenta que todo tu trabajo estará sujeto a cambios; por lo tanto, no te
aferres a tu idea inicial. Sólo así podrás lograr una propuesta final que cumpla
con todos los requerimientos.

Modelo relacional

Es la estructura de la mayoría de las bases de datos actualmente, por eso como


administrador, debes aprender a construirlo e interpretarlo, así tus diseños estarán
actualizados.

Este modelo basa su lógica en las relaciones, por lo que no es muy diferente al modelo
entidad-relación, de hecho si construcción se deriva de él. Ahora las entidades son
mostradas como la abstracción de una tabla y los atributos se introducen en esta. Por lo
general, al pasar una tabla al modelo relacional, el primer atributo o campo, estará
ocupado por la llave primaria, después se pondrán las llaves foráneas y al final los demás
atributos.

La cardinalidad en este modelo se representa con líneas que relacionan dos tablas,
desde una llave primaria, hasta una llave foránea, con la siguiente simbología:

 De uno a uno. Es cuando un elemento, de una entidad solo se puede relacionar


con otro elemento de otra entidad.
 De uno a muchos. Es cuando un elemento de una entidad se puede relacionar
con varios elementos de otra entidad.
 De muchos a muchos. Es cuando dos o más elementos de una entidad, se
pueden relacionar con dos o más elementos de otra entidad.
 De uno a cero o muchos. Es cuando un elemento de una tabla, se relaciona con
ninguno o muchos elementos de otra.
 De muchos a cero o muchos. Es cuando muchos elementos de una tabla, se
relacionan con ninguno o muchos elementos de otra.

Estas cardinalidades pueden variar según el estándar que se utilice, por ejemplo, en el
estándar UML, que es el más utilizado a nivel mundial, se representan de la siguiente
manera:

 De uno a uno
 De uno a muchos
 De muchos a muchos
 De uno a cero o muchos
 De muchos a cero o muchos

¿Cómo se leen las cardinalidades?

Según el estándar UML, la cardinalidad se lee de izquierda a derecha o de derecha a


izquierda, por ejemplo:

 De izquierda a derecha, cada asamblea está compuesta de uno o más voceros.


 De derecha a izquierda, cada vocero puede ser parte de muchas o ninguna
asamblea.
 El cero es importante, pues indica que el vocero existe, pero no tiene que
pertenecer a ninguna asamblea.

Construcción de un modelo relacional

En tu trabajo constantemente deberás realizar el diseño de una base de datos basada


en el modelo relacional, ya sea para crearla o para modificar una base existente.

Para diseñar una base de datos, primero debes de concebir toda su lógica de
operación, esto se logra teniendo en claro la situación del negocio y de todos sus
procesos, por ejemplo, en la base de datos de una tienda departamental con muchas
sucursales, se tienen clientes, empleados y productos, pero además el dueño desea que
los empleados pertenezcan solo a una tienda; los clientes estén divididos por grupos de
clientes, los proveedores puedan surtir solo un producto; cada producto tenga una
categoría.

Para construir un modelo relacional, debes seguir los siguientes pasos:


1. Define las entidades o tablas necesarias en el modelo relacional. No te centres
en los atributos pues se agregarán después.
2. Establece las relaciones y pon su cardinalidad.
3. Normaliza hasta la tercera forma normal. Con esto, todas las tablas tendrán una
llave primaria, mantendrán dependencia funcional y no contendrán duplicación
de datos.
4. Elige atributos, no almacenes datos que pueden inferir de otros. Por ejemplo, la
edad se puede inferir de la fecha de nacimiento.
5. Tabla cruzada “muchos a muchos”, “a muchos o cero”.

Tabla Cruzada

Las tablas cruzadas se usan cuando existe una relación de muchos a muchos, ya que
unes la tabla con una llave foránea a la otra tabla, esa misma tendría inconsistencias de
duplicidad, por ejemplo, una tabla de número de venta y otra de productos, se relacionan
con una cardinalidad de muchos a muchos, porque una venta puede tener muchos
productos y un producto puede estar en varias ventas, si la relación se hace poniendo una
llave foránea en la tabla “Número de venta”, esto supondría que puedo comprar varios
productos en la venta “0001”, pero para cada producto tendría que poner ID, número,
venta repetido y como esta es la llave primaria de la tabla rompería la primera forma
normal. Este hecho se soluciona con la creación de una tabla cruzada que relaciona a las
dos tablas anteriores y une sus llaves primarias, eliminando los problemas de duplicidad
de información.

Las bases de datos se implementan en negocios como tiendas, bancos, bibliotecas,


aeropuertos y otros, y cada negocio tiene reglas características que los definen. Será tu
trabajo interpretarlas para construir un modelo relacional.

Modelado de un ambiente de negocios

Para que entiendas mejor cómo se crea el modelo relacional en un ambiente de


negocios, observa este ejemplo:

Una tienda departamental quiere implementar una base de datos en su ambiente de


negocios para lo cual te da las siguientes reglas de negocio:

1. Un producto viene de un proveedor


2. Un proveedor vende ninguno o varios productos
3. Un producto tiene solo una categoría
4. Una categoría puede tener ninguno o muchos productos
5. Un empleado puede realizar varias ventas
6. Una venta le pertenece a un empleado
7. Un cliente puede realizar varias compras
8. Una venta de la tienda le pertenece a un cliente
9. Una venta puede tener muchos productos
10. Un producto puede estar en varias ventas

A través de estas reglas de negocio, se distinguen seis entidades con sus llaves
primarias y se logran apreciar las siguientes relaciones:

 De proveedor a productos, es de uno a cero o muchos. Porque puede existir un


proveedor registrado, aunque no suministre algo a la tienda.
 De categoría a producto, también es de uno a cero o muchos. Porque con base
en las reglas del negocio, puede existir una categoría sin productos.

 De empleados a ventas es una relación de uno a muchos. Porque


necesariamente algún vendedor debe existir para cobrar.
 Lo mismo sucede con clientes a ventas. Porque es necesario que exista un
cliente para realizar una compra.

 Por último, la relación entre ventas y productos, es de muchos a muchos. Y


para evitar duplicidades, crearás una tabla cruzada, que se llamará “Detalle de
ventas”, las llaves primarias de las dos llaves relacionadas, formarán la nueva
llave primaria.

Con los datos anteriores, estableces las relaciones, creando llaves foráneas en las
tablas principales.

Coloca los atributos restantes a cada tabla, por ejemplo, para la tabla de productos,
algunos atributos importantes son cantidad, precio o stock.

De esta forma se crea el modelo relacional, con su simbología característica.

Nivel 02

Lección 01

Almacén de datos

Como administrador de bases de datos también estarás encargado del diseño y


operación de los data warehouse, debes saber cuáles son sus aplicaciones para generar
análisis más eficientes.
Data Warehouse o almacén de datos en español, es una base de datos orientada al
análisis de información, este almacén se olvida de las transacciones o procedimientos
almacenados en la base de datos, y solo se enfoca en extraer y organizar información
importante almacenada en otras bases de datos. Para realizar esto, debe cumplir con las
siguientes características:

Orientado a temas. Todos los datos deben estar relacionados respecto al tema a
analizar.
Variante en el tiempo. Los cambios de los datos en el tiempo, deben quedar
registrados para evitar pérdidas de información.
No volátil. La información no se modifica, ni se elimina, solo es de lectura.

La función del Data Warehouse es contener los datos útiles para el ambiente de
negocio y posteriormente transformarlos en información relevante, que se pueda analizar
rápidamente, de esta forma, los usuarios autorizados pueden realizar consultas, sin tocar
o afectar la operación del sistema.

Para cumplir la función del almacén, es necesario tomar en cuenta el “Principio de


separación de datos”, el cual dice que se deben separar los datos usados en la operación
de la base de datos de los datos que se guardan en el almacén para que nunca coincidan,
con este principio se diseñan los ETL’s que se refieren a:

Extracción. Obtener información deseada de datos almacenados.


Transformación. Adecuarlos a los esquemas de Data Warehouse.
Carga. Depositar los datos en el almacén.

Con estos pasos, la información que se consulta en el almacén, no está anclada a la


base de datos.

Data Marts

Los data marts son bases de datos departamentales que se alimentan del Data
Warehouse, con el fin de evitar, una búsqueda exhaustiva por parte del sistema y así
recibir la información más rápido, por ejemplo, en el Data Warehouse de una tienda,
existen data marts de áreas específicas como Recursos Humanos, Ventas, Compras,
etcétera. A cada uno de estos data marts, solo acceden un número limitado de usuarios,
que se dedican al análisis de la información de un propósito específico. Para el análisis de
los data marts, se contemplan estructuras multidimensionales de datos como los cubos
relacionales que conocerás más adelante.
Esquemas de almacenes de datos

Los almacenes de datos están diseñados para poder proveer respuestas a


prácticamente cualquier duda que pueda tener el personal sobre el funcionamiento de la
empresa además de asistir con información relevante durante la toma de decisiones. Para
lograr este cometido, los almacenes deben ser diseñados mediante diferentes esquemas
que vas a aprender y aplicar en tu trabajo.

Esquema de estrella. El esquema de estrella en la arquitectura del almacén de datos,


es el más simple de todos los esquemas, se llama estrella porque la tabla de hechos o la
central, está rodeada de entidades llamadas dimensiones y lleva un diseño lógico
relacional en la que las tablas de hechos recaen en la segunda forma normal.

Las tablas de hechos, pueden ser vistas como una tabla cruzada de entre varias
entidades y su llave primaria queda conformada por la combinación de las llaves primarias
de las dimensiones, tener la información relevante en una tabla de hechos, hace posible
que la programación de las consultas sea más simple y rápida, ya que el sistema en vez
de ir cada tabla a buscar la información, solo va a la tabla de hechos.

Para identificar este esquema es importante que notes que solo existe una tabla de
dimensiones por dimensión.

¿Formación de dimensiones?

Toma el ejemplo de la tienda para diseñar un Data warehouse, primero identifica qué
tipo de información, va a querer analizar en el futuro el cliente, ¿cuántos productos se
vendieron?, ¿quién vendió cada uno?, ¿quién compró cada uno?, ¿cuándo ocurrió?

Dependiendo de las necesidades del proyecto, organiza la base de datos con las
siguientes etiquetas: Products, Employees, Customers. Para el Data warehouse, crea una
dimensión de tiempo que dependerá de la fecha de la orden, utilizando las entidades,
genera una tabla que combine las llaves primarias para crear la llave primaria de hechos y
después ingresar los atributos, como cantidad, costo total entre otros.

Las dimensiones se pueden formar del uso de más tablas, por ejemplo, la dimensión
de productos puede llevar la categoría de los mismos, eso significa que ahora está en
juego la tabla de Categories de la base de datos para conformar la dimensión de
productos, de esta forma se diseña un Data warehouse, más adelante, aprenderás a
utilizar un software de diseño para crear modelos relacionales de manera gráfica.

Continuando con los esquemas para la generación de bases de datos, es importante


que conozcas los esquemas de copo de nieve y constelación.
 Esquema de copo de nieve. Este esquema es más complejo que el esquema
de estrella, está diseñado para el mantenimiento de dimensiones, parecido a un
modelo relacional, ya que cumple con la tercera forma normal, es decir, trata de
segmentar información en caso de que ésta sea muy extensa, otra ventaja, es
que este esquema, ahorra espacio y memoria; imagina una tabla dimensional
que incluye un millón de registros de varios clientes, es una mejor práctica,
crear una tabla de grupos de clientes, en donde se mueven los datos comunes
para cada grupo, de esta forma, el tamaño de las dos formas sería menor que
el de una tabla no normalizada, con todos los datos del cliente.

Es verdad que las sentencias de consulta, incrementa la dificultad en este tipo


de esquemas, por lo tanto, este tipo de Data warehouse no tiene un rendimiento
tan bueno, para este ejemplo, tomaremos el esquema estrella anterior, sobre el
cual se crean tablas para normalizar las dimensiones, en el caso de productos,
creas una marca y categoría, en el caso de clientes, creas un grupo, de esta
manera, la información ocupará menos espacio en la memoria, porque se divide
en otras tablas.

 Esquema de constelación. Es un esquema más complejo que los dos


anteriores, ya que existe más de una tabla de hechos, así las tablas de
dimensiones pueden estar repartidas entre las múltiples tablas de hechos, con
el fin de tener diferentes aspectos del negocio registrados.

La gran ventaja de este tipo de esquemas es su gran flexibilidad, pero al


generarla, se sacrifica su facilidad y pueden llegar a ser difíciles de mantener en
un futuro por el crecimiento de los datos.

Estos esquemas logran las mismas velocidades de búsqueda que el esquema estrella,
siempre y cuando se genere una tabla por dimensión, por ejemplo, la misma persona, que
mandó hacer el Data Warehouse, ahora quiere saber cuál es el bono por mes para cada
empleado en cada uno de los territorios, con esto sabrá el rendimiento de cada empleado.

Para resolver esto toma el esquema estrella y agrega otra tabla de hechos, en esta
crea llaves primarias de las dimensiones de tiempo, producto y empleado, además crea la
dimensión geográfica, para saber el territorio de donde proviene el empleado, la segunda
tabla de hechos se llamará “Bonos por empleado” y resolverá este aspecto del negocio.

Software de diseño de bases de datos

Creación de una base datos. El proceso que utiliza el software para diseñar y crear una
base de datos es el siguiente:
1. Conexión al manejador de base de datos
2. Creación de una base de datos
3. Creación de tablas y atributos
4. Relaciones entre tablas
5. Modificación de llaves primarias

Para realizar una conexión con una base de datos, sigue estos pasos:

Abre el programa de diseño, localiza la barra de herramientas, selecciona data base y


elige new conection, selecciona la instancia de ese SQL server en la que deseas trabajar
en la opción server, por último localiza en la barra la pestaña authetication, ahí selecciona
el modo de autenticación, con el que entras a la base de datos, en este caso será, SQL
server authentication, presiona aceptar.

Para crear una base de datos nueva, sigue estos pasos:

Selecciona new database, que está ubicada en la barra de herramientas en la sección


database, asígnale un nombre a la base datos, ya que aparezca en la pestaña, selecciona
empty authorice system, en la opción owner, presiona el ícono de guardar para crear la
base de datos.

Para crear tablas en la nueva base de datos:

En la sección database explorer, despliega la instancia y la base de datos que creaste,


haz click derecho en tables y selecciona new table y asígnale un nombre y tecléalo,
guarda.

Para agregar un atributo de llave primaria sigue estos pasos:

Localiza la sección para agregar atributos ubicada en la pestaña main, haz click en el
ícono que se encuentra en el campo de name, una vez en la ventana emergente, asígnale
un nombre, selecciona el tipo de variable, selecciona primary, si necesitas que la variable
tenga la función de autoincremento, selecciona identity y presiona aceptar.

Para crear una llave primaria múltiple, sigue el mismo proceso, recuerda que en una
tabla solo puede haber un campo que se incremente, para agregar otros atributos que no
sean llaves primarias, sigue el proceso hasta el paso cuatro, cuando hayas terminado de
agregar atributos selecciona el ìcono de guardar.

Una vez que tienes las tablas creadas, solo falta crear las relaciones, para hacerlo
sigue estos pasos:
Localiza la sección de database, en la barra de herramientas y selecciona database
diagram, arrastra la base de datos hacia la área de trabajo para agregar las tablas, da
click en el ìcono de new relation para crear la relación, haz click sostenido en la tabla
adonde vaya a ir a la llave foránea y arràstralo hacia la tabla de donde venga la llave
foránea, selecciona las llaves relacionadas en la ventana emergente y haz click en update
database para finalizar, realiza este procedimiento para relacionar todas las tablas de tu
base de datos.

Hay ocasiones en las que después de haber creado una tabla se necesita modificar
una llave primaria, para poder reasignar una llave primaria:

Da doble click sobre la tabla que quieras modificar, ve a la pestaña de constrains en la


ventana, da click derecho sobre la restricción que comience con PK y selecciona delete
constrain, por último vuelve a asignar la llave primaria con los cambios que deseas hacer,
guarda.

Lección 02

Funciones de SQL

Al programar en SQL puedes hacer uso de funciones son ampliamente utilizadas al


manejar bases de datos para reducir las líneas de código, es por ello que debes aprender
su sintáxis para aplicarlas de manera correcta.

Funciones

Una Función es un grupo de instrucciones que se ejecutan al ser llamadas desde un


programa procedimiento, estas reciben datos de entrada que son transformados para
después arrojar un resultado, en general, las funciones deben tener un nombre único para
evitar que el sistema sufre confusiones. En SQL existen tres tipos de funciones, estas
son:

 Funciones escalares
 Funciones en línea
 Funciones en línea de múltiples sentencias

Funciones escalares

Devuelven un único valor de cualquier tipo de datos, tienen la siguiente sintáxis:


Escribe Create Function y a continuación el nombre de la función, abre paréntesis y
escribe el nombre del parámetro con su tipo de dato y longitud, estos son los parámetros
de entrada, si es más de uno, sepáralos con coma.

Despúes del paréntesis escribe Returns y el tipo de dato al ingresar de la función,


después de esto escribe AS, BEGIN, END, entre BEGIN y END, escribe el código de la
función.

CREATE FUNCION Nombre de la función (Nombre y Tipo de Dato)


RETURNS Tipo de dato
AS
BEGIN
Aquí escribe el código de la función
END

A continuación, verás un ejemplo de la aplicación de una función escalar, deberás


calcular el IVA de la base de datos en la que has estado trabajando. Para realizarlo:

Da nombre a la función abriendo un paréntesis y escribiendo el parámetro de entrada y


el tipo de dato, para identificar parámetros primero pon una arroba, después especifica el
tipo de dato que retornará la función, escribe el código entre BEGIN y END, declara
variables dentro de la función con la instrucción DECLARE y el nombre de la variable con
arroba y su tipo de dato, para modificar o asignar valores a la variable, se utiliza SET, aquí
es donde harás el cálculo del IVA, al terminar la función escribe RETURN y la variable
que llave el resultado, ejecuta este código completo desde CREATE hasta END, para
crear la función en el sistema gestor.

CREATE FUNCTION CalculoIVA@Price money) RETURNS money


AS
BEGIN
DECLARE@IVA money
SET @IVA = @Price * 1.16
RETURN @IVA
END

Ejecución de una función

Para utilizar una función, solo debes crear una nueva consulta, por ejemplo, realiza una
búsqueda, escribe SELECT y los campos a utilizar de la tabla Products, para calcular el
IVA con respecto al precio por unidad, en el último campo escribe dbo punto nombre de
función y entre paréntesis, los parámetros de entrada, en este caso será UnitPrice,
después renombra a la columna con un AS, ejecuta la consulta y deberá aparecer la
columna antes nombrada con el IVA calculado para cada unidad.
SELECT ProductID, ProductName, UnitPrice, dbo. CalculoIVA (UnitPrice) AS IVA
FROM Products

Toma en cuenta que las funciones, siempre deben ejecutarse dentro de una sentencia
por ejemplo, SELECT, no se pueden ejecutar solas.

Funciones en línea

Son aquellas que regresan un conjunto de resultados correspondientes a una


sentencia SELECT, por lo tanto, el resultado es una tabla. Para crear una función en
línea, sigue estos pasos:

Sigue el mismo procedimiento para crear una función escalar y en lugar de BEGIN y
END, escribe RETURN, abre un paréntesis y aquí es donde se escribe el código que será
una consulta.

CREATE FUNCTION Nombre de la función (Parámetro de entrada) RETURNS Tipo de


dato
RETURN (Código de la función)

Como ejemplo, debes generar una función que arroje a todos los clientes de una
misma nacionalidad, para realizar esto sigue este procedimiento:

Escribe el nombre del parámetro de entrada con una arroba y el tipo de dato junto con
su longitud, en RETURNS escribe el tipo de datos table, en el código escribe la sentencia
de consulta en la tabla Customers, como es en este caso, elige los campos que vayas a
utilizar, después escribe WHERE y la operación lógica que tiene que relacionar el campo
del país en la tabla y el parámetro de entrada, ejecuta este código seleccionándolo con el
mouse y presiona ejecutar, como el retorno de la función es un dato tipo tabla, este se
llama con una instrucción SELECT, especificando el parámetro de entrada, también ten
en cuenta que no puedes utilizar sentencias como ORDER BY dentro de una función en
línea.

CREATE FUNCTION CountryCustomers (@Country nvachar (15)) RETURNS table


RETURN (SELECT CustomerID, CompanyName, Country FROM Customers
WHERE Country=@Country)
Funciones en línea de múltiples sentencias

Son similares a las funciones en línea, excepto que el resultado está compuesto por la
ejecución de varios SELECT, por lo general, se utilizan cuando se requieren de mayor
lógica de proceso.

Para crearlas, se sigue la misma estructura que para las funciones escalares, con la
siguiente diferencia, en la parte de RETURNS debes nombrar una variable tipo tabla y
abrir paréntesis, entre los paréntesis, deberás definir las columnas de la estructura de la
tabla que quieres regresar; entre BEGIN y END, debes generar el código de la función.

CREATE FUNCTION Nombre de la función (Parámetro de entrada)


RETURNS Nombre variable table (Estructura de la tabla)
AS
BEGIN
Código de la función
END

Como ejemplo, debes diseñar una función que al ejecutarse, traiga la información de
cada cliente por país, para hacerlo:

Nombra la función y declara los parámetros de entrada con su tipo de dato y longitud,
en este caso, solo será el nombre del país, nombra a la variable tipo tabla y en los
paréntesis, declara las columnas de esta variable, junto con su tipo de dato y longitud, si
es más de una sepáralas con comas, en este caso será CustomerID, CompanyName,
ContactName y Country; entre BEGIN y END llevarás la variable de la tabla realizando un
INSERT a la misma, ahora realizarás un SELECT de los campos con los que deseas
llenarla, que en este caso, son los mismos de la tabla cliente, ten en cuenta que los
campos deben estar en el mismo orden que los campos de la variable tabla, finalmente
escribimos WHERE donde la columna Country, sea igual al parámetro de entrada,
después de esto escribe RETURN.

CREATE FUNCTION CountryCustomers2 (@Country nvachar (15))


RETURNS @TableCountry table (CustomerID nachar (5),
CompanyName nvachar (40),
ContactName nvachar (30),
Country nvachar (15))
BEGIN
INSERT INTO @TableCountry
SELECT CustomerID, CompanyName, Country FROM Customers
WHERE Country = @Country
RETURN
END
Triggers en SQL

En tu trabajo utilizarás Triggers o disparadores de eventos, estos activarán procesos


automáticos en la base de datos al utilizar una instrucción DML específica como INSERT,
DELET o UPDATE. Cada trigger está anclado solamente a una tabla y funcionan para
proteger a la base de datos de alteraciones. Para crear un trigger sigue este
procedimiento:

En una nueva consulta escribe CREATE TRIGGER después escribe el nombre del
mismo, escribe ON y el nombre de la tabla a la que le quieres anclar el trigger; escribe
AFTER y la o las instrucciones del DML con las que se activará el trigger, en lugar de
AFTER también puedes poner FOR, la diferencia será el tiempo de activación del trigger,
con FOR se activa primero el trigger y después la instrucción DML, mientras que con
AFTER es al revés; ahora escribe AS, BEGIN y END.

CREATE TRIGGER Nombre del trigger


ON Nombre de la tabla
AFTER o FOR DML (INSERT, DELETE, UPDATE)
AS
BEGIN
END

Triggers en acción

Para comprender mejor el funcionamiento de los triggers, observa este ejemplo, en la


base de datos que has estado desarrollando se requiere que cuando exista una inserción
en la tabla Order details, se reste la cantidad de productos comprados de la tabla
Products, para realizarlo, sigue estos pasos:

Nombra al trigger y después de ON escribe el nombre de la tabla que será


OrderDetails, en este caso, el trigger se ejecutará antes de la inserción a la tabla por lo
que tendrás que poner FOR INSERT para verificar que haya producto en existencia, el
código de lo que se realizará se pone entre BEGIN y END, declara las siguientes
variables: cantidad, producto y almacén. Ten en cuenta que deben ser del mismo tipo de
datos de las columnas que vas a consultar para llenarlas, obtén los datos que se le
acaban de insertar con la siguiente consulta SELECT e igual a las variables declaradas a
las insertadas como cantidad igual a Quantity y producto igual a ProductID FROM
inserted, obtén los datos del almacén que se encuentran en la tabla productos con una
consulta igual a la llave primaria a la variable producto, realiza un UPDATE a la tabla
productos para cambiar el campo UnitsinStock con la resta de Stock y cantidad, escribe
WHERE e iguala la llave primaria a la variable producto, ejecuta el trigger para guardarlo
en la base de datos, si deseas cambiar el trigger, en vez de CREATE escribe ALTER,
porque si no, te dará un error de sistema.
CREATE TRIGGER StockUpdate
ON [OrdersDetails]
FOR INSERT
AS
BEGIN
DECLARE @Cantidad smallint, @ProductID int, @Stock smallint
SELECT @Cantidad = Quantity, @ProductoID = ProductoID FROM inserted
SELECT @Stock = UnitsinStock FROM Products WHERE ProductID =
@ProductoID
UPDATE Products SET UnitsinStock = @Cantidad WHERE
END

Ejecución del Trigger

Para utilizar el trigger, simplemente realiza un INSERT a la tabla OrderDetails, verifica


que exista el cliente y el producto que introducirás y también que no excedas la cantidad
disponible en almacén, ya que el campo no acepta números negativos.

La ausencia de errores en el sistema y la resta de productos en el campo UnitsinStock


de la tabla Products, indican que el procedimiento se realizó correctamente.

Lección 03

Procedimientos almacenados en SQL I

El uso de procedimientos almacenados es una de las grandes ventajas que ofrece el


lenguaje SQL.

Procedimiento almacenado. Es un conjunto de instrucciones que son ejecutadas


cuando lo decidas, pueden aceptar parámetros de entrada y generar o no resultados,
dentro de ellos puedes ejecutar otros procedimientos almacenados; por lo general,
siempre regresan un valor de estado, para indicar si la operación fue concluida
exitosamente.

Los procedimientos almacenados llaman a la base de datos con el código que


contengan y terminan la llamada cuando terminan el procedimiento, operación más
segura, que por ejemplo, tener el código suelto que llama a la base y sale de ella por línea
de código, también varios usuarios o clientes, pueden ejecutar procesos de tareas
específicas y sin meterse con el código SQL.
Reutilizar código, es una buena práctica para el administrador de bases de datos, ya
que al meter código frecuente en un procedimiento, los programas se vuelven más
sencillos y con mejor rendimiento.
Para crear un procedimiento almacenado:

1. En una nueva consulta escribe CREATE PROCEDURE, seguido por el nombre del
procedimiento.

2. Escribe AS y GO y entre estas instrucciones, incluye el código que desees que se


guarde en el procedimiento almacenado.

3. Ejecuta la consulta, para que el procedimiento quede guardado en la base de


datos.

CREATE PROCEDURE Nombre del procedimiento


AS
Código a guardar
GO

Para ejecutar el procedimiento almacenado en una nueva consulta, escribe EXECUTE


y el nombre del procedimiento, de esta forma, lo que podría ser un código muy complejo y
repetitivo, puede resultar en un código más entendible y fácil de manejar.

EXECUTE Nombre del procedimiento

Como ejemplo, realizarás un procedimiento almacenado, que solo traiga a los clientes
mexicanos. Sigue estas instrucciones:

1. Nombra el procedimiento almacenado, es recomendable poner el nombre en


relación a la función del procedimiento.

2. Entre AS y GO, escribe la consulta que nos arrojará a los clientes mexicanos, en
columnas, escribe el símbolo de asterisco para que nos traiga toda la tabla.

3. Selecciona la tabla en la que se realizará la búsqueda, y asegura que la condición


de Country, sea igual a México.

CREATE PROCEDURE CustomerCountry


AS
SELECT * FROM Customers
WHERE CustomerCountry = ‘Mexico’
GO
1. Ejecuta el CREATE, para tener el procedimiento en la base de datos, lo podrás
ejecutar en un futuro, poniendo EXECUTE.

EXECUTE CustomerCountry

Para modificar el procedimiento almacenado, en vez de poner CREATE pon ALTER y


el nombre del procedimiento.

ALTER PROCEDURE CustomerCountry


AS

SELECT * FROM Customers


WHERE CustomerCountry = ‘Mexico’

GO

Procedimientos almacenados en SQL parte II

Los usos de procedimientos almacenados en SQL son muy extensos, por lo que
necesitas conocer y aplicarlos en bases de datos. Los procedimientos almacenados y las
funciones parecen tener la misma tarea pero entre ellas existen importantes diferencias,
las más grandes de ellas es cuando los procedimientos almacenados son llamados
únicamente cuando tu lo deseas por medio de la instrucción EXECUTE, mientras que las
funciones son llamadas dentro de otras sentencias, además con los procedimientos
almacenados puedes restringir acciones de usuarios a un nivel más específico, por
ejemplo, a un usuario que no tiene control de la tabla de inventario, cada vez que se
realiza la venta de un producto y se debe registrar un decremento en el inventario, se le
puede dar acceso a un procedimiento almacenado que registre el producto vendido, sin
que el usuario cambie arbitrariamente la tabla inventario.

Cambio de sintáxis

A diferencia de la sintáxis que aprendiste anteriormente, a los procedimientos


almacenados se les pueden ingresar parámetros de entrada, para que arrojen algún
resultado deseado. En una nueva consulta siga estos pasos:

Escribe CREATE PROCEDURE con el nombre de procedimiento, seguido por el


nombre del parámetro o parámetros de entrada con el símbolo de arroba junto con su tipo
de dato y longitud, separa cada parámetro de entrada con una coma, después escribe el
parámetro de salida con un símbolo de arroba seguido por el tipo de dato y longitud, a
continuación escribe OUTPUT, escribe AS, BEGIN y END y el código que desees entre
BEGIN y END, ejecuta el procedimiento para crearlo, si deseas modificar el procedimiento
debes poner ALTER en vez de CREATE, si deseas borrarlo entonces escribe DROP.

CREATE PROCEDURE InsertUpdate_Customers @CustomerID nchar (5),


@CompanyName nchar (5), @ReturnID nchar (5) OUTPUT

AS
BEGIN
Código que desees
END

Como ejemplo, requieres un procedimiento almacenado que inserte un nuevo cliente a


la tabla de Customers, en el caso de que ya exista actualízala. El procedimiento envía un
mensaje si se actualizó el registro o se insertó, para regresar una variable del ID
insertado, sigue estos pasos:

Nombre el procedimiento como gustes y define los parámetros de entrada y salida,


recuerda que para insertar parámetros, estos deben ser los mínimos por la tabla
Customers, realiza el INSERT a la tabla con las variables definidas entre BEGIN y END,
después realiza una decisión si es que hubo un error con la variable del sistema ERROR,
si existió un error realiza el UPDATE a la tabla de las variables definidas, asegura que el
ID sea igual al ya insertado, si este es el caso, escribe el mensaje “Se realizó un
UPDATE”, si no existe un error solo escribe el mensaje “Se realizó un INSERT”, por último
lleva la variable de retorno con el resultado de un SELECT del ID insertado o modificado,
selecciona todo el código desde CREATE hasta END para ejecutarlo y guardarlo en el
procedimiento almacenado.

CREATE PROCEDURE InsertUpdate_Customers @CustomerID nchar (5),


@CompanyName nvachar (40), @ReturnId nchar (5) OUTPUT

AS
BEGIN
INSERT INTO Customers (CustomerID, CompanyName) Values (Customer ID,
@CompanyName)
IF (@@ERROR <> 0)
BEGIN
UPDATE Customers
SET Customers, CustomerID = @CustomerID
Customers, CompanyName = @CompanyName
WHERE Customers, CustomerID = @CustomerID
PRINT (‘Se realizó un UPDATE’)
END
ELSE
BEGIN
PRINT (‘Se realizó un INSERT’)
END
SELECT @ReturnID = CustomerID FROM Customers WHERE Customers,
Customer ID = @Customer ID
END

Para ejecutar el procedimiento almacenado, primero se tiene que declarar una variable
que obtenga el valor de retorno del procedimiento, por lo tanto, debe tener el mismo tipo
de datos y longitud, después escribe EXECUTE, el nombre del procedimiento y los
valores a insertar a la tabla, deben ser los valores que definiste más la variable que acaba
de declarar y escribir OUTPUT. Al ejecutar el procedimiento almacenado, debe aparecer
alguno de los dos mensajes que declaraste en el procedimiento, para saber el valor de la
variable de retorno, solo realiza un SELECT a la variable y así sabrás que ID se modificó
o se insertó.

DECLARE @back nchar (5)


EXECUTE InsertUpdate_Customers ‘ABABA’, ‘Puzzle’, @back OUTPUT
SELECT @back

Transacciones

Una transacción en un conjunto de órdenes que se ejecutan formando una unidad


indivisible de trabajo lo que significa que el proceso no puede ser detenido ni dejado a
medias, si empieza debe terminar. Si por alguna causa, el sistema cancela la transacción,
este deshará las órdenes ejecutadas, hasta dejar la base de datos en su estado inicial.

Para cumplir con esto, todas las transacciones deben cumplir con ACID que son las
iniciales de cuatro principios:

 Atomicidad. Asegura que la operación se realice en su totalidad o que no se


inicie.
 Consistencia. Asegura que solo se empieza aquello que se puede acabar.
 Aislamiento. Asegura que una operación no puede afectar a otras.
 Durabilidad. Asegura que una vez realizada la operación, esta persistirá y no se
podrá deshacer aunque falle el sistema.

Crear una transacción

Para cumplir con los criterios ACID, en el lenguaje de SQL, provee de los mecanismos
para especificar que un conjunto de acciones deben constituir una transacción, estos son:
 BEGIN TRANSACTION (Inicio). Especifica que va a empezar una transacción.
 COMMIT (Completado). Le indica a la base de datos que puede considerar que
la transacción fue completada con éxito.
 ROLLBACK (Error). Indica que se ha presentado un fallo y que debe
restablecer la base de datos.

Para aplicar estas instrucciones, genera una nueva consulta en el sistema gestor y
asegúrate de elegir la base de datos en la que has estado trabajando, después sigue
estos pasos:

Escribe BEGIN TRANSACTION y realiza un UPDATE a la tabla Customers, cambia el


código postal por otro que conozcas e iguala la llave primaria, al registro que desees
cambiar, después realiza un INSERT INTO, a la tabla de Customers, en los campos
CustomerID y CompanyName, toma en cuenta que deben estar entre paréntesis y
separados por comas, escribe VALUES con los valores que tu desees, pero en la parte
del valor de la llave primaria, escribe uno que ya exista para que genere un error, ahora
pon una condicional IF y pregunta por un estatus de la variable del sistema ERROR que si
detecta un error, será diferente de cero, si ERROR es diferente de cero, entonces realiza
un ROLL BACK y muestra un mensaje de error, si ERROR es cero, realiza un COMMIT y
muestra un mensaje de bien. Al ejecutar la transacción debe aparecer un mensaje de
ERROR, porque ya existía la llave primaria del cliente que intentabas ingresar, si cambia
la llave primaria de un registro que no existe y das click en ejecutar, entonces debe
aparecer el mensaje de bien y se habrán guardado todos los cambios.

BEGIN TRANSACTION
UPDATE Customers SET PostalCode = ‘06450’ WHERE CustomerID = ‘AAAA’
INSERT INTO Customers (CustomersID, CompanyName) VALUES (‘AAAA1’,
‘Manzana’)
IF (@@ERROR <> 0)
BEGIN
ROLLBACK
PRINT (‘ERROR’)
END
ELSE
BEGIN
COMMIT
PRINT (‘BIEN’)
END
Lección 04

Consultas en SQL Distinct

En tu trabajo, deberás localizar la información de una base de datos a través de un


sistema gestor. Para obtener datos más organizados deberás generar consultas con
funciones específicas, estas son: DISTINCT, Sub consultas, INTO y GROUP BY.

DISTINCT. Esta instrucción elimina los registros duplicados de las columnas abarcadas
en SELECT, para ejecutarla sigue estos pasos:

En una nueva consulta escribe SELECT DISTINCT y anota los campos de la tabla que
quieras obtener, escribe FROM y la tabla donde se realizará la búsqueda, puedes
combinar la sintáxis de búsqueda en diferentes tablas con INNER JOIN si así lo requieres.

Como ejemplo, se requiere encontrar los productos que se vendieron del 4 al 5 de julio
de 1996, utilizando la base de datos que has estado manipulando, escribe SELECT y
anota los campos de retorno Product ID y Product Name de las tablas Order Details,
Orders y Products, une las tablas con INNER JOIN e iguala las llaves primarias con las
foráneas de la tabla Order Details, escribe WHERE y realiza la sentencia “Fecha de orden
es mayor igual que”, escribe AND y la sentencia “Fecha de orden es menor igual que”, por
último escribe ORDER BY y el campo que desees, en este caso, Product ID. Esta
consulta arrojará los productos vendidos entre los cuales habrá datos repetidos ya que la
tabla se consulta registro por registro, al agregar DISTINCT y ejecutar la consulta
nuevamente, los productos aparecerán solo una vez. Siempre que realices una consulta
por fecha, utiliza un rango de fechas, como lo hiciste en este ejemplo, así la consulta
arrojará más resultados.

SELECT [Order Details], Product ID, Products, Product Name


FROM [Order Details]
INNER JOIN Orders ON [Order Details], OrderID = Orders, OrderID
INNER JOIN Products ON [Order Details], ProductID = Products, ProductID
WHERE OrderDate >= ‘04-07-1996’
AND OrderDate <= ’05-07-1996’
ORDER BY [Order Details], Product ID

Consultas en SQL Sub consultas

Se puede agregar la sintáxis de otra consulta a la instrucción complementaria WHERE


para comparar los resultados que arroje. Haz lo siguiente:

Realiza una consulta y después de WHERE escribe el valor al que igualarás el


resultado de la sub consulta, escribe IN y entre paréntesis realiza la sub consulta, si no
hay resultados que se igualen al valor que ingresaste, la sub consulta no arrojará datos.
Como ejemplo, realizarás una consulta para obtener los productos cuyo nombre empieza
con la letra L de proveedores estadounidenses, para realizarlo sigue estos pasos:

Escribe SELECT y anota los campos de retorno ProductID y ProductsName de las


tablas Order Details y Products, une las tablas con INNER JOIN e iguala sus llaves
primarias con las foráneas de la tabla Order Details, escribe WHERE y declara el valor al
que la consulta va a ser igual, en este caso ‘USA’, escribe IN y abre paréntesis, ahí
escribe la sub consulta, declarando el campo Country de la tabla Suppliers, escribe
WHERE y une las palabras Products y Suppliers con su llave primaria y foránea, cierra
paréntesis; escribe AND y el campo ProductName, después escribe LIKE y entre comas
simples escribe ‘L%’, ejecuta la consulta.

SELECT DISTINCT [OrderDetails], ProductID, Products, ProductsName FROM


[OrderDetails]
INNER JOIN Products ON [Order Details], ProductID = Products, ProductID
WHERE ‘USA’ IN (SELECT Country FROM Suppliers
WHERE Products, SupplierID = Suppliers, SupplierID FROM
Suppliers)
AND ProductName LIKE ‘L%’

Con lo anterior WHERE utilizará otras instrucciones como LIKE, para buscar cualquier
cadena de caracteres contenida en campos de tipo char, nchar, nvarchaw.

Consultas en SQL INTO

INTO es una de las instrucciones complementarias de SELECT, esta crea una tabla en
la base de datos y la agrega a los resultados de la búsqueda que haya realizado, la
arquitectura de esta tabla, tendrá los campos del SELECT, pero no estará referenciada a
ninguna otra tabla, es común utilizar esta instrucción, porque los errores no dañarán las
tablas importantes. Si intentas ejecutarla dos veces seguidas, el sistema te indicará que
hay un error, ya que no puede crear una tabla que ya existe, por lo que tendrás que
eliminar la primera, para crear esta consulta, sigue estos pasos:

Escribe SELECT y los campos que deseas guardar en la nueva tabla, escribe INTO y
el nombre que llevará, escribe FROM y de dónde obtendrás esos datos.

SELECT campo1, campo2, campo3


INTO nuevatabla
FROM dbo.categories

Si la información se encuentra en más de dos tablas, utiliza la sintáxis INNER JOIN,


para verificar que una tabla no existe en la base de datos utiliza la función del sistema
OBJETC_ID la cual entrega un valor NULL, si el resultado es NOT NULL, significa que la
tabla existe, elimínala con una instrucción DROP TABLE. Como ejemplo se te pide crear
una tabla que contenga los campos CustomerID y CompanyName, por lo tanto, antes de
crearla deberás identificar que exista dentro de la base de datos, de ser así, elimínala de
la siguiente manera, realiza una consulta escribiendo IF OBJECT_ID, entre paréntesis
escribe el nombre de la tabla que crearás, después escribe IS NOT NULL, por último
escribe BEGIN y END y entre ellos agrega DROP TABLE y el nombre de la tabla.

IF OBJECT_ID (‘CustomerCopy’) IS NOT NULL


BEGIN
DROP TABLE CustomerCopy
END

Para crear la nueva tabla escribe SELECT y el nombre de los campos que deseas
obtener, después escribe INTO y el nombre de la tabla que quieres crear, pon FROM y el
nombre de la tabla que en este caso es Customers, ejecuta todo lo que escribiste, al
realizar esto, en el área de selección aparecerá la nueva tabla, si no aparece da click en
refresh.

SELECT CustomerID, CompanyName


INTO CustomerCopy
FROM Customers

Para ver sus datos, escribe SELECT asterisco FROM el nombre de la tabla y ejecútalo,
aparecerán todos los datos solicitados.

SELECT * FROM CustomerCopy

Consultas en SQL GROUP BY

Esta es una instrucción complementaria de SELECT y sirve para agrupar un conjunto


de registros en una consulta, sigue estos pasos para aprender su sintáxis:

Escribe SELECT y los campos que desees en la consulta, ingresa FROM y las tablas
que sean requeridas, puedes utilizar la sintáxis INNER JOIN, según sea el caso, después
escribe GROUP BY y el campo por el que deseas agrupar toda la consulta, al final puedes
utilizar ORDER BY para organizar el resultado.

SELECT campo01, campo03 FROM tabla01


INNER JOIN tabla02 ON tabla01.campo01 = tabla04.campo06
GROUP BY campo01 ORDER BY campo03
Dependiendo de cómo desees agrupar el resultado, utilizarás un camino de relación
por tabla, por ejemplo, si te solicitan agrupar cada producto de las órdenes de venta por
categoría, tendrás que utilizar las tablas Category, Products, Order Details y Orders con
sus sentencias de unión de tablas, para finalmente agruparlas por categoría con un
GROUP BY.

Es importante que el campo por el que vas a agrupar existen los campos solicitados en
el SELECT, de no ser así obtendrás un mensaje de error. Como ejemplo, tu cliente quiere
saber el total de ventas por categoría de producto y región, realizadas en la tienda hasta
el momento, como generar este SELECT, implica la relación de muchas tablas, utilizarás
la sintáxis abreviada de INNER JOIN, para lograrlo sigue estos pasos:

En una nueva consulta escribe SELECT y el nombre de los campos que quieres como
resultado, en este caso, el RegionDescription y CategoryName, realiza la suma del Unit
Price por Quantity de la tabla Order Details, para que obtengas el total por categoría;
escribe FROM y todas las tablas necesarias para unir Category y Region, en este caso
serán Region, Territories, EmployeeTerritories, Employees, Orders, [Order Details],
Products y Categories; separa las tablas por comas, en vez de escribir INNER JOIN,
después agrega WHERE y todas las sentencias de unión de tablas, empezando por
Region y terminando con Category, las sentencias de unión de tablas son las que
igualarán la llave primaria de una tabla con la llave foránea de otra, es importante que
especifiques de qué tabla obtendrás el campo llave para que no tengas confusiones,
separa cada sentencia con AND, para que los resultados sean solo los que cumplan con
todas las sentencias de unión, escribe GROUP BY y agrupa todo el resultado por los
campos que solicitaste en la consulta que son RegionDescription y CategoryName,
separados por coma, escribe ORDER BY y ordena todo por RegionDescription, para
obtener un resultado más comprensible.

SELECT RegionDescription, CategoryName, SUM ([Order Details]. Unit Price * [Order


Details]. Quantity)
FROM Region, Territories, EmployeeTerritories, Employees, Orders, [Order Details],
Products, Categories
WHERE Region.RegionID = Territories.RegionID
AND Territories.TerritoryID = EmployeeTerritories.TerritoryID
AND EmployeeTerritories.EmployeeID = Employees.EmployeesID
AND Employees.EmployeeID = Orders.EmployeeID
AND Orders.OrderID = [Order Details].OrderID
AND [Order Details].ProductID = Products.ProductID
AND Products.CategoryID = Categories.CategoryID
GROUP BY RegionDescription, CategoryName ORDER BY RegionDescription
Selecciona la consulta y ejecútala, el resultado será una tabla que contendrá el total de
productos vendidos por categoría en las diferentes regiones, de esta forma, la instrucción
GROUP BY puede mostrar información valiosa para cualquier ambiente de negocio.

Nivel 03

Lección 01

ETL Extracción de datos en Data Warehouse

El administrador de datos, debe saber poblar de información el Data Warehouse,


basado en su diseño y la información que va a extraer de las bases de datos.

Diseño de ETL

Como ya se ha visto, el ETL es la extracción, transformación y carga de datos en una


base de datos a un Data Warehouse, esto se debe a que la arquitectura de un Data
Warehouse es diferente a la de una base de datos relacional y por eso, los datos deben
ser transformados para después ser cargados. Un Data Warehouse debe estar diseñado
considerando la base o bases de datos de donde extraerá la información, ya que si se
toman datos de una base que no ha sido contemplada, estos no tendrán cabida en los
Data Warehouse.

Extracción de datos

Una vez terminado el diseño, debes crear el Data Warehouse en el software gestor con
las configuraciones correspondientes.

Para lograr un ETL en Data Warehouse, se deben instalar en tu computadora,


herramientas especiales de software, abre la herramienta de Business Intelligence y sigue
estos pasos:

Genera un nuevo proyecto de servicios de integración, asigna un nombre al proyecto y


guárdalo en una carpeta definida solo para este propósito, crea un nuevo origen de datos
en la carpeta de orígenes de datos y elige la base de datos para extraer información.
Genera una nueva vista en la carpeta de vistas de orígenes de datos seleccionando el
nuevo origen creado, agrega todas las vistas de tablas, después nómbrala para que
aparezca el diagrama relacional. Renombra el archivo en la carpeta de paquetes a uno de
tu agrado para no confundirte en un futuro, da click derecho en la parte inferior de esta
carpeta y elige nueva conexión OLE DB, escribe un punto para seleccionar el local host,
elige la base de datos del almacén de datos, después da click en aceptar. Ya teniendo la
conexión de datos, da click derecho en ella, selecciona nueva conexión desde origen de
datos y elige la base de datos de la tienda.

ETL Transformación de datos en Data Warehouse

Ahora se deben transformar los datos para que concuerden con el diseño del Data
Warehouse, para ello sigue estos pasos:

Transformación de datos

Selecciona y arrastra ejecutar SQL, después da click derecho en el recuadro para


editar la tarea, elige la conexión del Data Warehouse, cuando aparece el SQL statement,
escribe el código SQL para limpiar las tablas del DW, utiliza los comandos DELETE para
dimensiones y TRUNCATE para la tabla hechos. Arrastra una tarea del flujo de datos y
edítala después arrastra de “origen de OLE BD”, “copiar columnas” y “destino OLE DB”,
edita origen OELDB y elige la base de datos de la tienda, en modo de acceso elige
comandos SQL, genera una consulta y en el ícono de tabla elige las tablas que utilizaste
para generar la dimensión en el DW, posteriormente selecciona los campos que
conforman a la dimensión y da click en aceptar, edita destino OLDB y elige la base de
datos del DW, en modo de acceso de datos, tabla o visita, elige la tabla del DW a poblar,
verifica esto en asignaciones, une los rectángulos de “origen”, “copia columnas” y
“destino” con fechas como lo indica el software, finalmente ejecuta el proceso, al hacerlo
se pondrá color verde, en las pestaña de Flujo de control une los recuadros con flechas y
haz click en ejecuta, realiza este procedimiento para cada dimensión del esquema del
DW. En la dimensión del tiempo, tendrás que realizar otro procedimiento para que la tabla
ofrezca la información que desea analizar el cliente, ya sea por día, semana, mes,
trimestre, cuatrimestre o año, para ello, edita la tabla para poblar la dimensión del tiempo
y así modificar el origen OLE DB, selecciona la base de datos de la tienda, después en
modo de acceso, elige comandos SQL, genera una consulta y en el icono de tabla, elige
las tablas que utilizaste para generar la dimensión en el DW, después selecciona los
campos que conforman a la dimensión, escribe el código SQL de la consulta a la tabla,
con la información de la fecha, debes generar los campos de la tabla destino, campos
como “día”, “semana”, “año”, etcétera, pueden ser deducidos del mismo campo de fecha.
Edita el bloque de destino OLE DB y selecciona la base de datos del DW, en
asignaciones, elige los campos que no hayan sido asignados a la tabla destino y da click
en aceptar, se tiene que hacer un procedimiento muy parecido con una dimensión de
ubicación geológica, si es que existe esta dimensión en el diseño del DW.

ETL Cargar datos en Data Warehouse


Ahora tienes que cargar los datos en la tabla de hechos para terminar con el Data
Warehouse, para ello sigue estos pasos:

Arrastra una nueva tarea Ejecutar SQL, hacia la pestaña del flujo de control, edítala y
elige una conexión al Data Warehouse, escribe en SQL Statement el código que vas a
utilizar, ya que requieres las tablas de las bases de datos de la tienda, genera un INSERT
a la tabla de hechos y llena cada columna con un SELECT desde la tabla histórica, o con
un detalle de la base de datos deseada, genera un INNER JOIN en este SELECT por
cada tabla de dimensiones, también debes igualar la llave foránea de la tabla
correspondiente al atributo ID de la tabla de dimensiones, que no es su llave primaria,
acepta y ejecuta todo el flujo de control. Si hiciste bien todo este procedimiento,
aparecerán todos los recuadros en verde, después de ejecutar el DW estará lleno de
información y lo podrás corroborar con tu sistema gestor, ten en cuenta que si vuelves a
correr el proceso, el sistema te marcará ERROR, las tablas al tener datos ya no se
pueden limpiar con la instrucción DELETE, por lo que tendrás que cambiar el código que
puedes encontrar en la ayuda de estudio.

Lección 02

Cubo OLAP

Las compañías han encontrado que las bases de datos relacionales son muy buenas
para almacenar información pero es difícil generar reportes de datos utilizando tanta
información.

¿Para qué sirven los cubos de OLAP?

Los cubos OLAP (Procesamiento Analítico Online) nos sirven para hacer más eficiente
la base de datos ya que pre procesa la información y te permiten tener acceso
instantáneo a esta.

Funcionalidad de los cubos OLAP

Imagina un cubo constituido de diferentes cajas, cada una de ellas contiene un total de
la información analizada, como sabes un cubo consta de 3 dimensiones.

Toma un ejemplo de un gerente de ventas que quiere sacar reportes de los totales de
venta de productos de diferentes categorías en determinado tiempo, para traducir y acotar
los requerimientos del cliente, en el cubo se proponen las siguientes dimensiones y
medidas:
La primera dimensión es la categoría de los productos en el primer segmento, se
encontrarán los productos de confección, en el segundo medio los condimentos y en el
último las bebidas, es importante mencionar que se pueden agregar las categorías que se
necesiten. La siguiente dimensión será la del tiempo, en este ejemplo, está conformada
por cuatro meses, la dimensión de medida contiene los totales de los productos stock,
pendientes de entrega, cantidad y costo de ventas. Ahora que tienes las tres dimensiones
y las medidas asignadas, lo que falta es ver de qué forma se accede a la información.

Por ejemplo, para acceder a las ventas totales de la categoría de productos de


confección, en el mes de enero se hacen las intersecciones correspondientes y se obtiene
el valor, se sigue este procedimiento para obtener cualquier valor que quieres acceder.

Jerarquías en dimensiones

La mejor manera para explicar cómo funcionan las jerarquías es con ejemplos, un cubo
se puede dar en la dimensión de tiempo, contando con meses, trimestres y años en una
relación padre e hijo, el padre se representa en años, el hijo como trimestres seguido de
meses. Otra dimensión puede ser una localización geográfica, por ejemplo, se tiene como
padre a país y como hijo a estado, la siguiente categoría puede ser municipio como hijo
de estado.

Operaciones “Drill Down” y “Drill Up”

Para poder desplazarte entre jerarquías y navegar entre la información son necesarias
las operaciones en los cubos como las siguientes:

 Drill Up. Sirve para compactar los datos, por ejemplo, si la dimensión de tiempo
de tu cubo se encuentra en meses, haces un Drill Up para que los datos se
muestren en años.

 Drill Down. Sirve para ver los datos con más detalle, se puede hacer un Drill
Down de años a trimestres.

Ahora que tienes los conceptos básicos de cubos OLAP, sabes cómo funcionan y
cómo acceder a su información, podrás aprender a crearlos en la herramienta Business
Intelligence.

Creación de cubos OLAP

Ahora aprenderás a crear cubos OLAP con un software de Business Intelligence, para
obtener información desde almacenes de datos.

Configuración de origen de datos


Primero es necesario crear un nuevo proyecto siguiendo estos pasos:

Haz click en nuevo proyecto, que se encuentra en la barra de herramientas, selecciona


la plantilla de Proyect Analysis Service, asigna un nombre al proyecto y presiona aceptar.

Conexión de los datos. Para establecer el origen de datos, sigue estos pasos:

Haz click derecho en origen de datos, localizado en el explorador de soluciones y


selecciona nuevo origen de datos, haz click en nuevo para crear una conexión con la base
de datos, selecciona la instancia de base datos en donde se encuentre el almacén de
datos que quieres trabajar, selecciona el almacén de datos y presiona aceptar, selecciona
el origen de datos que agregaste y presiona siguiente, selecciona utilizar la cuenta de
servidor después haz click en siguiente y finalizar.

Selección de tablas. Para elegir las tablas que quieres utilizar en el cubo, sigue estos
pasos, haz click derecho en vistas de origen de datos, ubicado en el explorador de
soluciones y selecciona nueva vista de origen de datos, selecciona el almacén de datos
que agregaste y da click en siguiente, agrega las tablas y vistas con las que vas a
trabajar, haz click en siguiente y después en finalizar.

Creación del cubo

Ya que cuentas con el origen de datos configurado, lo siguiente es la creación del


cubo, da click derecho en la carpeta del cubo y selecciona nuevo cubo, selecciona usar
tablas existentes y da click en siguiente, selecciona las tablas que quieres mejorar como
medidas, normalmente se marcan las tablas de hechos, marca las medidas y las
dimensiones que vas a utilizar y da click en finalizar.

Selección de atributos en dimensiones

Para seleccionar los atributos de cada dimensión, haz doble click sobre la dimensión y
arrastra los atributos de las tablas hacia la sección de atributos del cubo.

Jerarquización

Una vez seleccionados los atributos de la dimensión a jerarquizar, sigue estos pasos
para crear la jeraquía:

Arrastra el atributo padre de la tabla a la sección de jerarquía, arrastra a sus hijos,


respetando el orden de la jerarquía, asígnale un nombre.
Procesamiento del cubo

Una vez que hayas terminado con el diseño del cubo, solo debes procesarlo para
llenarlo de datos, haz click derecho en el cubo que creaste y selecciona procesar,
presiona ejecutar, una vez terminado el proceso presiona cerrar.

Acceder a los datos desde Excel

Para poder acceder a los datos del cubo y manejarlos en una hoja de cálculo, sigue
estos pasos:

Abre una hoja de cálculo vacía, haz click en “De otras fuentes” en la pestaña de datos,
y selecciona desde “Analysis Services”, pon un punto como nombre de servidor,
selecciona la base de datos y después del cubo en que trabajaste da click en finaliza.
Selecciona informa gráfico y tabla dinámica y da click en aceptar.

Ahora podrás disponer de la información de tus cubos al instante, esto te permitirá


realizar gráficos y tablas dinámicas, para presentar la información que facilite la toma de
decisiones en tu organización.

Nivel 04

Lección 01

Índices

En una base de datos relacional, existen dos caminos para acceder a la información
contenida en una tabla, uno es recorrerla de principio a fin hasta localizar los datos y otra
es utilizar índices para referenciar la información, así siempre sabrás exactamente dónde
se encuentra. Por esta razón, los índices son indispensables en las bases de datos, con
grandes volúmenes de información, los más usados son:

Clustesed Index o Índice agrupado. Este define el orden físico de la tabla, es decir, la
forma en la que se acomodarán los registros guardados, solo se puede tener uno por
tabla, un ejemplo de esto es un directorio telefónico, cuyo índice agrupado se encuentra
en el campo apellido, este te permite encontrar un número sin tener que leer toda la tabla,
por lo general, si no asignas uno, el índice agrupado de cualquier tabla será la llave
primaria, para saber cómo asignar un índice agrupado toma en cuenta qué campo es el
que utilizas con mayor frecuencia para consultar la tabla.
Nonclustered Index o Índice no agrupado. Este genera una tabla separada que contien
los punteros que indican el lugar donde se almacenan los elementos indizados, este
índice es parecido a la tabla de contenidos de un libro, el índice no agrupado, sería la lista
de temas y el puntero, la página donde se encuentra, así cuando quieres un dato
específico, solo lo buscas y te diriges a la ubicación que te indique, el límite de índices no
agrupados que se pueden asignar por tabla oscila entre 249 y 999, de acuerdo a la
versión de SQL.

Creación de Índices en SQL

Para crear un índice agrupado, haz lo siguiente:

En una nueva consulta escribe CREATE CLUSTERED INDEX, separado por un


espacio escribe un nombre relacionado al índice, después la palabra ON, por último el
nombre de la tabla, entre paréntesis, pon el nombre del campo que quieras indexar y
ejecuta la instrucción.

CREATE CLUSTERED INDEX Apellidos_Indice ON


dbo.Directorio(Apellidos);

Para crear un índice no agrupado, sigue el mismo procedimiento, pero en lugar de


CLUSTERED escribe NONCLUSTERED.

Profesionalización

Como administrador de bases de datos, anticípate a los errores, siempre es mejor


realizar acciones preventivas que correctivas, por ejemplo, hacer respaldos periódicos y
mantenimiento de las bases de datos, analiza primero el problema, después realiza los
diagramas necesarios, hasta obtener la mejor solución, así evitarás correcciones
posteriores a la creación de bases de datos. Documenta siempre tu trabajo para facilitar el
mantenimiento de tus bases, cuida que cada uno de tus diseños de bases de datos,
permita su adaptación a futuros cambios en la organización.

Você também pode gostar