SQL

May 28, 2016 | Author: Geraldine | Category: Types, Instruction manuals
Share Embed Donate


Short Description

Manual de SQL...

Description

UNIDAD

GUIA DIDÁCTICA

1

Fundamentación El propósito de este módulo es introducir al estudiante en el Diseño e Implementación de Base de Datos como una herramienta de imprescindible ayuda en la construcción de un sistema de información. Proporcionando al participante un conjunto de técnicas de identificación de requerimientos operacionales, y

modelado de bases de datos, pasando por sus diferentes

etapas. Incluyendo el desarrollo de un caso práctico, que incluye desde la identificación de requerimientos hasta el modelado físico de la Base de Datos para una organización; al cual los alumnos harán su respectivo levantamiento y tratamiento de la información recopilada, la misma que será guiada por el docente a cargo. Capacidad El participante al final de esta unidad estará en capacidad de: 

Diseñar su Base de Datos partiendo de los requerimientos de información que los usuarios de una empresa puedan tener para cumplir los procesos de negocios.



Aplica las técnicas y estrategias de Modelamiento de base de datos adecuadas a fin de conseguir un modelo en un plazo más corto y de una manera más óptima valorando la importancias de las estrategias de Modelamiento de datos

Página |1

Estructura de contenidos 1. Entorno SQL 2008 2. Descripción del entorno y herramientas principales. 3. Conexión a un servidor 4. Crear base de datos y tablas por diseño. 5. Almacenar base de datos. Copias de Seguridad y Restaurar. ACTIVIDADES Las actividades a desarrollar en la Unidad son: 

Actividad 01:

o

Personaliza el entorno de Microsoft SQL Sever 2008:



Identifica las herramientas que va a utilizar en Microsoft SQL Server 2008.



Configura su entorno de trabajo de acuerdo a sus requerimientos.



Accede al programa correctamente a través de un usuario.



Actividad 02:

o

Crea una Base de Datos de manera gráfica y usando script.

o

Aplica Backup y restauración de Base de Datos.

ESTRATEGIAS METODOLÓGICAS

Para desarrollar la presente unidad llevaremos a cabo dos tipos de actividades: 1.

Lectura Inicial de Contenidos, la realizaremos de manera ordenada,

presenta los aspectos teóricos. Si se presenta alguna Duda se puede realizar lecturas sobre puntos específicos en la sección de Material Complementario. 2.

Actividades a Desarrollar en la Unidad, se encuentran en el apartado

de Actividades, donde constan: las consignas o indicaciones.

NOTA: Recuerde que el Aula Virtual de la UCV, se empleará como medio de comunicación entre el docente y los estudiantes, para efectos de mensajería interna, foros, evaluaciones virtuales, acciones de tutoría académica y comunicación de resultados de evaluación de los aprendizajes.

Página |2

EVALUACIÓN

En esta Unidad Ud., será evaluado en: 1.

Creación de una Base de Datos en modo de diseño y utilizando código.

2.

Crear su backup y almacenar en un dispositivo físico su Base de Datos.

3.

Como restaurar una Base de Datos.

4.

Desarrollar un caso práctico de crear una Base de Datos para un

Empresa determinada identificando sus tablas Es importante

que Ud.,

este en constante comunicación con su

docente Tutor, ya sea para informar de dificultades, avances de las tareas, etc. Recuerde que será calificado de acuerdo a las rúbricas de evaluación de cada actividad; por ejemplo: se le evaluará por la entrega oportuna de sus actividades.

Material Complementario El material complementario se suministra con la finalidad

de ampliar la

lectura de algunos textos y profundizar conocimientos. Elmasri

/

Navathe.

(1997)

Sistemas

de

Bases

de

Datos.

Conceptos

fundamentales. Addison Wisley James Martin. Organización de las Bases de Datos. Prentice Hall.Kroenke David M. (1998). Procesamiento de Bases de Datos. Editorial Prentice Hall Hispanoamericana. Korth Henry f. y silberschatz Abraham. Fundamentos de Bases de Datos. Editorial Mc Graw Hill. España

[email protected] http://www.ucv.edu.pe/cis/

Página |3

UNIDAD

1

Análisis y Diseño de Base de Datos en SQL Server 2008

ESTRUCTURA DE CONTENIDOS 1. Entorno SQL 2008 2. Descripción del entorno y herramientas principales. 3. Conexión a un servidor 4. Crear base de datos y tablas por diseño. 5. Almacenar base de datos. Copias de Seguridad y Restaurar.

Página |4

Introducción

Estimado participante: En esta Unidad aprenderá a identificar los componentes de Microsoft SQL Server 2008 y familiarizarse con su interfaz

amigable, el cual nos ofrece

herramientas gráficas y utilidades de la línea de comandos que permiten al operador, programadores y administradores aumentar su productividad. Que podemos usar para el desarrollo y configuración de una Base de Datos. La importancia de esta Unidad radica en diseñar y crear un base de datos, crear su estructura, como almacenar la base de datos y realizar copia de seguridad, restaurar copias de seguridad, ingresar, modificar y eliminar registros en Microsoft SQL Server 2008. Iniciaremos con los fundamentos básicos de SQL Server 2008 y conceptos de Modelo de Datos, Base de Datos, tablas y tipos de datos el cual le permitirá a Ud. construir correctamente una Base de Datos Le deseo éxitos

en el

desarrollo de esta Unidad.

!

Importante: Si deseas ahondar

más sobre

las nuevas características de

Microsoft SQL Server 2008, podrás encontrar material adicional en la sección: Material Complementario en un apartado llamado: “SQL server 2008 r2 SQL Trasact SQL“ (Gabillaud, 2009)

Página |5

1

ENTORNO SQL Server 2008 r2 Apertura de Microsoft SQL Server 2008

Para iniciar Microsoft SQL Server 2008 debe accesar al menú SQL Server 2008 desde el botón Inicio -> Todos los Programas -> Microsoft SQL Server 2008 -> SQL Server Management Studio

Se visualizara la siguiente pantalla:

Página |6

2 DESCRIPCIÒN DEL ENTORNO En el cuadro de diálogo Conectar al servidor, haga clic en Cancelar Entorno de Microsoft SQL Server Existen muchas herramientas que va a utilizar en el servidor Microsoft SQL.

A

Uno de ellos se llama Microsoft SQL Server Management Studio.

B

C

D

La sección superior del SQL Server Management Studio muestra lo siguiente: A.- La clásica barra de título de una ventana, con un icono de la izquierda, seguido por el título de la solicitud, y el sistema de botones en el lado derecho. B.- Menú Principal, Bajo la barra de título, la barra de menú muestra las categorías de menús que utilizará para realizar las diferentes operaciones necesarias. C.- La barra de herramientas Estándar aparece bajo el menú principal La barra de herramientas es sólo una de las disponibles. Finalmente, cuando se realiza una acción que se beneficiaría de otra barra de herramientas, Microsoft SQL Server Management Studio que mostrar que la barra de herramientas.

Sin

embargo,

si

desea

mostrar

cualquier

barra

de

herramientas, puede hacer clic derecho en cualquier elemento de menú en

Página |7

el menú principal o cualquier botón de una barra de herramientas. Un menú aparecerá:

D.- El Explorador de objetos. La parte izquierda de la interfaz de la muestra de objetos del Explorador de Windows, con su barra de título de la etiqueta de Explorador de Objetos. Esta ventana se acopla, es decir puede moverse desde el lado izquierdo a otro lado de la interfaz. Para ello, puede hacer clic y arrastrar la barra de título a un lugar de su elección. Al empezar a arrastrar, pequeñas cajas que representan los posibles marcadores de posición encontrarían: Puede arrastrar y soltar a uno de los marcadores de posición.

Página |8

Para colocar la ventana de nuevo a su posición anterior, puede hacer doble clic en su barra de título. La ventana también se puede pestañas. Esto significa que la ventana se puede colocar tanto vertical como horizontal. En cualquier momento, si usted no quiere que el Explorador de objetos, puede cerrar u ocultarla. Para cerrar el Explorador de objetos, haga clic en su botón de cierre. En la parte derecha del Explorador de objetos título, hay tres botones. Si hace clic en el primer

botón que señala hacia abajo, un menú que aparece: El menú le permite especificar si desea que la ventana flote, acoplado o pestañas. La parte derecha de la ventana es de una ventana vacía. Esta área será utilizada para mostrar el contenido de lo que está seleccionado en el Explorador de objetos, o para mostrar un resultado de alguna operación. Como se verá más adelante, muchas otras ventanas ocupará la sección correcta, pero que comparten la misma zona. 3 CONEXIÓN A UN SERVIDOR Con el fin de hacer algo importante en Microsoft SQL Server, tendrá que acceder a un servidor. Si inicia Microsoft SQL Server Management Studio desde el botón Inicio, Conectar al servidor cuadro de diálogo que surgen. Si se había iniciado desde el botón Inicio hace clic en Cancelar, pero, para conectarse a un servidor: 

En el menú principal, haga clic en Archivo -> Conectar Explorador de objetos

Página |9



En la barra de herramientas Estándar, haga clic en el botón Nueva consulta

En el Explorador de objetos, puede hacer clic en la flecha del botón Conectar y haga clic en una de las opciones, como motor de base de datos...

Cualquiera de estas acciones se mostrará el cuadro de diálogo Conectar al servidor de correos:

Desde allí, seleccione el nombre del servidor y el tipo de autenticación para su uso. Si elige la autenticación de Windows, puede simplemente haga clic en Conectar. En caso contrario, la autenticación en el cuadro combinado, puede seleccionar la autenticación de SQL Server. En este caso, debe proporcionar un nombre de usuario y una contraseña.

P á g i n a | 10

Una vez esté listo, haga clic en Conectar. Si te conectas con éxito, el Explorador de objetos que aparecen con unos pocos nodos:

Después de usar Microsoft SQL Server Management Studio, puede cerrarla. Para ello: 

Haga clic en el icono de la izquierda de Microsoft SQL Server Management Studio y haga clic en Cerrar



En la parte derecha de la barra de título, haga clic en el botón Cerrar sistema



En el menú principal, haga clic en Archivo -> Salir

P á g i n a | 11

4 CREACION

DE

BASES

DE

DATOS

RELACIONALES

EN

SQL

SERVER 2008 SQL Server utiliza 3 tipos de archivos para almacenar una base de datos: Las bases de datos de SQL Server utilizan tres tipos de archivos para almacenar una base de datos, tal como se muestra en la tabla siguiente. Archivo

Descripción El archivo de datos principal incluye la información de inicio de la base de datos y apunta a los demás archivos de la misma. Los datos y objetos del usuario se pueden almacenar en este

Principal

archivo o en archivos de datos secundarios. Cada base de datos tiene un archivo de datos principal. La extensión recomendada

para

los

nombres

de

archivos

de

datos

principales es .mdf. Los archivos de datos secundarios son opcionales, están definidos por el usuario y almacenan los datos del usuario. Se pueden utilizar para distribuir datos en varios discos colocando cada archivo en una unidad de disco distinta. Además, si una Secundario

base de datos supera el tamaño máximo establecido para un archivo de Windows, puede utilizar los archivos de datos secundarios para permitir el crecimiento de la base de datos. La extensión recomendada para los nombres de archivos de datos secundarios es .ndf. Los archivos del registro de transacciones contienen la información de registro que se utiliza para recuperar la base

Registro de

de datos. Cada base de datos debe tener al menos un archivo

transacciones de registro, su tamaño mínimo es de 512 kb y es el archivo Log. La extensión recomendada para los nombres de archivos de registro es .ldf.

P á g i n a | 12

Ahora pasemos a la creación de la bases de datos. 1. Forma gráfica 

Primero abrimos nuestro SQL Server Management Studio usando nuestra autenticación Windows

En el Explorador de objetos, conéctese a una instancia del SQL Server 2008 Motor de base de datos y expándala. 

Haga clic con el botón secundario en Bases de datos y, a continuación, en Nueva base de datos.



Se abre nuestro menú de diálogo y nos pide que registremos un nombre para nuestra base de datos en este caso será “DB_EJEMPLO”

P á g i n a | 13



Si desea crear la base de datos aceptando todos los valores predeterminados, haga clic en Aceptar; de lo contrario, continúe con siguientes los pasos opcionales.



Verás que el Nombre Lógico se va llenando a la vez que tú le escribes el nombre, ahora explicando las otras pestañas en Tipo de Archivo se puede ver si es Datos de Filas o un archivo Log, en Grupo de Archivo se ve si es primario, secundario o un log, Tamaño Inicial muestra el tamaño inicial que tendrá su base de datos (está en MegaBytes), en Crecimiento Automático es el tamaño hasta donde se puede agrandar su base de datos y en la medida que esta irá creciendo, por defecto es indefinida y crecerá mientras tenga espacio en disco, también puedes aquí dándole clic en los puntitos (…) definir un tamaño máximo y finalmente Ruta de Acceso que será donde se van a guardar tus archivos , también Ud. cambiarla claro está, para colocarla en la carpeta que mejor considere.

2. Mediante Query: También Ud. puede crear su base de datos mediante una consulta quizás para tener en cuenta con más detalle el tamaño máximo y otras características, pero cualquiera que sea el caso puedes hacerlo teniendo en cuenta lo siguiente:

P á g i n a | 14



Primero debes crear una nueva hoja de consulta, hazle clic a “Nueva Consulta” en la parte superior.



Clic para escribir código SQL

Luego aquí escribe el siguiente código:

CREATE DATABASE DB_EJEMPLO2 ON (NAME = DB_EJEMPLO2_data, FILENAME = 'D: \BASES DE DATOS\DB_EJEMPLO2.mdf', SIZE = 4, MAXSIZE = 10, FILEGROWTH = 1) GO 

Tomar en cuenta que cuando creas una base de datos se crean dos archivos, un archivo *.mdf que contiene el archivo data y un archivo *.ldf que contiene al archivo log, el archivo mdf es el archivo primario, mediante el código mostrado hemos creado una base de datos donde se tiene especificado las características del archivo mdf mientras que el archivo log al no haberse especificado se creará automáticamente con un tamaño de 1 Mb.



Con más detalle: NAME es el nombre del archivo data (puede que no sea el mismo que la base de datos pero se recomienda que así sea con la terminación data). FILENAME es cómo puedes ver la ruta del archivo mdf. SIZE es el tamaño inicial de tu base de datos MAXSIZE se puede deducir que es su tamaño máximo, mientras que FILEGROWTH determina el tamaño o la proporción en la que crecerá el archivo principal, todos estos tamaños están representados en Megabytes por defecto pero uno podría especificar si quiere que sea en otra unidad (Kb, Mb, Gb, TB, también Unlimited -en el caso de Maxsize- y N% -en el caso de FileGrowth) finalmente así debería quedar.

P á g i n a | 15



Ahora Ud. se preguntara que pasa si solo escribo en la consulta los siguiente: CREATE DATABASE DB_EJEMPLO2



También es válido pero esta no tendrá especificaciones y tomará los valores

de

la

base de

datos

“model”

y

el

crecimiento

será

ilimitado puesto que no está especificado MaxSize y será hasta llenar todo el espacio disponible en disco.

Importante

!

Más información sobre la creación de una base de datos revisar la documentación MSDN en la siguiente dirección electrónica: http://msdn.microsoft.com/es-es/library/ms176061(SQL.90).aspx

P á g i n a | 16

3 ALMACENAR BASE DE DATOS. COPIAS DE SEGURIDAD Y RESTAURAR Backups Y Restauración De Bases De Datos Con Sql Server 2008 Proceso de Backup: Seleccionamos la base de datos para realizar su respaldo, hacemos clic derecho, tareas, copia de seguridad.

1

2 En la pestaña General escribimos el nombre del respaldo, en este caso DB_Ventas_Backup y un tipo de copia completa.

En la parte de Destino hacemos clic en el botón Agregar y copiamos el path donde se almacenará el archivo de backup de la base de datos.

P á g i n a | 17

Vamos a la pestaña de Opciones y hacemos clic en las siguientes opciones: 1. Sobrescribir todos los conjuntos de copias existentes 2. Comprobar copia de seguridad al finalizar. 3. Realizar suma de comprobación antes de escribir en los medios. Finalmente damos clic en Aceptar y esperamos a que SQL Server haga la copia de seguridad.

Vamos al explorador de Windows y colocamos el path anteriormente copiado. Este archivo .bak podemos almacenarlo en cualquier medio seguro, pues contiene nuestra base de datos. En el proceso de restauración lo utilizaremos, por lo que es recomendable copiarlo en una ubicación donde se lo pueda hallar fácilmente.

P á g i n a | 18

Proceso de Recuperación Hacemos clic en Base de datos del panel principal de la izquierda. Damos clic en “Restaurar base de datos”.

1

2

Escribimos el nombre de la base de datos, en la ventana que se visualiza, en este caso DB_Ventas.

Luego elegimos desde donde vamos a restaurar, para ello hacer clic en el botón de opción “Desde Dispositivo” para después hacer clic en el botón de puntos suspensivos para buscar el archivo .bak

P á g i n a | 19

Luego haz clic en el botón Agregar

Se mostrara una ventana en la cual buscaras la carpeta donde se encuentra el archivo .BAK

Lo seleccionamos con el check y damos clic en Aceptar.

P á g i n a | 20

Finalmente verificamos si se restauró la base de datos en el Explorador de Objetos.

Base de Datos restaurada

P á g i n a | 21

PRÁCTICA DESARROLLADA TEMA: Creación de una Base de Datos A continuación se van a explicar los pasos a realizar para construir y utilizar una base de datos sencilla. Paso 1. Abrir el SQL Server Management Studio y conectarse como administrador

Paso 2. Una vez conectado en la parte izquierda se muestran las BD alojadas en el servidor, por defecto las del sistema (master, temp, etc.) y otras si se han creado previamente.

P á g i n a | 22

Paso 3. Abrir una consulta en la conexión actual.

Paso 4. Copiar el script siguiente y pulsar el botón ejecutar o bien ejecutar instrucción a instrucción seleccionando estas previamente. Recordar que en el estándar la instrucción termina con punto y coma y en TSQL también se puede usar GO CREATE DATABASE GESTION ON (NAME = DB_EJEMPLO2_data, FILENAME = 'D: \BASES DE DATOS\DB_EJEMPLO2.mdf', SIZE = 4, MAXSIZE = 10, FILEGROWTH = 1) GO

P á g i n a | 23

USE GESTION -- Seleccionar la BD de trabajo

P á g i n a | 24

PASO 5: Finalmente hacer Clic en el Botón Actualizar para mostrar la Base de Datos en el Explorador de Objetos

Botón Actualiza r

Base de Datos Creada

P á g i n a | 25

AUTOEVALUACIÓN UNIDAD 01 1.

Escribe una V si la proposición es verdadera o escribe F si la proposición es Falsa. a. Base de Datos es un dispositivo físico el cual se utiliza para almacenar información ..........................................................(

)

b. SQL Server 2008 es un Administrador de Base de Datos ............(

)

c. El DDL es un lenguaje que sirve para manipular la información de una base de datos ......................................................................(

)

d. SQL Server 2008 permite administrar información de otros servidores de datos ..............................................................................( 2.

)

Completa los espacios en blanco con la respuesta correcta. a. Defina que es una Base de Datos Relacional: ________ _______________________________________________________ _______________________________________________________ b. ¿Qué restricciones se pueden recoger en una BD Relacional? Considere un ejemplo de cada una ______________________________________ _______________________________________________________ _______________________________________________________ c. ¿Qué es el Motor de Base de Datos? _______________________________________________________ _______________________________________________________ d. ¿Qué es una transacción? ¿Cuándo se deben utilizar? _______________________________________________________ _______________________________________________________

P á g i n a | 26

3.

Confrontar. COLOCAR LA CRITERIOS

LETRA QUE

DEFINICIONES

CORRESPONDE A. BASE DE DATOS

Sistema de administración y análisis de

bases

de

datos

relacionales

(SGBD) de Microsoft Colección de información organizada de datos, relativa a un problema concreto, que puede ser compartida B. SQL Server 2008

por

un

conjunto

usuarios/aplicaciones;

de cuyo

propósito es recolectar, almacenar y recuperar

información

relacionada

para utilizarla en aplicaciones. C. RENAME

Son útiles para recuperarse de una catástrofe informática

D. DML

Lo forman las instrucciones capaces de modificar los datos de las tablas.

E. SISTEMA GESTOR DE BASE DE DATOSD F. BACKUP

Programa o conjunto de programas que sirven para mantener Base de Datos

y responder consultas sobre

ellas. Permite el cambio de nombre de cualquier objeto.

P á g i n a | 27

4.

Caso Práctico. Una base de datos para una pequeña empresa debe de contener información acerca de los clientes, artículos, fabricantes y pedidos. Hasta el momento se registran los siguientes datos en documentos varios: 

Para cada cliente: Número de cliente (único), Dirección de envió (varias por cliente), saldo límite de crédito, Descuento.



Para cada artículo: Número de artículo (único), Fábricas que lo distribuyen, Descripción del artículo.



Para cada Pedido: Cada Pedido tiene una cabecera y el cuerpo del pedido. La cabecera está formada por el número de pedido, número del cliente, dirección de envío y fecha del pedido. El cuerpo del pedido son varias líneas, en cada línea se especifican el número del artículo pedido y la cantidad.



Además se ha determinado que se debe de almacenar la información de las fábricas: Número de la Fábrica (único), Teléfono de contacto.

Nota: la Dirección se entenderá como Nro., calle, comuna y ciudad. Una fecha incluye Hora.

P á g i n a | 28

UNIDAD

1

ACTIVIDAD CASO 01: Crear una base de datos DB_Reservacíones: 1. Utilizar código SQL y almacenarlo en la siguiente Ruta. F:\Computo_III\Base de Datos\Reservaciones 2. Crear su Backup para su Base de Datos y guardarlo en la ruta: F:\Computo_III\Base de Datos\Reservaciones\Backup CASO 2 Crear una base de datos DB_Asignaciones: 1. Utilizar la manera gráfica y almacenarlo en la siguiente Ruta. F:\Computo_III\Base de Datos\Asignaciones 2. Crear su Backup para su Base de Datos y guardarlo en la ruta: F:\Computo_III\Base de Datos\ Asignaciones \Backup

P á g i n a | 29

UNIDAD

GUIA DIDÁCTICA

2

Fundamentación El propósito de este módulo es introducir al estudiante en el Diseño e Implementación de Base de Datos como una herramienta de imprescindible ayuda en la construcción de un sistema de información. Proporcionando al participante un conjunto de técnicas de operacionales, y

identificación de requerimientos

modelado de bases de datos, pasando por sus diferentes

etapas. Incluyendo el desarrollo de un caso práctico, que incluye desde la identificación de requerimientos hasta el modelado físico de la Base de Datos para una organización; al cual los alumnos harán su respectivo levantamiento y tratamiento de la información recopilada, la misma que será guiada por el docente a cargo. Capacidad El participante al final de esta unidad estará en capacidad de: 

Diseñar su Base de Datos partiendo de los requerimientos de información que los usuarios de una empresa puedan tener para cumplir los procesos de negocios.



Aplica las técnicas y estrategias de Modelamiento de base de datos adecuadas a fin de conseguir un modelo en un plazo más corto y de una manera más óptima valorando la importancias de las estrategias de Modelamiento de datos



Implementa los requerimientos y reglas de negocio en un modelo de datos y utilizando un software como herramienta de soporte.

P á g i n a | 30

ESTRUCTURA DE CONTENIDOS. 1. OBJETOS DE TABLAS 2. Campos. Clave principal. Ventajas. 3. Utilizando el diagrama de tablas. 4.

Transact-SQL

Actividades Las actividades a desarrollar en la Unidad son: 

Actividad 01: o

Crea

tablas

con

sus

respectivas

columnas

asignándoles

su

adecuado tipo de datos a cada uno de ellos, realizándolo de manera gráfica y usando script.



o

Asigna Clave Primarias a sus tablas creadas.

o

Crea su Diagrama de Base de Datos

Actividad 02: o

Ingresa registros a cada una de sus tablas utilizando el diseñador gráfico y utilizando scripts.

o

Modifica información en los

registros de sus tablas utilizando el

diseñador gráfico y utilizando scripts. o

Elimina información en los

registros de sus tablas utilizando el

diseñador gráfico y utilizando scripts. o

Realiza

estas

actividades

teniendo

en

cuenta

la

Integridad

Referencial.

P á g i n a | 31

Estrategias Metodológicas Para desarrollar la presente unidad llevaremos a cabo

dos tipos de

actividades: 1. Lectura Inicial de Contenidos, la realizaremos de manera ordenada, presenta los aspectos teóricos. Si se presenta alguna Duda se puede realizar lecturas sobre puntos específicos en la sección de Material Complementario. 2. Actividades a Desarrollar en la Unidad, se encuentran en el apartado de Actividades, donde constan: las consignas o indicaciones.

NOTA: Recuerde que el Aula Virtual de la UCV, se empleará como medio de comunicación entre el docente y los estudiantes, para efectos de mensajería interna, foros, evaluaciones virtuales, acciones de tutoría académica y comunicación de resultados de evaluación de los aprendizajes.

Evaluación En esta Unidad Ud., será evaluado en: 1. Desarrollar un caso práctico de crear una Base de Datos para un Empresa determinada

identificando

sus

tablas

asignándole

sus

columnas

y

respectivos tipo de datos de acuerdo a la columna (atributo). 2. Crear un diagrama de base de datos, identificando las claves primarias y foráneas para cada una de las tablas. Aplicando el Modo gráfico y Código SQL Server.

P á g i n a | 32

Es importante que Ud., este en constante comunicación con su docente Tutor, ya sea para

informar de dificultades, avances de

las tareas, etc. Recuerde que será calificado de acuerdo a las rúbricas de evaluación de cada actividad; por ejemplo: se le evaluará por la entrega oportuna de sus actividades.

Material Complementario El material complementario se suministra con la finalidad de ampliar la lectura de algunos textos y profundizar conocimientos.

P á g i n a | 33

OBJETOS DE TABLAS

UNIDAD

2

ESTRUCTURA DE CONTENIDOS. 1. OBJETOS DE TABLAS 2. Campos. Clave principal. Ventajas. 3. Utilizando el diagrama de tablas. 4.

Transact-SQL

P á g i n a | 34

Introducción

Estimado participante:

En esta Unidad aprenderá a identificar las tablas con sus respetivas columnas o atributos asignándole su respectivo tipo de datos a cada columna, haciendo uso de las herramientas de SQL Server 2008, así como relacionando las tablas identificando las llaves primarias y llaves foranes, creando un Diagrama de base de Datos. La importancia de esta Unidad radica en crear la estructura de una base de datos para un proceso de negocio, ingresar, modificar y eliminar registros de una Base de Datos a través de Microsoft SQL Server 2008. Iniciaremos con los conceptos de tablas, columnas, tipos de datos, primary key, foreign kery, llave candidata el cual le permitirá a Ud. construir correctamente una Base de Datos Le deseo éxitos en el desarrollo de esta Unidad.

Importante:

!

Si deseas ahondar

más sobre

las nuevas características de Microsoft SQL

Server 2008, podrás encontrar material adicional en la sección: Material Complementario en un apartado llamado: “SQL server 2008 r2 SQL Trasact SQL“ (Gabillaud, 2009)

P á g i n a | 35

1

OBJETOS DE TABLAS

Crear Tablas en SQL Server 2008 1.- Forma Gráfica: 

Primero vamos al SQL Server Management Studio



Creamos nuestra base de Datos en Clic derecho Base de Datos – Nueva Base de Datos y le colocaremos el nombre “DB_PEDIDOS”.

Luego de creada nuestra Base de datos, vamos a crear tablas mediante el asistente, para ello expandimos nuestra Base de Datos DB_VENTAS y en la carpeta TABLAS hacemos Clic derecho– Nueva Tabla.

P á g i n a | 36

2 CAMPOS. CLAVE PRINCIPAL. VENTAJAS 

Se visualiza una ventana como se muestra en la siguiente figura, aquí Usted ingresa los campos q pertenecen a la tabla.



Luego se procede a guardar la tabla haciendo Clic en la en el botón Cerrar (X) y se visualizara una ventana de dialogo para que le asigne un nombre a la tabla, finalmente clic en el botón ACEPTAR



Ahora crearemos las siguientes tablas asignando los tipos de datos correspondientes a cada una de las columnas (atributos).

P á g i n a | 37

Distrito * Distrito Nombre_Distrito

Cliente * codcli

Detalle

Articulo

nrofac

codart

codart

desart

candet

preart

impdet

stoart

nomcli apecli

Cargo

Distrito dircli ruccli

Empleado

codcar descar

codemp nomemp apeemp diremp

Factura nrofac fechfac subtot totigv

sexemp telemp codcar activo observacion

Usuario IDusuario Usuario Clave Nombre Apellido

totfac codcli codemp estado



Ahora si refrescas tu explorador del Management visualizarás la(s) tabla(s) ya creada(s).

P á g i n a | 38

3 

UTILIZANDO EL DIAGRAMA DE TABLAS.

Si Ud. se da cuenta en las tablas Cliente tenemos el campo Distrito y en Factura tenemos el campo Cliente, te preguntarás ¿Por qué repito el valor?, bueno este campo nos permitirá hacer la relación en el diagrama de bases de datos como llave Foránea.



Ahora vamos a hacer el diagrama y crear las relaciones, vamos a Diagrama de Base de Datos le hacemos clic derecho – Nueva Diagrama de Base de Datos (se mostrara un cuadro de dialogo preguntado si deseas crear el diagrama has clic – Si) y mostrara una ventana con las tablas diseñadas.



Selecciona las tablas que participaran en el diagrama (en este caso todas) y dale Agregar, luego cuando estén agregadas sólo haz clic en el botón Cerrar y verás que las tablas están en pantalla, puedes acomodarlas con el mouse si lo deseas.

P á g i n a | 39



Asignación de las Primary Keys (Claves Primarias) Para asignarla simplemente en el diagrama puedes hacer clic derecho sobre el campo y selecciona

Establecer Clave Principal (Set Primary

Key) o también lo puedes hacer al momento de crear los campos y tipos de datos.

P á g i n a | 40



Crear la relación Asignaremos los Foreign Key (Llave Foránea) esta establecerá la relación entre las tablas, para esto solo arrastramos desde el símbolo de la Primary Key en la tabla Distrito sin soltar hasta la tabla Cliente, donde nos pedirá que especifiquemos el campo a relacionar y elegimos Cod_Distrito y le damos Aceptar dos veces. Como podemos ver elegimos Cod_Distrito que es igual al campo de la Tabla Distrito, esto se definió al inicio colocándolo de manera premeditada para que ahora sirva finalmente de campo a relacionar, estos campos de relación pueden tener diferentes nombres pero es importante que sea el mismo Tipo De Dato sino la relación producirá un error.



Hacemos los mismo desde la Tabla Cliente hacia la tabla Factura relacionándolo con el campo Cod_Cliente, ahora guarda los cambios.

NOTA: En SQL Server 2008

nos saldrá un error “Saving changes is not

permitted…” que no te permitirá guardar los cambios, te sale un mensaje en el que te indica que tendrás que recrear las tablas, tranquilo para esto hay solución ¿Qué sucede? es que en SQL Server Management Studio ahora no te permite hacer este tipo de cambios mediante el Diseñador ósea a nivel de interfaz (una razón muy buena para hacer esto por Transact SQL) así que para que puedas continuar primero debes desmarcar la opción Impedir guardar cambios que requieran volver

a crear tablas la cual debes ingresar a la siguiente ruta

Herramientas/Opciones/Diseñadores de Tablas y Base de Datos, de esta manera Ud. podrá guardar los cambios y tendrás tu diagrama.

P á g i n a | 41

Finalmente el diagrama deberá quedar así como se muestra en el siguiente gráfico, ciérralo y guarda los cambios.

P á g i n a | 42

Distrito * Distrito Nombre_Distrito

Cliente * codcli

Detalle

Articulo

nrofac

codart

codart

desart

candet

preart

impdet

stoart

nomcli apecli

Cargo

Distrito dircli

Empleado

ruccli

codcar descar

codemp nomemp apeemp diremp sexemp

Factura

telemp

nrofac

codcar

fechfac

activo

subtot

observacion

totigv

Usuario IDusuario Usuario Clave Nombre Apellido

totfac codcli codemp estado

Transact-SQL:

4

Bueno ahora veremos la forma de hacerlo mediante las Querys: 

Primero vamos al botón Nueva Consulta y abrimos una nueva consulta.



Crearemos una base de datos y luego ponerla en uso entonces escribimos el siguiente código y luego ejecutamos: CREATE DATABASE HOTELERA USE HOTELERA



Ahora vamos a crear las tablas Hotel, Habitación y Cliente para eso escribimos y ejecutamos lo siguiente:

P á g i n a | 43

CREATE TABLE HOTEL (IdHotel char (5) not null, Nombre varchar (20), Direccion varchar (20), Telefono varchar (10), Num_Habitaciones int) CREATE TABLE HABITACION (Num_Habitacion int not null, Estado varchar (20), Descripción varchar (20), Num_Camas int) CREATE TABLE CLIENTE (DNI char (8) not null, Nombre varchar (50), Apellido varchar (50), Fecha_Ingreso datetime, Fecha_Salida datetime, Hora_Ingreso time, Hora_salida time) 

Ahora darle un actualizar al explorador del Management tendremos nuestras tablas creadas, dentro de los tipos de datos. Ud. se podrá preguntar porque algunos preferí colocarle “char” y en otras “varchar”, la razón es que en el tipo de dato char si colocas char(5) así se escriba un caracter se estará ocupando los 5 espacios reservados en cambio con varchar(5) si se escribe un sólo caracter esta cadena solo ocupará 1 espacio de los 5 reservados, esto es para siempre cuidar la memoria utilizada en tu base de datos, otra inquietud quizás sea ¿por qué utilizar la palabra reservada “not null”? es que en estos campos se establecerán las Primary Keys y estas no aceptan valores nulos o vacíos.

P á g i n a | 44



Podemos darles los siguientes SELECT para comprobar que estén correctamente creadas: SELECT * FROM HOTEL SELECT * FROM HABITACION SELECT * FROM CLIENTE



Ahora vamos a agregarle a las tablas Habitación y Cliente los campos que servirán de referencia para las Foreign Keys (también son not null) mediante el comando “ALTER TABLE – ADD” ALTER TABLE HABITACION ADD IdHotel char (5) not null ALTER TABLE CLIENTE ADD Num_Habitacion int not null



Ahora agreguémosle las Llaves Primarias y Foráneas ALTER TABLE HOTEL ADD PRIMARY KEY (IdHotel) ALTER TABLE HABITACION ADD PRIMARY KEY (Num_Habitacion) ALTER TABLE CLIENTE ADD PRIMARY KEY (DNI) ALTER TABLE HABITACION ADD FOREIGN KEY (IdHotel) REFERENCES HOTEL ALTER

TABLE

CLIENTE

ADD

FOREIGN

KEY

(Num_Habitacion)

REFERENCES HABITACION 

Mediante el ALTER TABLE ADD FOREIGN KEY también hacemos referencia a la tabla de donde proviene la Llave Principal y con la palabra reservada “REFERENCES” se creará la relación entre las tablas.



Para la creación del Diagrama, se seguirán los mismos pasos ya mencionados en el modo gráfico, pero esta vez al agregar las tablas podremos observar que las relaciones ya están creadas solo guardamos el diagrama y listo.

P á g i n a | 45

Diagrama para cliente único 

Como dato adicional puedes también eliminar alguna columna con el comando “ALTER TABLE – DROP COLUMN” --ALTER TABLE ELIMINAR CAMPO ALTER TABLE HOTEL DROP COLUMN Nombre_Campo ALTER TABLE CLIENTE DROP COLUMN Nombre_Campo ALTER TABLE HABITACION DROP COLUMN Nombre_Campo



Y Puedes modificar algún tipo de datos mediante el comando “ALTER TABLE – ALTER COLUMN” --ALTER TABLE CAMBIO DE TIPO DE DATO ALTER TABLE HOTEL ALTER COLUMN Telefono Nuevo_Tipo_Dato ALTER TABLE HABITACION ALTER COLUMN Estado Nuevo_Tipo_Dato ALTER TABLE CLIENTE ALTER COLUMN Apellido Nuevo_Tipo_Dato

P á g i n a | 46

PRÁCTICA DESARROLLADA TEMA: Creación de tablas (Continuamos con el ejercicio desarrollado en la I Unidad) Paso 1. Restauramos nuestra Base de Datos creada en la I Unidad (realizar el procedimiento de restauración de una Base de datos)

Verificar la restauración de la base de datos con la cual se trabajara.

P á g i n a | 47

Paso 2. Abrir una consulta en la conexión actual.

Paso 3. Copiar el script siguiente y pulsar el botón ejecutar o bien ejecutar instrucción a instrucción seleccionando estas previamente. Recordar que en el estándar la instrucción termina con punto y coma y en TSQL también se puede usar GO USE GESTION -- Seleccionar la BD de trabajo GO CREATE TABLE PROPIETARIOS (DNI CHAR (10) NOT NULL CONSTRAINT pk_prop PRIMARY KEY, NOMBRE CHAR (25) NOT NULL, DIRECCION CHAR (30)); CREATE TABLE LOCALES (CODIGO CHAR (5) NOT NULL CONSTRAINT pk_loc PRIMARY KEY,

P á g i n a | 48

DNI CHAR (10) NOT NULL, UBICACIÓN CHAR (4) NOT NULL, SUPERFICIE DEC (8, 2) NOT NULL, CONSTRAINT fk_loc FOREIGN KEY (DNI) REFERENCES PROPIETARIOS (DNI));

Seleccionar el código y CLIC

Paso 4. Utilizando las instrucciones de manipulación básicas insertar datos en ambas tablas, modificarlos y borrarlos. Tratar de violar las restricciones impuestas como insertar otro propietario con el mismo DNI, o asignar un local a un DNI que no se encuentra en la tabla propietarios, al insertar no rellenar un campo con restricción NOT NULL, etc. USE GESTION GO INSERT INTO PROPIETARIOS (DNI, NOMBRE, DIRECCION) VALUES ('132345674', 'Sanz, Luis', Jr. Los Tilos 269')

P á g i n a | 49

GO INSERT INTO LOCALES (CODIGO, DNI, UBICACIÓN, SUPERFICIE) VALUES ('L-234', '132345674','San Martin', 100) GO SELECT CODIGO, UBICACIÓN, NOMBRE, DIRECCION FROM LOCALES, PROPIETARIOS WHERE LOCALES.DNI = PROPIETARIOS.DNI AND SUPERFICIE < 200 GO UPDATE PROPIETARIOS SET DIRECCION ='Alta 87' WHERE DNI = '13234567R' Go Paso 5. Observar las características de los objetos creados en la BD a través del entorno gráfico.

P á g i n a | 50

Paso 6. Crear el diagrama de bases de datos, útil para trabajar y programar la BD y las aplicaciones. Agregar las tablas de la BD y guardar el esquema

CLIC

P á g i n a | 51

CLIC PARA AGREGAR LA TABLAS

P á g i n a | 52

CLIC EN LA X PARA GUARDAR EL DIAGRAMA

P á g i n a | 53

AUTOEVALUACIÓN UNIDAD 02 1.

Escribe una V si la proposición es verdadera o escribe F si la proposición es Falsa. a. Una Tupla es una fila.............................................................(

)

b. La instrucción INSERT permite ingresar columnas en una tabla ..(

)

c. El DDL es un lenguaje que sirve para manipular la información de una

2.

base de datos ......................................................................(

)

d. La instrucción UPDATE sirve para ingresar datos en una tabla ....(

)

e. BETWEEN especifica un intervalo inclusivo de búsqueda. ...........(

)

f. Una clave candidata puede ser una clave primaria ....................(

)

Completa los espacios en blanco con la respuesta correcta. e. Defina que es una Base de Datos Relacional: ________ _______________________________________________________ _______________________________________________________ f. ¿Qué restricciones se pueden recoger en una BD Relacional? Considere un ejemplo de cada una ______________________________________ _______________________________________________________ _______________________________________________________ g. Indique

las

instrucciones

del

Lenguaje

SQL

que

permiten

la

manipulación de datos _______________________________________________________ _______________________________________________________ h. ¿Qué es una transacción? ¿Cuándo se deben utilizar? _______________________________________________________ _______________________________________________________

P á g i n a | 54

3.

Confrontar. COLOCAR LA CRITERIOS

LETRA QUE

DEFINICIONES

CORRESPONDE Conjunto A. CLAVE AJENA

de

identifican

atributos

que

unívoca

y

mínimamente cada tupla de la relación. Se denomina clave ajena de una relación R2 a un conjunto no B. CLAVE CANDIDATA

vacío de atributos cuyos valores han de coincidir con los valores de una clave candidata de una relación R1.

C. LLAVE PRIMARIA

Representación bidimensional de una relación que contiene filas (tuplas) y columnas (atributos valores

especiales

que

identificará de manera única a D. REGISTRO

cada fila de la tabla y no pueden existir

dos

llaves

primarias

iguales E. INT

Conjunto

de

campos

que

contienen información. F. SISTEMA GESTOR DE BASE DE DATOSD

G. CAMPO

Espacio de memoria que posee un nombre y un tipo, que es utilizado para referirse a un dato especifico en una tabla. Permite

almacenar

valores

enteros

P á g i n a | 55

4.

Caso Práctico. Complete los esquemas con los atributos, relaciones y restricciones correspondientes a los problemas de información que se propone.

P á g i n a | 56

UNIDAD

ACTIVIDAD DIDÁCTICA

2

CASOS: Restaurar la Base de Datos creadas en Unidad 1 y realizar los siguientes casos: CASO 01: Realice el siguiente diseño utilizando el MS SQL Server Management Studio. Realizarlo de manera gráfica y utilizando código:

A continuación realice las siguientes acciones: Inserciones •

Inserte el tipo de servicio OCIO.



De alta una reserva de la habitación 101 para el cliente 12345 para las noches del 2 al 4 de julio de 2009. El código de la reserva es autonumérico.

P á g i n a | 57

Actualizaciones •

Actualice el teléfono del cliente 12345. Su nuevo número es 123456789.



Actualice el precio de los servicios incrementándolos en un 2%.

Eliminar •

Borre la reserva de la habitación 101 realizada anteriormente.



Borre los tipos de servicio que no tienen servicios definidos.

Otras restricciones con DLL CHECK •

Controle en la tabla temporada que la fecha de fin es mayor que la fecha de inicio.



Controle en la tabla reserva_habitac que la fecha de salida es mayor o igual que la fecha de entrada.



Controle en la tabla servicios que el iva está comprendido entre 0 y 100,0.

CREATE INDEX •

Cree un índice sobre el atributo Nacionalidad de la tabla clientes, con objeto de agilizar las búsquedas.



Cree

un

índice

sobre

el

atributo

numHabitacion

de

la

tabla

reverva_habitac, con objeto de agilizar las búsquedas. •

Cree un índice sobre el atributo nombreServicio de la tabla servicios, con objeto de agilizar las búsquedas.

ALTER TABLE •

Añada una columna calculada en la tabla gastos que obtenga el importe por línea sin aplicar el iva.



Añada una columna en servicios que indique si el servicio se ofrece a los clientes o no.

TABLA y FK •

Añada en gastos una referencia que indique el empleado que atendió el servicio.



Añada en reserva_habitac una referencia que indique el empleado que recogió la reserva.

P á g i n a | 58

CASO 2 Sean las tablas siguientes: TRABAJADOR (ID_T, NOMBRE, TARIFA, OFICIO, ID_SUPV) Cada fila representa un trabajador, identificado por su ID_T. Su nombre es NOMBRE; su tarifa por hora, en nuevo soles; su oficio y el identificador de su supervisor. EDIFICIO (ID_E, DIR, TIPO, CATEGORIA) Cada fila representa un edificio, que se identifica por su ID_E. Se guarda su dirección; el tipo de edificio y su categoría. ASIGNACION (ID_T, ID_E, FECHA_INICIO, NUM_DIAS) Una fila por cada vez que un trabajador es asignado a un edificio. 

Crear la Base de Datos aplicando Script y



Ingresar los siguientes datos TRABAJADOR ID_T

NOMBRE

TARIFA

1235

LUIS SALAS

12.5

ELECTRICISTA

1311

1311

JUAN DIAZ

15.5

ELECTRICISTA

1311

1412

CARLOS LU

13.75

FONTANERO

1520

1520

ALEX LOPEZ

11.75

FONTANERO

1520

2920

ERICK RUBIO

ALBAÑIL

2920

3001

SAM VELEZ

8.2

CARPINTERO

3231

3231

JOSE MORI

17.4

CARPINTERO

3231

10.0

OFICIO

ID_SUPV

EDIFICIO ID_E 111

210

DIR 1213 ASPEN 1011 BIRCH

TIPO

CATEGORIA

OFICINA

1

OFICINA

1

312

123 ELM

OFICINA

2

435

456 MAPLE

COMERCIO

1

ALMACEN

3

RESIDENCIA

2

460 515

1415 BEACH 789 OAK

P á g i n a | 59

ASIGNACION ID_T

ID_E

FECHA_INICIO

NUM_DIAS

1235

312

2001-10-10

5

1235

515

2001-10-17

22

1311

435

2001-10-08

12

1311

460

2001-10-23

24

1412

111

2001-12-01

4

1412

210

2001-11-15

12

1412

312

2001-10-01

10

1412

435

2001-10-15

15

1412

460

2001-10-08

18

1412

515

2001-11-05

8

1520

312

2001-10-30

17

1520

515

2001-10-09

14

2920

210

2001-11-10

15

2920

435

2001-10-28

10

2920

460

2001-10-05

18

3001

111

2001-10-08

14

3001

210

2001-10-27

14

3231

111

2001-10-10

8

3231

312

2001-10-24

20

[email protected] http://www.ucv.edu.pe/cis/

P á g i n a | 60

UNIDAD

3

GUIA DIDÁCTICA

Fundamentación El propósito de este módulo consiste en analizar un conjunto de reglas formales que nos permiten confeccionar un diseño lógico, o asegurar que un diseño lógico cumpla una serie de propiedades, corrigiendo la estructura de los datos de las tablas y evitando una serie de problemas el cual se debe de ajustar al sistema de gestión de base de datos a utilizar. Proporcionando al participante técnicas para una correcta normalización de los datos. Incluyendo el desarrollo de casos prácticos, la cual será guiada por el docente a cargo.

Capacidad El participante al final de esta unidad estará en capacidad de: 

Aplica correctamente la normalización a una Base de Datos.



Aplica correctamente las formas normales de normalización de datos.

CONTENIDOS NORMALIZACION Y RELACION 

Formas normales: Primera, segunda, tercera y cuarta forma normal.



Convertir datos en información.



Relaciones por diagrama

P á g i n a | 61

Actividades Las actividades a desarrollar en la Unidad son: 



Actividad 01: o

Crea tablas normalizadas evitando la redundancia de datos.

o

Identificar correctamente las Clave Primarias a sus tablas.

o

Crea su diagrama de Base de Datos

Actividad 02: o

Identificar en forma normales se encuentras las tablas.

o

Identificar adecuadamente las dependencias funcionales entre los campos.

Estrategias Metodológicas Para desarrollar la presente unidad llevaremos a cabo

dos tipos de

actividades: 3. Lectura Inicial de Contenidos, la realizaremos de manera ordenada, presenta los aspectos teóricos. Si se presenta alguna Duda se puede realizar lecturas sobre puntos específicos en la sección de Material Complementario. 4. Actividades a Desarrollar en la Unidad, se encuentran en el apartado de Actividades, donde constan: las consignas o indicaciones.

NOTA: Recuerde que el Aula Virtual de la UCV, se empleará como medio de comunicación entre el docente y los estudiantes, para efectos de mensajería interna, foros, evaluaciones virtuales, acciones de tutoría académica y comunicación de resultados de evaluación de los aprendizajes.

P á g i n a | 62

Evaluación En esta Unidad Ud., será evaluado en: 3. Desarrollar casos prácticos

para crear Base de Datos identificando sus

tablas correctamente normalizadas y relacionadas. Es importante que Ud., este en constante comunicación con su docente Tutor, ya sea para informar de dificultades, avances de las tareas, etc. Recuerde que será calificado de acuerdo a las rúbricas de evaluación de cada actividad; por ejemplo: se le evaluará por la entrega oportuna de sus actividades.

Material Complementario El material complementario se suministra con la finalidad

de ampliar la

lectura de algunos textos y profundizar conocimientos. Elmasri / Navathe. (1997) SISTEMAS DE BASES DE DATOS. CONCEPTOS fundamentales. Addison Wisley Kroenke David M. (1998). PROCESAMIENTO DE BASES DE DATOS. Editorial Prentice Hall Hispanoamericana. Korth Henry f. y silberschatz Abraham FUNDAMENTOS DE BASES DE DATOS. Editorial Mc Graw Hill. España

P á g i n a | 63

UNIDAD

NORMALIZACION Y RELACION

3

NORMALIZACION 



Formas normales: Primera forma normal Segunda forma normal Tercera forma normal y Cuarta forma normal. Relaciones por diagrama

P á g i n a | 64

Introducción

Estimado participante:

En esta Unidad analizaremos las diferentes formas normales definidas en la Teoría de Base de Datos Relacionales representan una guía y una orientación para el diseño de registros. Las reglas de normalización están destinadas a prevenir anomalías en las actualizaciones e inconsistencia en los datos. El propósito de la normalización es mejorar la integridad de los datos a través de la minimización de la redundancia y la inconsistencia, pero con algún posible costo en ciertas aplicaciones. Estas reglas se aplican al modelo relacional de la base de datos, obtenido a partir del modelo entidad-relación. La verdad es que son bastante sencillas de entender y aplicar, aunque a veces parece que la percepción que se tiene respecto a ellas es que son complejas y algo enrevesadas. Es comprender la normalización, que no es más que una serie de pasos a seguir para transformar una lista de datos con atributos similares en una tabla, o una relación para que esto se lleve a cabo, la normalización juega un papel muy importante porque con los pasos a seguir, se pretende lograr que la tabla de valores tenga coherencia, que no contenga datos repetidos, que los datos introducidos vayan acorde al mismo nombre de la relación, y que los valores sean únicos. Le deseo éxitos en el desarrollo de esta Unidad.

Importante:

!

Si deseas ahondar más sobre las nuevas características de Microsoft SQL Server 2008, podrás encontrar material adicional en la sección: Material Complementario en un apartado llamado: “An Introduction to Database Systems “ (Date, 2003)

P á g i n a | 65

1 FORMAS NORMALES NORMALIZACIÓN Una normalización razonable permite mejorar el rendimiento. Cuando se dispone de índices útiles, el optimizador de consultas de SQL Server es una herramienta adecuada para la selección rápida y eficaz de combinaciones entre tablas. Existen tres formas normales para el proceso de normalización. A.- Primera Forma Normal (1FN) La definición formal sería: “Una relación está en 1FN si cumple la propiedad de que sus dominios no tengan elementos que, a su vez sean conjuntos” La esencia de la 1FN, es que un registro no incluye ningún grupo repetitivo CASO: Diseño de una base de datos para la automatización del control de los pedidos de productos. Se cuenta con el siguiente documento para solicitar los productos:

Primer Paso Se efectúa un listado de datos NumPed: Numero del Pedido FechaPed: Fecha en que se realiza el Pedido NUmProv: Numero del Proveedor. NomProv: Nombre del Proveedor. DirProv: Dirección del Proveedor. NumProd: Numero del Producto. DescProd: Descripción del Producto. PreUniProd: Precio Unitario del Producto. CantPed: Cantidad de unidades del Producto que se solicita.

P á g i n a | 66

SubtotProd: Monto a Pagar por concepto de ese producto. MtoTtlPed: Monto a pagar por todo el pedido. Nota: Indicando la clave Segundo Paso Se verifica si existen grupos repetidos: NumPed: Numero del Pedido FechaPed: Fecha en que se realiza el Pedido NUmProv: Numero del Proveedor. NomProv: Nombre del Proveedor. DirProv: Dirección del Proveedor. NumProd: Numero del Producto. DescProd: Descripción del Producto. PreUniProd: Precio Unitario del Producto. CantPed: Cantidad de unidades del Producto que se solicita. SubtotProd: Monto a Pagar por concepto de ese producto. MtoTtlPed: Monto a pagar por todo el pedido. Nota: Si no existen la relación está en 1 FN, de lo contrario: Tercer Paso Se eliminan los grupos repetidos, creándose dos relaciones: 1º.- Una relación para los campos que sean únicos, es decir, se dejan en la relación original sólo los atributos que no son repetidos: PEDIDO (Numpedido, FechPed, NumProv, NomProv, DirProv, MtoTtlPed) 2º.- Una relación para los grupos repetidos, es decir, se extraen en una nueva relación los atributos repetidos, además de la clave primaria de la relación original: PED_PROD

(NumPed,

NumProd,

DescProd,

PreUniProd,

CantPed,SubtlProd) Una relación para los campos que sean únicos, es decir, se dejan en la RELACION ORIGINAL solo los atributos que no son repetitivos: RELACIÓN ORIGINAL PEDIDO NUMPED 147852

FECPED 10/02/2012

NUMPROV 741

NOMPROV JOSE PEREZ

DIRPROV LOS PINOS

MTOTTTLPED 1200.00

P á g i n a | 67

Una relación para los grupos repetitivos, es decir, se extraen en una NUEVA RELACION los atributos repetitivos, además de la clave primaria de la relación original: RELACIÓN ORIGINAL PED_PROD NUMPED

NUMPROV

DESCPROD

PREUNIPROV

CANTPED

SUBTPROD

147852

12

LAPICERO

1.00

20

20.00

147852

25

RESALTADOR

2.50

10

25.00

147852

10

CORRECTOR

2.70

10

27.00

Antes de ingresar a la SEGUNDA FORMA NORMAL se debe de tener bien claro lo que es DEPENDENCIA FUNCIONAL COMPLETA,

“esto quiere

decir que todos los atributos o cada atributo debe depender de la clave completa y no solo de una parte”. Ejemplo: Relación PROV_PROD CANT es funcional y completamente dependiente de Producto y Pedido PROV_PROD PRDNRO

SNRO

CANT

S1

3

P2

S2

4

P2

S3

4

P3

S3

4

P3

S3

2

P2

2.- SEGUNDA FORMA NORMAL (2FN) Una relación R se dice que está en 2FN si además de estar en 1FN, cualquiera de sus atributos no primarios (aquel que no forma parte de la clave) tiene una dependencia funcional completa con la clave primaria R Es decir, todos sus atributos dependen de la clave completa y no sólo de una parte de ésta. Entonces, este segundo paso se aplica sólo a relaciones con claves compuestas

P á g i n a | 68

De las relaciones que tenemos: PEDIDO NUMPED

FECPED

NUMPROV

NOMPROV

NUMPED

NUMPROV

DESCPROD

DIRPROV

MTOTTTLPED

PED_PROD PREUNIPROV

CANTPED

SUBTPROD

Una relación que esté en 1FN y que no tenga claves compuestas, ya está en 2FN Consideremos la relación de clave compuesta: PED_PROD NUMPED

NUMPROV

DESCPROD

PREUNIPROV

CANTPED

SUBTPROD

Esta relación NO está en 2Fn, pues DESCPROD y PREUNIPROD no dependen funcional y completamente de la clave (NUMPED, NUMPROD). Se crea una relación para todos los atributos que dependen funcional y completamente de la clave: PED_PROD NUMPED

NUMPROD

CANTPED

SUBTPROD

Se crea otra relación para los atributos que dependan de cada parte (subconjunto) de la clave PRODUCTO NUMPROD

DESCPROD

PREUNIPROD PEDIDO

NUMPED

FECPED

NUMPROV

NOMPROV

DIRPROV

MTOTTTLPED

PED_PROD NUMPED

NUMPROD

CANTPED

DESCPROD

PREUNIPROD

SUBTPROD

PRODUCTO NUMPROD

P á g i n a | 69

3.- TERCERA FORMA NORMAL (3FN) Una relación R se dice que está en 3FN si está en 2FN y sí, y sólo sí, los atributos no claves son independientes de cualquier otro atributo no clave primaria. Esto es lo mismo que decir que se deben eliminar las dependencias entre atributos no claves. Es decir que los atributos deben depender sólo de la clave y de ningún otro atributo de la relación. Se crea una relación para los atributos no claves que no dependen transitivamente de la clave primaria. Esta relación: PEDIDO NUMPED

FECPED

NUMPROV

NOMPROV

DIRPROV

MTOTTTLPED

Quedaría de la siguiente manera: PEDIDO NUMPED

FECPED

NUMPROV

MTOTTTLPED

Y una relación para los atributos no claves que dependen transitivamente de la clave primaria a través de otro atributo o conjunto de atributos no clave primaria (que no son parte de la clave primaria). La clave primaria de la relación así formada será el atributo o conjunto de atributos a través de los cuales existe la dependencia transitiva: De esta relación: PEDIDO NUMPED

FECPED

NUMPROV

NOMPROV

DIRPROV

MTOTTTLPED

Surgiría: PROVEEDOR NUMPROV

NOMPROV

DIRPROV

Se obtiene las siguientes relaciones: PEDIDO NUMPED

FECPED

NUMPROV

MTOTTTLPED

PED_PROD

P á g i n a | 70

NUMPED

NUMPROD

CANTPED

DESCPROD

PREUNIPROD

SUBTPROD

PRODUCTO NUMPROD

PROVEEDOR NUMPROV

NOMPROV

DIRPROV

NOTA: La teoría de la normalización nos ayuda a estructurar mejor las relaciones, evitando posibles redundancias y anomalías, y a representar mejor nuestro mundo real en un esquema relacional.

P á g i n a | 71

PRACTICA DESARROLLADA Aplicaremos las reglas de normalización al siguiente caso. Consideremos los datos de la siguiente tabla. Ordenes (id_orden, fecha, id_cliente, nom_cliente, estado, num_art, nom_art, cant, precio) Ordenes Id_orden 2301 2301 2301 2302 2303 2303

Fecha 23/02/11 23/02/11 23/02/11 25/02/11 27/02/11 27/02/11

Id_cliente 101 101 101 107 110 110

Nom_cliente Martin Martin Martin Herman Pedro Pedro

Estado Caracas Caracas Caracas Coro Maracay Maracay

Num_art 3786 4011 9132 5794 4011 3141

nom_art Red Raqueta Paq-3 Paq-6 Raqueta Funda

cant 3 6 8 4 2 2

Precio 35,00 65,00 4,75 5,00 65,00 10,00

PRIMERA FORMAL NORMAL (1FN) Al examinar estos registros, podemos darnos cuenta que contienen un grupo repetido para NUM_ART, NOM_ART, CANT y PRECIO. La 1FN prohíbe los grupos repetidos, por lo tanto tenemos que convertir a la primera forma normal. Los pasos a seguir son:  Tenemos que eliminar los grupos repetidos.  Tenemos que crear una nueva tabla con la PK de la tabla base y el grupo repetido. Los registros quedan ahora conformados en dos tablas que llamaremos ÓRDENES y ARTICULOS_ORDENES Ordenes (id_orden, fecha, id_cliente, nom_cliente, estado) Articulos_ordenes (id_orden, num_art, nom_art, cant, precio) Ordenes Id_orden 2301 2302 2303

Fecha 23/02/11 25/02/11 27/02/11

Articulos_ordenes Id_orden Num_art 2301 3786 2301 4011 2301 9132 2302 5794 2303 4011 2303 3141

Id_cliente 101 107 110

Nom_cliente Martin Herman Pedro

nom_art Red Raqueta Paq-3 Paq-6 Raqueta Funda

cant 3 6 8 4 2 2

Estado Caracas Coro Maracay

Precio 35,00 65,00 4,75 5,00 65,00 10,00

SEGUNDA FORMAL NORMAL (2FN) Ahora procederemos a aplicar la segunda formal normal, es decir, tenemos que eliminar cualquier columna no llave que no dependa de la llave primaria de la tabla. Los pasos a seguir son:  Determinar cuáles columnas que no son llave no dependen de la llave primaria de la tabla.

P á g i n a | 72

 Eliminar esas columnas de la tabla base.  Crear una segunda tabla con esas columnas y la(s) columna(s) de la PK de la cual dependen. La tabla ÓRDENES está en 2FN. Cualquier valor único de ID_ORDEN determina un sólo valor para cada columna. Por lo tanto, todas las columnas son dependientes de la llave primaria ID_ORDEN. Por su parte, la tabla ARTICULOS_ORDENES no se encuentra en 2FN ya que las columnas PRECIO y NOM_ART son dependientes de NUM_ART, pero no son dependientes de ID_ORDEN. Lo que haremos a continuación es eliminar estas columnas de la tabla ARTICULOS_ORDENES y crear una tabla ARTICULOS con dichas columnas y la llave primaria de la que dependen. Las tablas quedan ahora de la siguiente manera. Articulos_ordenes (id_orden, num_art, cant) Articulos_ordenes Id_orden Num_art 2301 3786 2301 4011 2301 9132 2302 5794 2303 4011 2303 3141

cant 3 6 8 4 2 2

Articulos ( num_art, nom_art, precio) Articulos Num_art 3786 4011 9132 5794 3141

nom_art Red Raqueta Paq-3 Paq-6 Funda

Precio 35,00 65,00 4,75 5,00 10,00

TERCERA FORMAL NORMAL (3FN) La tercera forma normal nos dice que tenemos que eliminar cualquier columna no llave que sea dependiente de otra columna no llave. Los pasos a seguir son:  Determinar las columnas que son dependientes de otra columna no llave.  Eliminar esas columnas de la tabla base.  Crear una segunda tabla con esas columnas y con la columna no llave de la cual son dependientes. Al observar las tablas que hemos creado, nos damos cuenta que tanto la tabla ARTICULOS, como la tabla ARTICULOS_ORDENES se encuentran en 3FN. Sin embargo la tabla ÓRDENES no lo está, ya que NOM_CLIENTE y

P á g i n a | 73

ESTADO son dependientes de ID_CLIENTE, y esta columna no es la llave primaria. Para normalizar esta tabla, moveremos las columnas no llave y la columna llave de la cual dependen dentro de una nueva tabla CLIENTES. Las nuevas tablas CLIENTES y ÓRDENES se muestran a continuación. Ordenes (id_orden, fecha, id_cliente) Ordenes Id_orden 2301 2302 2303

Fecha 23/02/11 25/02/11 27/02/11

Id_cliente 101 107 110

Clientes (id_cliente, nom_cliente, estado) Ordenes Id_cliente 101 107 110

Nom_cliente Martin Herman Pedro

Estado Caracas Coro Maracay

Por lo tanto la base de datos queda de la siguiente manera: Ordenes (id_orden, fecha, id_cliente) Clientes (id_cliente, nom_cliente, estado) Articulos ( num_art, nom_art, precio) Articulos_ordenes (id_orden, num_art, cant)

P á g i n a | 74

AUTOEVALUACIÓN UNIDAD 03 5.

Escribe una V si la proposición es verdadera o escribe F si la proposición es Falsa. e. La Integridad de Entidad nos indica que cada fila debe ser única, no se permite la duplicidad. .......................................................(

)

f. La Integridad de Dominio, limita el conjunto de datos posibles en una columna ..............................................................................(

)

g. Una relación es la estructura básica del modelo relacional. Se representa mediante una tabla. ..............................................(

)

h. Es el conjunto válido de valores que toma un atributo. Existen con independencia de cualquier otro elemento. ..............................( i. Normalización,

serie de reglas a las relaciones obtenidas tras el paso del

modelo entidad-relación al modelo relacional. .................................. ( 6.

)

)

Completa los espacios en blanco con la respuesta correcta. i. ¿Qué es Normalización?: ________ _______________________________________________________ _______________________________________________________ j.

Las bases de datos relacionales se normalizan para: ____________________________________________________ _______________________________________________________

k. ¿Qué es una Clave Primaria? _______________________________________________________ _______________________________________________________ l. ¿En qué consiste la Primera Forma Normal? _______________________________________________________ _______________________________________________________ m. ¿Qué es una dependencia transitoria? _______________________________________________________ _______________________________________________________

P á g i n a | 75

7.

CASO PRÁCTICO. COMPROBANTE DE COMPRA VENTA La empresa LA PODEROSA lo ha contratado como el “Ingeniero Encargado” para sistematizar la facturación. En la siguiente FACTURA DE COMPRA VENTA, usted debe analizar toda la información disponible y aplique el proceso de normalización, hasta llegar a la Tercera Forma Normal. Se pide realizar la respectiva justificación detallada de cada uno de los pasos que conduzcan al resultado final. Factura

(NUM_FAC,

RIF_CLIENTE,

FECHA_FAC,

CIUDAD_CLIENTE,

NOM_CLIENTE,

DIR_CLIENTE,

TELEF_CLIENTE,

CATEGORIA,

COD_PROD, DESP_PROD, VAL_UNIT, CANT_PROD) Dónde: NUM_FAC: Número de la factura de compra venta FECHA_FAC: Fecha de la factura de compra venta NOM_CLIENTE: Nombre del cliente DIR_CLIENTE: Dirección del cliente RIF_CLIENTE: Rif del cliente CIUDAD_CLIENTE: Ciudad del cliente TELEF_CLIENTE: Teléfono del cliente CATEGORIA: Categoría del producto COD_PROD: Código del producto DESCRIPCION: Descripción del producto VAL_UNIT: Valor unitario del producto CANT_PROD: Cantidad de productos q compra el cliente La llave primaria es Número de Factura de venta: NUM_FAC

P á g i n a | 76

UNIDAD

3

ACTIVIDAD CASO 01:

EMPRESA DE ENVIO DE MERCANCIA

A continuación se agrupan todos los atributos que hacen parte de la base de datos para aplicarle las reglas de normalización. Donde se incluyen los nombres de los atributos con su significado * GUIA_NO = Numero de Guía * GUIA_FECHA= Fecha de la Guía * GUIA_HORA= Hora de la Guía * ORGN_RIF = Identificación de Empresa Origen * ORGN_NOM = Nombre de Empresa Origen * ORGN_ACT = Actividad Comercial de Empresa Origen * ORGN_CIUDAD= Ciudad de Empresa Origen * ORGN_DIR = Dirección de Empresa Origen * ORGN_TEL = Teléfono de Empresa Origen * ORGN_CEL = Celular de Empresa Origen * DEST_ID = Identificación del destinatario * DEST_NOM = Nombre del destinatario * DEST_COD_CIUDAD = Código de la ciudad del destinatario * DEST_CIUDAD= Ciudad del destinatario * DEST_DIR = Dirección del destinatario * DEST_TEL = Teléfono del destinatario * DEST_KM = Distancia kilometraje de Ciudad origen a ciudad destinatario * CODIGO = Código del paquete * TIPO = Tipo de paquete * NOMBRE = Nombre del paquete * DESCRIPCION = Descripción del paquete * VALR_ FLETE = Valor del flete

del

CASO 02: BIBLIOTECA Se presenta una base de datos de una biblioteca, aplicar las reglas de normalización simplificando hasta la tercera forma normal. Prestamos_libro Fechadev)

(codLibro,

Titulo,

Autor,

Editorial,

NombreLector,

Codlibro

Titulo

Autor

Editorial

Nombrelector

Fechadevoluc

1001

Introducción a la Programación Visual Basic .Net

Murray Spiegel

McGraw Hill

15/08/2012

E. Petroustsos

Anaya

1005

Estadística Aplicada

Murray Spiegel

McGraw Hill

Pérez Gómez, Juan Ríos Terán, Ana Roca, René

1006

Manual de SQL Server 2008 Fundam. de Base de Datos

Nancy Greenberg Ramalho

Microsoft Corp. McGraw Hill

García, Luis

20/08/2012

Pérez Gómez, Juan

18/08/2012

1004

1007

17/08/2012 16/08/2012

P á g i n a | 77

CASO 03: TURNOS DE TRABAJO Dada la siguiente relación ASIGNACIÓN (DNI, Nombre, Cod_Tienda, Dirección_Tienda, Fecha, Turno) que contiene información relativa a la asignación de los turnos de trabajo de los empleados de los distintos centros de una cadena de tiendas de moda: DNI

NOMBRE

33456456 44556689 99771122

P. Martín L. Sanz D. Díaz

COD_TIENDA

100A 100A 100A

33456456

P. Martín

200B

11223344

E. López

300C

99887766

F. Monte

200B

11223344

E. López

300C

99887766 44556689

F. Monte L. Sanz

100A 100A

33456456

P. Martín

200B

DIRECCIÓN _TIENDA

Avd. América Sur 658, Palermo Avd. América Sur 658, Palermo Avd. América Sur 658, Palermo Avd. América Oeste 658, Vista Hermosa Avd. América Norte 865, Las Quintanas Avd. América Oeste 658, Vista Hermosa Avd. América Norte 865, Las Quintanas Avd. América Sur 658, Palermo Avd. América Sur 658, Palermo Avd. América Oeste 658, Vista Hermosa

TURNO

FECHA

M M T

2/9/12 2/9/12 2/9/12

T

3/9/12

M

3/9/12

M

3/9/12

M

4/9/12

M T

4/9/12 4/9/12

M

5/9/12

Se pide, considerando únicamente la extensión de la relación mostrada en la tabla: a. Indicar un ejemplo de anomalía de borrado b. Indicar las dependencias funcionales utilizando las siguientes abreviaturas: DNI (P), Nombre (N), Código_Tienda (C), Dirección_Tienda (D), Turno (T), Fecha (F). c. ¿En qué Forma Normal se encuentra la relación? ¿Cuáles son sus claves?

[email protected] http://www.ucv.edu.pe/cis/

P á g i n a | 78

UNIDAD

4

GUIA DIDÁCTICA Fundamentación

El propósito de este modulo es enseñarle al alumno la manera correcta de ingresar, modificar y eliminar datos a una tablas de una base de datos ya sea usando el modo de diseño o utilizando código SQL.

Así como resolver

consultas simples utilizando el diseñador de consultas o código SQL. Capacidad El participante al final de esta unidad estará en capacidad de: 

Aplica las técnicas de ingreso, modificación y eliminación de datos.



Resuelve consultas simples, utilizando el diseñador de consultas o instrucciones DML ESTRUCTURA DE CONTENIDOS 1. Edición de Tablas y Registros 2. Actualización de datos. 3. Insertando datos usando los comando DML 4. Consultas simples

P á g i n a | 79

Actividades Las actividades a desarrollar en la Unidad son: 

Actividad 01: o

Ingresa registros a cada una de sus tablas utilizando el diseñador grafico y utilizando scripts.

o

Modifica información en los

registros de sus tablas utilizando el

diseñador grafico y utilizando scripts. o

Elimina información en los

registros de sus tablas utilizando el

diseñador grafico y utilizando scripts. o

Realiza

estas

actividades

teniendo

en

cuenta

la

Integridad

Referencial. 

Actividad 02: o

Crea consultas simples y con criterios utilizando el diseñador gráfico de consultas y utilizando scripts.

Estrategias Metodológicas Para desarrollar la presente unidad llevaremos a cabo

dos tipos de

actividades: 5. Lectura Inicial de Contenidos, la realizaremos de manera ordenada, presenta los aspectos teóricos. Si se presenta alguna Duda se puede realizar lecturas sobre puntos específicos en la sección de Material Complementario. 6. Actividades a Desarrollar en la Unidad, se encuentran en el apartado de Actividades, donde constan: las consignas o indicaciones.

NOTA: Recuerde que el Aula Virtual de la UCV, se empleará como medio de comunicación entre el docente y los estudiantes, para efectos de mensajería interna, foros, evaluaciones virtuales, acciones de tutoría académica y comunicación de resultados de evaluación de los aprendizajes.

P á g i n a | 80

Evaluación En esta Unidad Ud., será evaluado en: 4. Creación de una Base de Datos, crear su backup y almacenarla en un dispositivo físico y como restaurarla su Base de Datos. 5. Desarrollar un caso práctico de crear una Base de Datos para un Empresa determinada identificando sus tablas con sus respectivas columnas y crear su diagrama. 6. Realizar consultas simples y con criterios, utilizando los operadores adecuados, haciendo uso del diseñador grafico de consultas y scripts. Es importante que Ud., este en constante comunicación con su docente Tutor, ya sea para informar de dificultades, avances de las tareas, etc. Recuerde que será calificado de acuerdo a las rúbricas de evaluación de cada actividad; por ejemplo: se le evaluará por la entrega oportuna de sus actividades.

Material Complementario El material complementario se suministra con la finalidad

de ampliar la

lectura de algunos textos y profundizar conocimientos. Elmasri

/

Navathe.

(1997)

Sistemas

de

Bases

de

Datos.

Conceptos

fundamentales. Addison Wisley James Martin. Organización de las Bases de Datos. Prentice Hall.Kroenke David M.(1998) . Procesamiento de Bases de Datos. Editorial Prentice Hall Hispanoamericana. Korth Henry f. y silberschatz Abraham. Fundamentos de Bases de Datos. Editorial Mc Graw Hill. España

P á g i n a | 81

UNIDAD

EDICION DE TABLAS Y REGISTROS

4

ESTRUCTURA DE CONTENIDOS

1. Edición de Tablas y Registros 2. Actualización de datos. 3. Insertando datos usando los comando DML 4. Consultas simples

P á g i n a | 82

Introducción

Estimado participante:

En esta Unidad aprenderá a ingresar correctamente datos a su base de datos utilizando el modo de diseño y los scripts, aplicando adecuadamente las instrucciones DML, así como modificar la estructura de una tabla y resolver consultas Simples La importancia de esta Unidad radica en que Usted ingrese de manera correcta los datos a una tabla y pueda resolver consultas utilizando el diseñador de consultas y código SQL

Importante:

!

Si deseas ahondar más sobre las nuevas características de Microsoft SQL Server 2008, podrás encontrar material adicional en la sección: Material Complementario en un apartado llamado: “SQL server 2008 r2 SQL Trasact SQL“ (Date, 2003)

P á g i n a | 83

1

EDICION DE TABLAS Y REGISTROS

Creando tablas e Insertando registros mediante Código Insertar registros a través de un archivo *.TXT a una tabla Creada

la

Base de

Datos

con

sus respectivas tablas y haberlas

relacionado, se procede a ingresar datos en cada una de ellas, para ello realizaremos el siguiente procedimiento. Primero ingresaremos al SQL Server Management Studio

Luego crear una base de datos simple y una nueva tabla para realizar nuestro ejemplo, entonces realizamos lo siguiente: 

Crear una base de datos “DB_APRENDIZAJE” CREATE DATABASE DB_APRENDIZAJE



Abrir una nueva consulta, solo debemos hacer clic arriba en el botón “Nueva Consulta”



Digitar el siguiente código: --Para utilizar la Base de datos USE DB_APRENDIZAJE

--Para Crear la Tabla

P á g i n a | 84

CREATE TABLE TIENDA (IdTienda varchar(50), Nombre varchar(50), Ciudad varchar (25), Factura decimal (7,3)) Con nuestra tabla ya creada podemos visualizarla con la siguiente consulta: --Muestra la tabla SELECT * FROM TIENDA Como Uds. pueden ver ya esta lista nuestra tabla y aunque vacía ya sabemos que tipos de datos se van a poder insertar, esto es importante porque al cargar los datos de origen desde nuestro archivo de texto estos tienen que coincidir con los de destino, ahora creamos nuestro archivo de texto con los datos que vamos a ingresar.

Ya tenemos nuestro archivo y para este ejemplo lo guardaran en su Unidad D:\ en una carpeta BASES DE DATOS (D:\BASE DE DATOS), así que podrán acceder a este fácilmente, para cargar el archivo a nuestra tabla ejecutamos el siguiente script en su hoja de consultas: BULK INSERT TIENDA FROM 'D:\BASES DE DATOS\DATOS.txt'--Ruta del archivo

P á g i n a | 85

WITH ( FIELDTERMINATOR = ',', --separa campos ROWTERMINATOR = '\n' ) --separa filas GO Ejecutamos la consulta y vemos que los cambios se han realizado, podemos comprobar si los datos están cargados mediante un nuevo SELECT --Muestra la tabla SELECT * FROM TIENDA

2

ACTUALIZACIÒN DE DATOS

Modificar nombres de Tablas y Columnas con Transact – SQL Primero para usar el sp_rename crearemos algunos ejemplos, Ud. podrá copiar el código completo y evitar la molestia de imaginarte algunas tablas nuevas para hacer tus pruebas entonces, creamos una base de datos para la prueba, 02 tablas. ---Crear la Base de Datos CREATE DATABASE EJEMPLO USE EJEMPLO --Crear Tablas y Campos CREATE TABLE MATRICULA (IdMatricula char(4) NOT NULL PRIMARY KEY, FechaMatricula date, Curso varchar(10)) CREATE TABLE ALUMNO

P á g i n a | 86

(IdAlumno char(4) NOT NULL PRIMARY KEY, Nombre varchar (50), Edad smallint) Bueno con eso ya tenemos algo para manipular, puedes comprobar que están creadas

en

tu

Explorador de

Objetos, ahora

si

vamos a

hacer las

modificaciones: Cambiar el nombre de una tabla --CAMBIARLE EL NOMBRE A UNA TABLA --En el siguiente ejemplo se cambia el nombre de la tabla ALUMNO por ESTUDIANTE. EXEC sp_rename 'ALUMNO', 'ESTUDIANTE'; GO Cambiar el nombre a una columna --CAMBIARLE EL NOMBRE A UNA COLUMNA --En el siguiente ejemplo se cambia el nombre de la columna NOMBRE por NOMESTUDIANTE EXEC sp_rename 'ESTUDIANTE.Nombre', 'NomEstudiante'; GO

P á g i n a | 87

3

INSERTANDO DATOS USANDO LOS COMANDO DML

Declaración INSERT Se usa para insertar una fila de datos en una tabla. Use BDVENTAS INSERT INTO Clientes ( clientes_id, clientes_nombres, clientes_telefono, clientes_direccion) VALUES ( ‘001’,’Cesar Delgado’,’52-5559’,’ Av. Lima Nro 678’) GO Declaración SELECT Se usa para recuperar los datos de una tabla o tablas. Use BDVENTAS SELECT clientes_id,Clientes_nombres FROM Clientes WHERE Clientes_Id = ’001’ Declaración UPDATE Se usa para poner al día o cambiar un valor o valores seguidos o filas de una tabla. Use BDVENTAS UPDATE Clientes SET clientes_direccion=‘Av. Lima Nro 945’ WHERE clientes_id = ‘001’ GO Declaración DELETE Se usa para eliminar una fila o filas de datos de una tabla. Use BDVENTAS DELETE FROM Clientes WHERE Clientes_id = ‘001’ GO

P á g i n a | 88

4

CONSULTAS SIMPLES

Utilizando el Diseñador de Consultas Para visualizar debe realizar lo siguiente: a. Abrir una Nueva Consulta b. Seleccionar la Base de Datos a trabajar c. Click en el Menú Consulta d. Luego Click en la Opción Diseñar Consulta en el Editor… C

D

e. Se visualizará una ventana, la cual debe seleccionar la(s) que se utilizaran en la consulta.

P á g i n a | 89

f.

Luego debe seleccionar las columnas de las tablas para crear la consulta, como se muestra en el siguiente grafico.

Panel de Diagrama

Panel de Criterios

Panel SQL

P á g i n a | 90

PRACTICA DESARROLLADA Ejecute el script de la BD Hotel utilizando el MS SQLServer Management Studio.

PAISES

SERVICIOS

País

Servicio

TIPO_HABITACION

Nombre_Servicio

Tipo_Habitacion

Descripción

Camas

Precio

Exterior

Fecha

Salon

TIPO_SERVICIO

Terraza

Nombre_Servicio

PRECI_HABITYACION IdPrecio Precio Temporada Tipo_Habitacion TEMPORADA Temporada FechaInicio FechaFinal Tipo HABITACION Num_Habitacion Tipo_Habitacion CLIENTE Cliente Pais Nombres Apell_Pat Apell_Mat Direccion Sexo Telefono

P á g i n a | 91

Observaciones RESERVA Reserva Fecha_reserva Fecha_Salida Num_Habitacion Cliente GASTOS Gastos Reserva Servicio Fecha Cantidad Precio

P á g i n a | 92

Realizar las siguientes consultas: 1) Inserte el tipo de servicio OCIO. insert into tipo_servicio (nombreServicio) values ('Matrimonial') 2) De de alta una reserva de la habitación 101 para el cliente 12345 para las noches del 2 al 4 de julio de 2012. El código de la reserva es autonumérico. insert into reserva_habitac ([FechaENTRADA] ,[FechaSALIDA] ,[NumHABITACION] ,[CLIENTE]) values ('02-07-2012','04-07-2012',101,'12345') 3) Actualice el teléfono del cliente 12345. Su nuevo número es 123456789. select * from clientes where identificacion=12345 update clientes set telefono='123456789' where identificacion=12345 4) Actualice el precio de los servicios incrementándolos en un 2% update servicios set precio=precio*1.02 5) Borre la reserva de la habitación 101 realizada anteriormente. delete from reserva_habitac where idreserva=8 delete from reserva_habitac where cliente=12345 and fechaentrada='02-07-2012' and numhabitacion=101 6) Borre los tipos de servicio que no tienen servicios definidos. delete from tipo_servicio where nombreServicio not in (select nombreservicio from servicios) select * from tipo_Servicio 7) Cree una consulta que devuelva las habitaciones reservadas para el día 24 de marzo de 2009. select numhabitacion from reserva_habitac

P á g i n a | 93

where '24/03/2012' between fechaentrada and fechasalida 8) Cree una consulta que devuelva los clientes procedentes de España y Francia. select * from clientes where pais in ('España','Italia') 9) Crea una consulta que devuelva los clientesque tengan alguna observación registrada. select * from clientes where observaciones is not null 10) Crea una vista que devuelva los servicios cuyo precio supere los 25 Nuevo soles SELECT * FROM servicios WHERE precio>25 11) Mostrar todos los clientes del sexo Femenino SELECT * FROM cliente WHERE sexo=’Femenino’ 12) Realizar una consulta que Muestre todos los gastos realizados el 30/08/2012 SELECT * FROM Gastos WHERE Fecha=’30/08/2012’

P á g i n a | 94

AUTOEVALUACIÓN UNIDAD 04 8.

Confrontar los siguientes Ítems. COLOCAR LA CRITERIOS

LETRA QUE

DEFINICIONES

CORRESPONDE Utilizado A. INSERT

valores

para en

modificar

los

campos

registros

los y

según

especificaciones Se B. UPDATE

utiliza

para

eliminar

registros de una tabla en una base de datos Conjunto

C. DELETE

de

manipulación

operaciones de

datos

de que

deben ser consideradas como una unidad. Utilizado

D. SELECT

para

consultar

registros dentro de la base de datos que son requerido en el momento Utilizado para cargar lotes de

E. TRANSACCION

datos en una tabla de la base de

datos

en

una

única

operación F. CONSISTENCIA

9.

coherencia de los datos

Caso Práctico. Crear la BD de Gestión Académica. Este corresponde a la gestión académica de un centro de estudios (instituto con grupos diurnos y nocturnos, o la universidad con titulaciones que se imparten en horarios

P á g i n a | 95

de mañana o tarde), de forma que el alumno se matricula en los cursos pero indicando en cuál de los grupos definidos para la misma. Decidir los tipos de datos en función de la información que se tiene en la BD suministrada. Dpto (CodDpto, nombre, CodProfDirige) Docente (CodDocente, nombres, apellpat,apellmat,CodDpto) Alumno (CodAlu, nombres, apellpat,apellmat, dni) Matricula (CodMatr, cursoacad, CodAlu) DetalleMatricula (CodMatr, CodCurso, CodGrupo, Convocatoria, calificación) Grupo (CodCurso, CodGrupo, max_alum, CodDocente) Curso (CodCurso, nombre, créditos, carácter, curso) Clase (CodCurso, CodGrupo, CodAula, hora, dia) Aula (CodAula, capacidad) Realizar las siguientes acciones: 1) Introducir datos en las tablas utilizando el LMD 2) Añadir a la tabla Alumno la columna sexo no permitir valores nulos. 3) Añadir a la tabla Docente la columna profesión permitir valores nulos. 4) Mostrar toda la información de las aulas 5) Mostrar el código, nombre y profesión de los docentes 6) Mostrar a los docentes del departamento con código 21 7) Buscar los cursos con más de 6 créditos 8) Encontrar aulas con capacidad de alumnos sentados entre 30 y 40 alumnos 9) Buscar cursos electivos y obligatorios. 10) Mostrar los cursos que se dicten los días lunes.

P á g i n a | 96

UNIDAD

4

ACTIVIDAD DIDÁCTICA

CASO 01: Realice el siguiente diseño utilizando el MS SQL Server Management Studio. Realizarlo de manera grafica y utilizando código:

A continuación realice las siguientes acciones: Inserciones •

Inserte el tipo de servicio OCIO.



De de alta una reserva de la habitación 101 para el cliente 12345 para las noches del 2 al 4 de julio de 2009. El código de la reserva es autonumérico.

Actualizaciones •

Actualice el teléfono del cliente 12345. Su nuevo número es 123456789.



Actualice el precio de los servicios incrementándolos en un 2%.

P á g i n a | 97

Eliminar •

Borre la reserva de la habitación 101 realizada anteriormente.



Borre los tipos de servicio que no tienen servicios definidos.

Consultas sencillas •

Cree una consulta que devuelva los clientes cuyo apellido incluya la sílaba “le” ordenados por su identificador.



Cree una consulta que devuelva los clientes, ordenados por su primer apellido, que tengan alguna observación anotada.



Cree una consulta que devuelva los servicios cuyo precio supere los 5 € ordenados por su código de servicio.



Cree una consulta que devuelva las habitaciones reservadas para el día 24 de octubre de 2012.



Cree una consulta que devuelva los clientes procedentes de Italia y Suecia.

Otras restricciones con DLL CHECK •

Controle en la tabla temporada que la fecha de fin es mayor que la fecha de inicio.



Controle en la tabla reserva_habitac que la fecha de salida es mayor o igual que la fecha de entrada.



Controle en la tabla servicios que el iva está comprendido entre 0 y 100,0.

ALTER TABLE •

Añada una columna calculada en la tabla gastos que obtenga el importe por línea sin aplicar el iva.



Añada una columna en servicios que indique si el servicio se ofrece a los clientes o no.

TABLA y FK •

Añada en gastos una referencia que indique el empleado que atendió el servicio.

P á g i n a | 98



Añada en reserva_habitac una referencia que indique el empleado que recogió la reserva.

CASO 2 Sean las tablas siguientes: TRABAJADOR (ID_T, NOMBRE, TARIFA, OFICIO, ID_SUPV) Cada fila representa un trabajador, identificado por su ID_T. Su nombre es NOMBRE; su tarifa por hora, en nuevo soles; su oficio y el identificador de su supervisor. EDIFICIO (ID_E, DIR, TIPO, CATEGORIA) Cada fila representa un edificio, que se identifica por su ID_E. Se guarda su dirección; el tipo de edificio y su categoría. ASIGNACION (ID_T, ID_E, FECHA_INICIO, NUM_DIAS) Una fila por cada vez que un trabajador es asignado a un edificio. 

Crear la Base de Datos aplicando Script y



Ingresar los siguientes datos TRABAJADOR ID_T

NOMBRE

TARIFA

1235

LUIS SALAS

12.5

ELECTRICISTA

1311

1311

JUAN DIAZ

15.5

ELECTRICISTA

1311

1412

CARLOS LU

13.75

FONTANERO

1520

1520

ALEX LOPEZ

11.75

FONTANERO

1520

2920

ERICK RUBIO

ALBAÑIL

2920

3001

SAM VELEZ

8.2

CARPINTERO

3231

3231

JOSE MORI

17.4

CARPINTERO

3231

10.0

OFICIO

ID_SUPV

EDIFICIO ID_E 111

210

DIR 1213 ASPEN 1011 BIRCH

TIPO

CATEGORIA

OFICINA

1

OFICINA

1

312

123 ELM

OFICINA

2

435

456 MAPLE

COMERCIO

1

460

1415

ALMACEN

3

P á g i n a | 99

BEACH 515

789 OAK

RESIDENCIA

2

ASIGNACION ID_T

ID_E

FECHA_INICIO

1235

312

2001-10-10

5

1235

515

2001-10-17

22

1311

435

2001-10-08

12

1311

460

2001-10-23

24

1412

111

2001-12-01

4

1412

210

2001-11-15

12

1412

312

2001-10-01

10

1412

435

2001-10-15

15

1412

460

2001-10-08

18

1412

515

2001-11-05

8

1520

312

2001-10-30

17

1520

515

2001-10-09

14

2920

210

2001-11-10

15

2920

435

2001-10-28

10

2920

460

2001-10-05

18

3001

111

2001-10-08

14

3001

210

2001-10-27

14

3231

111

2001-10-10

8

3231

312

2001-10-24

20



NUM_DIAS

Realizar las siguientes consultas. 1. Nombre de los trabajadores cuya tarifa este entre 10 y 12 Nuevos Soles. 2. ¿Cuáles son los oficios de los trabajadores asignados al edificio 435? 3. Indicar el nombre del trabajador y el de su supervisor. 4. Nombre de los trabajadores asignados a oficinas. 5. ¿Qué trabajadores reciben una tarifa por hora mayor que la de su supervisor? 6. ¿Cuál es el número total de días que se han dedicado a fontanería en el edificio 312? 7. ¿Cuántos tipos de oficios diferentes hay?

P á g i n a | 100

8. Para cada supervisor, ¿Cuál es la tarifa por hora más alta que se paga a un trabajador que informa a ese SUPERVISOR? 9. Para cada supervisor que supervisa a más de un trabajador, ¿cuál es la tarifa más alta que se paga a un trabajador que informa a ese SUPERVISOR? 10. Incrementar la tarifa a los trabajadores cuyo oficio son FONTANERO.

[email protected] http://www.ucv.edu.pe/cis/

P á g i n a | 101

UNIDAD

GUIA DIDÁCTICA

5

Fundamentación El propósito de este modulo es enseñarle al resolver consultas complejas utilizando el diseñador de consultas o código SQL. Capacidad El participante al final de esta unidad estará en capacidad de: 

Resolver consultas utilizando funciones d Diseñar su Base de Datos partiendo de los requerimientos de información

Contenidos 1. Consultas con Criterios 2. Consultas Mediante Código 3. Criterios de búsqueda anidada. Operadores lógicos. 4. Campos calculados. 5. Agrupación.

P á g i n a | 102

Actividades Las actividades a desarrollar en la Unidad son: 

Actividad 05: o

Resuelve consultas compuestas utilizando criterios.

o

Valorar la teoría y la práctica, como base del perfeccionamiento profesional, individual y colectivo.

Estrategias Metodológicas Para desarrollar la presente unidad llevaremos a cabo

dos tipos de

actividades: 7. Lectura Inicial de Contenidos, la realizaremos de manera ordenada, presenta los aspectos teóricos. Si se presenta alguna Duda se puede realizar lecturas sobre puntos específicos en la sección de Material Complementario. 8. Actividades a Desarrollar en la Unidad, se encuentran en el apartado de Actividades, donde constan: las consignas o indicaciones.

NOTA: Recuerde que el Aula Virtual de la UCV, se empleará como medio de comunicación entre el docente y los estudiantes, para efectos de mensajería interna, foros, evaluaciones virtuales, acciones de tutoría académica y comunicación de resultados de evaluación de los aprendizajes.

P á g i n a | 103

Evaluación En esta Unidad Ud., será evaluado en: 7. Realizar consultas con criterios, utilizando los operadores adecuados, haciendo uso del diseñador grafico de consultas y scripts. Es importante que Ud., este en constante comunicación con su docente Tutor, ya sea para informar de dificultades, avances de las tareas, etc. Recuerde que será calificado de acuerdo a las rúbricas de evaluación de cada actividad; por ejemplo: se le evaluará por la entrega oportuna de sus actividades.

Material Complementario El material complementario se suministra con la finalidad de ampliar la lectura de algunos textos y profundizar conocimientos. Elmasri

/

Navathe.

(1997)

Sistemas

de

Bases

de

Datos.

Conceptos

fundamentales. Addison Wisley James Martin. Organización de las Bases de Datos. Prentice Hall.Kroenke David M.(1998) . Procesamiento de Bases de Datos. Editorial Prentice Hall Hispanoamericana. Korth Henry f. y silberschatz Abraham. Fundamentos de Bases de Datos. Editorial Mc Graw Hill. España

P á g i n a | 104

UNIDAD

CONSULTAS CON CRITERIOS

5

6. Consultas con Criterios 7. Consultas Mediante Código 8. Criterios de búsqueda anidada. Operadores lógicos. 9. Campos calculados. 10. Agrupación.

P á g i n a | 105

Introducción

Estimado participante:

En esta Unidad aprenderá resolver consultas con operadores, funciones, aplicar campos calculados utilizando el diseñador de consultas o código SQL.

!

Importante: Si deseas ahondar más sobre las nuevas características de Microsoft SQL Server 2008, podrás encontrar material adicional en la sección: Material Complementario en un apartado llamado: “SQL server 2008 r2 SQL Trasact SQL“ (Gabillaud, 2009)

P á g i n a | 106

1

CONSULTAS CON CRITERIOS Utilizando el Diseñador de Consultas Para visualizar debe realizar lo siguiente: g. Abrir una Nueva Consulta h. Seleccionar la Base de Datos a trabajar i.

Click en el Menú Consulta

j.

Luego Click en la Opción Diseñar Consulta en el Editor… C

D

k. Se visualizará una ventana, la cual debe seleccionar la(s) que se utilizaran en la consulta.

P á g i n a | 107

l.

Luego debe seleccionar las columnas de las tablas para crear la consulta, como se muestra en el siguiente grafico.

Panel de Diagrama

Panel de Criterios

Panel SQL

2 CONSULTAS MEDIANTE CÓDIGO 1 Cláusula SELECT Argumentos: DISTINCT ó Los Ingresos Distintos: Especifica que sólo pueden aparecer filas únicas en el conjunto de

resultados.

Use BDVENTAS SELECT DISTINCT CIUDAD FROM CLIENTES GO TOP n [PERCENT]: Devuelve la primera n filas del resultado. Si se especifica PERCENT devolverá el porcentaje. Use BDVENTA SELECT TOP 5 Ciudad

Use BDVENTA

FROM Cliente

SELECT TOP PERCENT 5 Ciudad

GO

FROM Cliente

P á g i n a | 108

GO

3 CRITERIOS DE BÙSQUEDA ANIDADA AS ó Seudónimo de Columna: Se utiliza para poner un alias a una columna y se muestre en la lista de

resultados como cabecera.

SELECT CodCliente AS 'Código de Cliente' FROM Cliente ORDER BY

(Ordenado Por): Se utiliza para mostrar los resultados

ordenados por una o más columna. USE DBVenta

USE Pubs

SELECT

SELECT

NomCli,ApellCli,RucCli,DirCli

NomCli,ApellCli,RucCli,DirCli

FROM Cliente

FROM Cliente

ORDER BY ApellCli

ORDER BY ApellCli DESC

BETWEEN (Intervalo): BETWEEN especifica un intervalo inclusivo de búsqueda. Los intervalos inclusivos devuelven cualquier valor que coincida con los dos valores especificados. USE DBVenta SELECT NomCli,ApellCli,RucCli,DirCli FROM Cliente WHERE ApellCli BETWEEN 'G' AND 'R'

4 CAMPOS CALCULADOS FUNCIONES DE AGREGADO: Las funciones de agregado (SUM, AVG, COUNT, MAX y MIN) generan valores de resumen en los conjuntos de resultados de las consultas. SUM([ALL | DISTINCT] expression)

Total de los valores de la expresión numérica.

AVG([ALL | DISTINCT] expression)

Promedio de los valores de la expresión numérica.

COUNT([ALL | DISTINCT] expression)

Número de valores en la expresión.

MAX (expression)

Valor mayor de la expresión.

MIN (expression)

Valor menor de la expresión.

P á g i n a | 109

USE DBVenta

USE DBVenta

SELECT SUM(PreArt)

SELECT avg(PreArt)

FROM Articulo

FROM Articulo

USE DBVenta

USE DBVenta

SELECT MIN(PreArt)

SELECT AVG(PreArt), SUM(PreArt)

FROM Articulo

FROM Articulo

5 AGRUPACIONES

GROUP BY (Agrupado Por): Divide una tabla en grupos. Los grupos pueden consistir en nombres de columnas, resultados o columnas calculadas. USE DBVENTA SELECT DISTRITO,COUNT(CODCLI) FROM CLIENTE GROUP BY DISTRITO LIKE (Coincidencia de Patrones): Determina si una cadena de caracteres dada coincide o no con un determinado modelo. Un modelo puede incluir caracteres normales y caracteres comodines. Durante la coincidencia de patrones, los caracteres regulares deben coincidir exactamente con los caracteres especificados en la cadena de caracteres. LIKE (Coincidencia de Patrones) Comodín

Significado

%

Cualquier cadena de cero o más caracteres.

_

Cualquier carácter individual

Incluya los caracteres comodín y la cadena de caracteres entre apóstrofes o comillas simples USE DBVENTA

P á g i n a | 110

SELECT NomCli,ApellCli,RucCli,DirCli FROM Cliente WHERE ApellCli LIKE 'G%' --USE DBVENTA SELECT NomCli,ApellCli,RucCli,DirCli FROM Cliente WHERE ApellCli LIKE '%T' --USE DBVENTA SELECT NomCli,ApellCli,RucCli,DirCli FROM Cliente WHERE ApellCli LIKE '_ABA'

P á g i n a | 111

PRACTICA DESARROLLADA Restaurar la Base de Datos de la Unidad Anterior y ejecutar las siguientes scripts. Crea una vista que devuelva los clientes cuyo apellido incluya la sílaba “le” ordenados por su identificador. select * from clientes where apellido1 like '%le%' order by apellido1 Crea una vista que devuelva los clientes, ordenados por su primer apellido, que tengan alguna observación anotada. select * from clientes where observaciones is not null order by apellido1 Crea una vista que devuelva el nº de clientes por nacionalidad. select pais,COUNT( identificacion) AS NUMERO FROM CLIENTES GROUP BY pais Crea una vista que devuelva el nº de habitaciones por categoría de habitación. select count(*) , tipo_habitacion,camas, exterior from habitaciones h, tipo_habitacion t where h.tipo_habitacion=t.categoria group by tipo_habitacion,camas,exterior Cree una consulta que devuelva el gasto en servicios realizado por cada reserva. SELECT gastos.idreserva, SUM(gastos.Cantidad * gastos.Precio) AS total FROM gastos GROUP BY gastos.idreserva Cree una consulta que devuelva el precio del servicio más caro y del más barato select max(precio) maximo, min(precio) mínimo from servicios

P á g i n a | 112

go

P á g i n a | 113

AUTOEVALUACIÓN UNIDAD 05 10.

Confrontar. COLOCAR LA CRITERIOS

LETRA QUE

DEFINICIONES

CORRESPONDE Determina A. MAX

si

una

cadena

de

caracteres dada coincide o no con un determinado modelo

B. MIN

Divide una tabla en grupos

C. DISTINCT

Valor mayor de una expresión Muestra

D. GROUP BY

los

ordenados

resultados

por

una

que

sólo

o

más

columna.

E. ORDER BY

Especifica aparecer

filas

conjunto de F. LIKE

G. AVG

11.

únicas

pueden en

el

resultados.

Valor menor de una expresión Promedio de los valores de la expresión numérica.

Caso Práctico. Crear la BD de Gestión Académica. Este corresponde a la gestión académica de un centro de estudios (instituto con grupos diurnos y nocturnos, o la universidad con titulaciones que se imparten en horarios de mañana o tarde), de forma que el alumno se matricula en los cursos pero indicando en cuál de los grupos definidos para la misma. Decidir los tipos de datos en función de la información que se tiene en la BD suministrada.

P á g i n a | 114

Dpto (CodDpto, nombre, CodDocDirige) Docente (CodDocente, nombres, apellpat,apellmat,CodDpto) Alumno (CodAlu, nombres, apellpat,apellmat, dni) Matricula (CodMatr, cursoacad, CodAlu) DetalleMatricula (CodMatr, CodCurso, CodGrupo, Convocatoria, calificación) Grupo (CodCurso, CodGrupo, max_alum, CodDocente) Curso (CodCurso, nombre, créditos, carácter, curso) Clase (CodCurso, CodGrupo, CodAula, hora, dia) Aula (CodAula, capacidad) Realizar las siguientes acciones: 1) Mostrar los alumnos cuyo primer apellido está comprendido entre la A y M 2) Buscar los docentes cuyo nombre finalice con una vocal 3) Mostrar los departamentos que no tienen asignado director 4) Mostrar los departamentos con el nombre y apellido de su director ordenados por apellido. 5) Mostrar los docentes con el nombre del dpto al que pertenecen 6) Mostrar los docentes que pertenecen al mismo dpto que Miguel Salas 7) Mostrar los alumnos que están cursando algún curso optativa (realizar la misma consulta utilizando en cada caso un operador de los siguientes: exists, in o any) 8) Mostrar los cursos que se imparten en un aula con capacidad > 35 9) Mostrar el alumno o alumnos con la calificación más alta en el curso de BD independientemente de su convocatoria. Y el alumno o alumnos con la calificación más baja del mismo curso. 10) Mostrar los alumnos que están matriculados sólo en cursos electivos.

P á g i n a | 115

UNIDAD

ACTIVIDAD

5

CASO 01: Realice el siguiente diseño utilizando el MS SQL Server Management Studio. Realizarlo de manera grafica y utilizando código:

A continuación realice las siguientes acciones: Consultas de combinación y subsentencia •

Cree una consulta que devuelva los distintos clientes que han utilizado el servicio de comedor.



Cree una consulta que devuelva las características de cada habitación reservada.



Cree una consulta que devuelva los precios de los distintos tipos de habitación por temporada.



Cree una consulta que devuelva todos los clientes, y de aquellos que han realizado alguna reserva en marzo, indicar el nº de reserva.

P á g i n a | 116



Cree una consulta con los servicios que nunca han sido contratados (dos versiones EXISTS e IN).



Cree una consulta que devuelva los clientes con el mismo primer apellido.



Consultas con GROUP BY



Cree una consulta que devuelva el nº de clientes por nacionalidad.



Cree una consulta que devuelva el nº de habitaciones por categoría de habitación.



Cree una consulta que devuelva el nº de servicios que se ofrecen por tipo de servicio. Restrinja la salida para aquellos tipos de servicio que ofrezcan más de un servicio.



Cree una consulta que devuelva el gasto en servicios realizado por cada reserva.

Otras acciones •

Cree una consulta que devuelva el precio del servicio más caro y del más barato.



Crear una tabla temporal que recoja los clientes de Italia. Actualizar su identificación sumándole 10 y cambiando país a Alemania. Insertar en la tabla de clientes, estos clientes modificados.

Otras restricciones con DLL CHECK •

Controle en la tabla temporada que la fecha de fin es mayor que la fecha de inicio.



Controle en la tabla reserva_habitac que la fecha de salida es mayor o igual que la fecha de entrada.



Controle en la tabla servicios que el iva está comprendido entre 0 y 100,0.

CREATE INDEX •

Cree un índice sobre el atributo Nacionalidad de la tabla clientes, con objeto de agilizar las búsquedas.



Cree

un

índice

sobre

el

atributo

numHabitacion

de

la

tabla

reverva_habitac, con objeto de agilizar las búsquedas. •

Cree un índice sobre el atributo nombreServicio de la tabla servicios, con objeto de agilizar las búsquedas.

P á g i n a | 117

ALTER TABLE •

Añada una columna calculada en la tabla gastos que obtenga el importe por línea sin aplicar el iva.



Añada una columna en servicios que indique si el servicio se ofrece a los clientes o no.

TABLA y FK •

Añada en gastos una referencia que indique el empleado que atendió el servicio.



Añada en reserva_habitac una referencia que indique el empleado que recogió la reserva.

[email protected] http://www.ucv.edu.pe/cis/

P á g i n a | 118

UNIDAD

TALLER DE UNIDAD I Y EXAMEN PARCIAL I

6

ESTRUCTURA DE CONTENIDOS



Taller de Unidad I



Examen Unidad I

[email protected] http://www.ucv.edu.pe/cis/

P á g i n a | 119

TALLER I 1. Abrir SQL Server Management Studio

2. Seleccionar el usuario y Conectarse

3. Crear la base de datos Banco

4. Crear las Tablas usando Script.

P á g i n a | 120

5. Según el Modelo realizar las siguientes consultas: Mostrar todas las columnas de la tabla Cliente

Mostrar el codigo, apellidos, nombres de los clientes, ademas el numero de cuenta y su saldo solo de aquellos cuyo saldo en su cuenta supere los 10000 Nuevos Soles

P á g i n a | 121

Consultar las Cuentas de los clientes cuyo Apellido empiece por A SELECT B.APELLIDOS + ',' + B.NOMBRES AS CLIENTE, A.IDCUENTA, A.SALDO FROM CUENTA A INNER JOIN CLIENTE B ON A.IDCLIENTE = B.IDCLIENTE WHERE B.APELLIDOS LIKE 'A%' Consultar todo los movimientos de las Cuentas del Cliente PEREZ en DOLLARES (Aunque tenga cuentas en otras divisas) Ordenados por el numero de Cuenta SELECT C.NOMBRES, C.APELLIDOS, CU.IDCUENTA, CU.SALDO, CU.DIVISA, M.IDMOVIMIENTO, M.MONTO, M.TIPO FROM CLIENTE C INNER JOIN CUENTA CU ON C.IDCLIENTE = CU.IDCLIENTE INNER JOIN MOVIMIENTO M ON CU.IDCUENTA = M.IDCUENTA WHERE C.APELLIDOS = 'PEREZ' ORDER BY CU.IDCUENTA Consultar las Divisas que no tengan ninguna Cuenta Asociada SELECT B.IDCLIENTE, B.APELLIDOS, B.NOMBRES, A.IDCUENTA, A.DIVISA FROM CUENTA A INNER JOIN CLIENTE B ON A.IDCLIENTE = B.IDCLIENTE INNER JOIN MOVIMIENTO C ON A.IDCUENTA = A.IDCUENTA WHERE A.DIVISA = 'SIN CUENTA' Consultar los Movimientos de Ingreso de PEREZ y los Movimientos de Traspaso de RODRIGUEZ

P á g i n a | 122

SELECT A.IDCUENTA, C.FECHA, C.MONTO, C.TIPO FROM CUENTA A INNER JOIN CLIENTE B ON A.IDCLIENTE = B.IDCLIENTE INNER JOIN MOVIMIENTO C ON A.IDCUENTA = A.IDCUENTA WHERE C.TIPO = 'DEPOSITO' AND B.APELLIDOS = 'PEREZ' OR C.TIPO = 'TRANSACCIONES' AND B.APELLIDOS = 'RODRIGUEZ' ORDER BY C.FECHA DESC Insertar datos en la tabal Ciente INSERT INTO CLIENTE VALUES ('22999000','CORDOVA','WLIMER') INSERT INTO EMPLEADOS VALUES ('22333444','ACOSTA','ANA') INSERTINTO EMPLEADOS VALUES ('22777888','CORDOVA','DANIELA') GO Añadir a la tabla CLIENTE las columna Direcccion y Sexo, la columna Direccion si no debe permitir el iungreo de valore nulos. ALTER TABLE CLIENTE ADD DIRECCION VARCHAR (50) NOT NULL ALTER TABLE CLIENTE ADD SEXO BIT

P á g i n a | 123

UNIDAD

GUIA DIDÁCTICA

07

Fundamentación Una de las mejores herramientas que tenemos para mejorar el rendimiento de las consultas en las bases de datos son las vistas que son fáciles de crear, en esta unidad se

proporciona información sobre cómo crear una vista en

SQL Server, sintaxis para crearlas y como se clasifican Capacidad El participante al final de esta unidad estará en capacidad de: 

Mejorar el procesamiento y la integridad de una base de datos utilizando vistas sencillas.



Crear

y

emplear

vistas

complejas

de

subconjunto,

agrupadas

y

compuestas en una base de datos de un proceso de negocio real.

CONTENIDOS 1. Vistas 2. Creación por diseño y código.

P á g i n a | 124

Actividades Caso: VENTAS: 1. Cree una vista que muestre los datos de todos los empleados que no hayan emitido alguna boleta. Luego, efectúe una consulta sobre dicha vista, para mostrar el menor y el mayor año de ingreso de dichos empleado. Emplee etiquetas (alias de campo) para el encabezado del listado de campo. 2. Cree una vista que muestre los datos de los productos vendidos en el año 2012. Luego, efectúe una consulta a dicha vista para listar aquellos productos cuya letra inicial de su descripción se encuentra entre la A y la F. Cree una vista que muestre los datos de los productos vendidos. Luego, mediante una consulta a dicha vista, muestre los productos cuya descripción empiezan con la letra ‘P’ o contenga la cadena ‘SA’ y que hayan sido vendidos en el segundo trimestre del año 2012.

Estrategias Metodológicas Para desarrollar la presente unidad llevaremos a cabo

dos tipos de

actividades: 9. Lectura Inicial de Contenidos, la realizaremos de manera ordenada, presenta los aspectos teóricos. Si se presenta alguna duda se puede realizar lecturas sobre puntos específicos en la sección de Material Complementario. 10. Actividades a Desarrollar en la Unidad, se encuentran en el apartado de Actividades, donde constan: las consignas o indicaciones. NOTA: Recuerde que el Aula Virtual de la UCV, se empleará como medio de comunicación entre el docente y los estudiantes, para efectos de mensajería interna, foros, evaluaciones virtuales, acciones de tutoría académica y comunicación de resultados de evaluación de los aprendizajes.

P á g i n a | 125

Evaluación En esta Unidad Ud., será evaluado en: 8. Creación de Vista simples. 9. Desarrollar un caso práctico, la Base de Datos trata de informatizar el proceso de compras de una empresa, Esto es, recoger los pedidos de los artículos, contemplados en su catálogo, que compran a proveedores ya conocidos. Reglas: 

No se puede seleccionar un artículo que no se encuentre en el catálogo.



Si el stock alcanza el mínimo establecido, se ha de notificar como un evento.



Realizar una vista que guarde el encabezado del pedido que se realizaría al proveedor.

Es importante

que Ud.,

Tutor, ya sea para

este en constante comunicación con su docente

informar de dificultades, avances de las tareas, etc.

Recuerde que será calificado de acuerdo a las rúbricas de evaluación de cada actividad; por ejemplo: se le evaluará por

la entrega oportuna de sus

actividades.

Material Complementario El material complementario se suministra con la finalidad

de ampliar la

lectura de algunos textos y profundizar tus conocimientos. http://technet.microsoft.com/es-es/library/ms187956.aspx Tutorial para la creación de vistas

[email protected] http://www.ucv.edu.pe/cis/

P á g i n a | 126

UNIDAD

VISTAS

07

ESTRUCTURA DE CONTENIDOS

1. Creación por diseño 2. Creación por código.

[email protected] http://www.ucv.edu.pe/cis/

P á g i n a | 127

Introducción

Estimado participante:

En esta oportunidad le damos la bienvenida a esta nueva unidad de aprendizaje, donde aprenderá los fundamentos necesarios para la creación de Vistas, en este manual se realizan consultas multitablas empleando funciones agrupadas, para luego grabarlas en una vista. La creación de Vistas brinda una Seguridad al acceso a la Base de Datos, la cual permite otorgar a los usuarios acceso a una parte de la información que hay en una tabla, pero no a toda la tabla. En cuanto a Comodidad, el modelo relacional no es el más cómodo para

visualizar

los datos, lo que nos puede llevar a tener que escribir

complejas sentencias SQL, tener una vista nos simplifica esta tarea. Te deseamos éxitos en el desarrollo de esta Unidad.

!

Importante: Si deseas ahondar

más sobre

creación de vistas visitar el

siguiente el Link. http://technet.microsoft.com/es-es/library/ms187956.aspx

P á g i n a | 128

1

CREACIÒN DE VISTAS POR DISEÑO EN SQL Server 2008 r2 Una vista se puede considerar como una tabla virtual o una consulta almacenada. Los datos accesibles a través de una vista no están almacenados en un objeto distinto de la base de datos. 1.- Ingresar a Microsoft SQL Server 2008 2.- Conectar al servidor 3.- Explorador de objetos, expandir la Base de Datos a trabajar:

4.- En la carpeta Vistas, presionar el Botón derecho para crear Vistas.

Presionar Botón derecho, y clic en Nueva Vista

5.- Se visualizara una ventana la cual deberá Ud. seleccionar la(s) tabla(s), con la cual se creara la vista.

A

B

C

D

P á g i n a | 129

Los paneles que muestra la ventana son los siguientes:

A. Panel de Diagrama B. Panel de Criterios C. Panel SQL D. Panel de Resultados 6.- Seleccionar las columnas correspondientes para crear la vista.

7.- Finalmente guardar la Vista

Click Asignar un nombre a la vista

8.- La vista se almacenara en la carpeta Vistas

P á g i n a | 130

9.- Para modificar, eliminar, mostrar resultados u otra operación presionar el botón derecho en la Carpeta Vistas y seleccionar la opción deseada. 2

CREACIÒN DE VISTAS MEDIANTE CÒDIGO

Para crear Vistas mediante código realizar lo siguiente: 1. Click en el botón Nueva Consulta 2. Digitar el código: CREATE VIEW MONTOXCONTRATO AS SELECT DET.COD_CONT, MONTO=SUM(DEP.PRECIO_ALQXMES_DEP * (DATEDIFF(MM,DET.FEC_INI_ALQ,DET.FEC_FIN_ALQ))) FROM DEPARTAMENTOS DEP, DETALLECONTRATO DET WHERE DEP.COD_EDIF=DET.COD_EDIF AND DEP.COD_DEP=DET.COD_DEP GROUP BY DET.COD_CONT 10. Seleccionar el código y click en el Botón Ejecutar 11. Verificar la implementación de la vista, digitando el siguiente código: SELECT * FROM MONTOXCONTRATO 12. La vista se almacenara en la carpeta Vistas

13. Para modificar una vista utilizar el siguiente código: ALTER VIEW PROPIETARIOS_SIN_CONTRATO AS SELECT NOM_EDIF, DIRECC_EDIF, AREA_TOTAL_EDIF FROM EDIFICIOS WHERE EXISTS (SELECT * FROM DEPARTAMENTOS WHERE DEPARTAMENTOS.COD_EDIF=EDIFICIOS.COD_EDIF AND DEPARTAMENTOS.PISO_DEP=7) 14. Para eliminar una vista eliminar el siguiente código: DROP VIEW dbo.VERINQUILINOS Ejemplos:

P á g i n a | 131

/*en la base de datos ejemplo, supongamos que se desea que los propietarios vean las filas de la tabla CONTRATO correspondientes a ciertos meses*/ CREATE VIEW VERCONTRATOSMESESIMPARES AS SELECT * FROM CONTRATO WHERE DATEPART(MM,FEC_FIRMA) IN (1,3,5,7,9,11) --CREATE VIEW VERCONTRATOSMESESPARES AS SELECT * FROM CONTRATO WHERE DATEPART(MM,FEC_FIRMA) IN (2,4,6,8,10,12) --SELECT * FROM VERCONTRATOSMESESIMPARES SELECT * FROM VERCONTRATOSMESESPARES /*Se desea crear una vista que muestre el código, nombre y apellido del aval de todos los inquilinos existentes, para que unos ciertos usuarios tengan acceso sólo a columnas específicas. Entonces, la vista se realizará de la siguiente manera.*/ CREATE VIEW VERINQUILINOS AS SELECT COD_USUA, NOM_AVAL_INQ, APELL_AVAL FROM INQUILINO -SELECT * FROM VERINQUILINOS

P á g i n a | 132

PRÁCTICA DESARROLLADA TEMA: Creación de Vistas (Base de Datos DEPARTAMENTOS) 1. Muestre el nombre, apellido paterno y apellido materno de los inquilinos que tienes el haber básico más alto y más bajo. CREATE VIEW SALARIO_MAX_MIN AS SELECT NOM_USUA, APEPATER_USUA, APEMATER_USUA FROM USUARIO WHERE COD_USUA IN (SELECT COD_USUA FROM INQUILINO WHERE HABER_BAS_INQ IN (SELECT MAX(HABER_BAS_INQ) FROM INQUILINO) OR HABER_BAS_INQ IN (SELECT MIN(HABER_BAS_INQ) FROM INQUILINO)) -SELECT * FROM SALARIO_MAX_MIN 2. Muestre el nombre y apellido paterno de los propietarios que no tienen contratos. CREATE VIEW PROPIETARIOS_SIN_CONTRATO AS SELECT NOM_USUA, APEPATER_USUA FROM USUARIO WHERE COD_USUA IN (SELECT COD_USUA FROM PROPIETARIO WHERE COD_USUA NOT IN (SELECT PROP_COD_USUA FROM CONTRATO)) -SELECT * FROM PROPIETARIOS_SIN_CONTRATO 3. Muestre el nombre, dirección y área total del los edificios que tienen departamentos ubicados en el piso 7. CREATE VIEW PROPIETARIOS_SIN_CONTRATO AS SELECT NOM_EDIF, DIRECC_EDIF, AREA_TOTAL_EDIF

P á g i n a | 133

FROM EDIFICIOS WHERE EXISTS (SELECT * FROM DEPARTAMENTOS WHERE DEPARTAMENTOS.COD_EDIF=EDIFICIOS.COD_EDIF AND DEPARTAMENTOS.PISO_DEP=7) -SELECT * FROM PROPIETARIOS_SIN_CONTRATO

P á g i n a | 134

AUTOEVALUACIÓN UNIDAD 07 12.

Marca con un círculo la opción correcta en las siguientes alternativas. I.- ¿Cuáles de las siguientes sentencias son ciertas sobre las vistas? A. Una vista representa un subconjunto de los atributos de una tabla

y que puede ser diseñado para facilitar un caso en particular. B. El manejo de permisos y otras tareas administrativas es mucho

más fácil a través de vistas que a través de tablas. C. Una vista es utilizada para recuperación rápida de datos. D. Una vista es una rápida descripción de una base de datos.

II.- ¿Qué establece un Primary key de una tabla? A. Integridad Referencial B. Integridad de los registros C. Integridad de las columnas D. Constraints de identidad

III.- ¿Cuál de las siguientes sentencias es cierta sobre las relaciones? A. Las relaciones son entidades. B. Las relaciones son enlaces lógicos entre las tablas implementadas

a través de Primary y Foreign keys. C. Las relaciones son almacenadas como atributos en la base de

datos. D. Las relaciones explícitamente definen una asociación entre 2

tablas. 13.

Completa los espacios en blanco con la respuesta correcta. n. Defina que es una VISTA: __________________________________ _______________________________________________________ _______________________________________________________ o. ¿Cuáles son las ventajas de trabajar con vistas? _______________________________________________________ _______________________________________________________ _______________________________________________________ p. ¿Cuáles son las restricciones en las definiciones de vistas? _______________________________________________________ ______________________________________________________

P á g i n a | 135

UNIDAD

ACTIVIDAD

07

CASO: ACADEMIA Un club dicta cursos de distintos deportes. Almacena la información en varias tablas. El director no quiere que los empleados de administración conozcan la estructura de las tablas ni algunos datos de los profesores y socios, por ello se crean vistas a las cuales tendrán acceso. CREATE DATABASE DB_ACADEMIA CREATE TABLE SOCIOS ( Documento char (8) not null, Nombre varchar (40), Domicilio varchar (30), constraint PK_socios_documento primary key (documento) ); CREATE TABLE PROFESORES (Documento char (8) not null, Nombre varchar (40), Domicilio varchar (30), Constraint PK_profesores_documento PRIMARY KEY (documento)); CREATE TABLE cursos (Numero Tinyint identity, Deporte varchar (20), Dia varchar (15), constraint CK_inscriptos_dia check (dia in ('lunes','martes','miércoles','jueves','viernes','sábado')), documentoprofesor char (8), Constraint PK_cursos_numero PRIMARY KEY (numero)); CREATE TABLE INSCRIPTOS (Documentosocio char(8) not null,

P á g i n a | 136

Numero tinyint not null, Matricula char (1), Constraint CK_inscriptos_matricula check (matricula in('s','n')), Constraint PK_inscriptos_documento_numero PRIMARY KEY (documentosocio,numero)); 1. Ingrese registros para todas las tablas 2. Cree una vista en la que aparezca el nombre y documento del socio, el deporte, el día y el nombre del profesor y muestre la información contenida en la vista. 3. Realice una consulta a la vista donde muestre la cantidad de socios inscriptos

en

cada

deporte

ordenados

por

cantidad.

Muestre

(consultando la vista) los cursos (deporte y día) para los cuales no hay inscriptos. 4. Muestre los nombres de los socios que no se han inscripto en ningún curso (consultando la vista) 5. Muestre (consultando la vista) los profesores que no tienen asignado ningún deporte aún. 6. Muestre (consultando la vista) el nombre y documento de los socios que deben matrículas. 7. Consulte la vista y muestre los nombres de los profesores y los días en que asisten al club para dictar sus clases. 8. Muestre la misma información anterior pero ordenada por día. 9. Muestre todos los socios que son compañeros en tenis los lunes. 10. Elimine la vista "vista_inscriptos" si existe y créela para que muestre la cantidad de inscriptos por curso, incluyendo el número del curso, el nombre del deporte y el día. 11. Consulte la vista: SELECT * FROM vista_inscriptos;

P á g i n a | 137

UNIDAD

08

GUIA DIDÀCTICA Fundamentación

El propósito de esta unidad es introducir al estudiante el manejo de los datos de una base de datos relacional utilizando comandos TRANSACT-SQL el cual permite agrupar una serie de instrucciones como lote, ya sea de forma interactiva o desde un archivo operativo. También, se puede utilizar estructuras

de

control

de

flujo

por

Transact/SQL

para

conectar

las

instrucciones utilizando estructuras de tipo de programación. Aprenderán

a manejar la programación TRANSACT-SQL aplicando los

conceptos de

procedimientos almacenados y funciones, la misma que será

guiada por el docente a cargo. Capacidad El participante al final de esta unidad estará en capacidad de implementar instrucciones SQL y de programación mediante procedimientos almacenados para optimizar las operaciones en la base de datos y desencadenadores para optimizar las operaciones (insert, delete y update) de registros en una base de datos. CONTENIDOS. 1. Procedimientos Almacenados 2. Procedimientos Almacenados sin Parámetros 3. Procedimientos Almacenados con Parámetros

P á g i n a | 138

Actividad: Las actividades a desarrollar en la Unidad son: Caso: VENTAS: 1.

Cree un procedimiento almacenado que permita buscar los datos de un producto. El procedimiento tiene como parámetro de entrada el código del producto.

2. Cree un procedimiento almacenado que muestre los datos de las boletas con su monto total por boleta. El procedimiento recibirá como parámetro de entrada el código del vendedor que emitió dicha boleta. 3. Cree un procedimiento almacenado que muestre el detalle de una boleta. El procedimiento recibirá como parámetro de entrada el código de dicha boleta. 4. Cree un procedimiento almacenado que permita ingresar datos a la tabla PRODUCTO y que reciba como parámetros de entrada los datos para cada campo. Considere que el código del producto es un valor generado por el procedimiento almacenado y tiene la forma tal como ‘PRO001’. Adicionalmente, verifique que no se ingresen dos productos con la misma descripción, y si esto ocurriera, muestre un mensaje que indique ‘Ya existe un producto con la misma descripción. Los mensajes de error deberán ser invocados desde otro procedimiento almacenado. 5. Cree un procedimiento almacenado que permita el ingreso de datos de un empleado. El procedimiento tendrá como parámetros de entrada todos los campos de la tabla empleado. Tome en cuenta las siguientes condiciones antes de ingresar un empleado: 

El código del empleado debe ser único.



No deberá permitir ingresar empleados cuya edad sea menor a 18 años.



No deberá permitir ingresar empleados con el email repetido.



Si existieran errores se mostrarán los mensajes correspondientes.

6. Cree un procedimiento almacenado que permita actualizar el stock mínimo

de

un

producto.

El

procedimiento

tendrá

los

siguientes

parámetros de entrada: código del producto y el stock mínimo a actualizar. Considere las siguientes condiciones antes de modificar un producto: 

No permitir registrar stocks negativos.

P á g i n a | 139



Sólo puede modificarse aquellos productos con un stock actual menor a 100 unidades.



Si existieran errores se mostrarán los mensajes correspondientes.

7. Cree un procedimiento almacenado que permita eliminar un distrito. El procedimiento tendrá como parámetro de entrada el código del distrito. U distrito será eliminado siempre y cuando no esté asociado a algún empleado o cliente.

P á g i n a | 140

Estrategias Metodológicas Para desarrollar la presente unidad llevaremos a cabo

dos tipos de

actividades: 11. Lectura Inicial de Contenidos, la realizaremos de manera ordenada, presenta los aspectos teóricos. Si se presenta alguna Duda se puede realizar lecturas sobre puntos específicos en la sección de Material Complementario. 12. Actividades a Desarrollar en la Unidad, se encuentran en el apartado de Actividades, donde constan: las consignas o indicaciones.

NOTA: Recuerde que el Aula Virtual de la UCV, se empleará como medio de comunicación entre el docente y los estudiantes, para efectos de mensajería interna, foros, evaluaciones virtuales, acciones de tutoría académica y comunicación de resultados de evaluación de los aprendizajes.

Evaluación En esta Unidad Ud., será evaluado en: 15. Desarrollar un caso práctico de crear una Base de Datos para un Empresa determinada

identificando

sus

tablas

asignándole

sus

columnas

y

respectivos tipo de datos de acuerdo a la columna (atributo). 16. Crear un diagrama de base de datos, identificando las claves primarias y foráneas para cada una de las tablas. Aplicando el Modo gráfico y Código SQL Server. Es importante que Ud., este en constante comunicación con su docente Tutor, ya sea para informar de dificultades, avances de las tareas, etc. Recuerde que será calificado de acuerdo a las rúbricas de evaluación de cada actividad; por ejemplo: se le evaluará por la entrega oportuna de sus actividades.

P á g i n a | 141

Material Complementario El material complementario se suministra con la finalidad

de ampliar la

lectura de algunos textos y profundizar conocimientos. http://technet.microsoft.com/es-es/library/ms345415.aspx Tutorial para la creación de procedimientos almacenados http://www.devjoker.com/contenidos/Tutorial-de-TransactSQL/238/Procedimientos-almacenados-en-Transact-SQL.aspx Tutorial para la creación de procedimientos almacenados

[email protected] http://www.ucv.edu.pe/cis/

P á g i n a | 142

UNIDAD

PROCEDIMIENTOS ALMACENADOS

08

ESTRUCTURA DE CONTENIDOS 1. Procedimientos Almacenados 2. Procedimientos Almacenados sin Parámetros 3. Procedimientos Almacenados con Parámetros

P á g i n a | 143

Introducción

Estimado participante:

En esta oportunidad le damos la bienvenida a esta nueva unidad de aprendizaje, donde aprenderá los fundamentos necesarios para la creación de procedimientos almacenados con y sin parámetros, estos

son grupos

formados por instrucciones SQL y el lenguaje de control de flujo. Cuando se ejecuta un procedimiento, se prepara un plan de ejecución para que la subsiguiente ejecución sea muy rápida. La posibilidad de escribir procedimientos almacenados mejora notablemente la potencia, eficacia y flexibilidad de SQL. Los procedimientos compilados mejoran la ejecución de las instrucciones y lotes de SQL de forma dramática. Te deseamos éxitos en el desarrollo de esta Unidad.

!

Importante: Si deseas ahondar

más sobre

las nuevas características de

Microsoft SQL Server 2008, podrás encontrar material adicional en la sección: Material Complementario en un apartado llamado: “SQL server 2008 r2 SQL Trasact SQL“ (Gabillaud, 2009)

P á g i n a | 144

1

PROCEDIMIENTOS ALMACENADOS

SINTAXIS

Sintaxis para modificar un procedimiento almacenado:

Sintaxis para eliminar un procedimiento almacenado:

1.- Para realizar los procedimientos almacenados ingresar a Microsoft SQL Server 2008 2.- Conectar al servidor 3.-En el Explorador de objetos, expandir la Base de Datos a trabajar (Departamentos). 4.- Presionar el botón derecho en la carpeta Procedimiento almacenado, como se indica en la siguiente figura.

P á g i n a | 145

Se mostrara el siguiente código: CREATE PROCEDURE -- Add the parameters for the stored procedure here = , = AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here SELECT , END GO

Luego realizar los siguinetes ejemplos:

2

Procedimientos Almacenados Sin Parámetros

Cree un procedimiento almacenado que muestre todos los edificios. CREATE PROCEDURE LISTAR_EDIFICIOS AS Select * From EDIFICIOS --Como se aprecia, el procedimiento mostrado no tiene parámetros de entrada y --para ejecutarlo deberá usar una de las siguientes sentencias: EXECUTE LISTAR_EDIFICIOS EXEC LISTAR_EDIFICIOS

P á g i n a | 146

2

Procedimientos Almacenados con Parámetros

Cree un procedimiento almacenado que permita buscar los datos de un Usuario. El procedimiento tiene los siguientes parámetros de entrada: Nombre y Apellido Paterno. CREATE PROCEDURE BUSCAR_USUARIO @NOM_USUA varchar(25), @APEPATER_USUA varchar(25) AS Select * From USUARIO Where NOM_USUA = @NOM_USUA and APEPATER_USUA = @APEPATER_USUA Para ejecutarlo EXECUTE BUSCAR_USUARIO 'ENRIQUE','VERA' Como se aprecia el procedimiento almacenado recibe dos parámetros y realiza una búsqueda exacta dado el Nombre y Apellido del Usuario.

P á g i n a | 147

PRÁCTICA DESARROLLADA Modifique el procedimiento anterior para que la búsqueda del Usuario sea por una secuencia de caracteres y no en forma exacta. ALTER PROCEDURE BUSCAR_USUARIO @NOM_USUA

varchar(25),

@APEPATER_USUA varchar(25) AS Select * From USUARIO Where NOM_USUA like '%' + @NOM_USUA + '%' and APEPATER_USUA like '%' + @APEPATER_USUA + '%' Para ejecutarlo EXECUTE BUSCAR_USUARIO 'EN','VE' La

sentencia

ALTER

PROCEDURE

permite

modificar

el

contenido

del

procedimiento almacenado y la sentencia LIKE permite hacer la búsqueda por una secuencia de caracteres. Cree un procedimiento almacenado que muestre el código, nombre y dirección del edificio así como el código, número de ambiente y piso del departamento. El procedimiento recibirá como parámetro de entrada el código del edificio. Se debe considerar que el parámetro de entrada tendrá un valor por defecto igual a vacío. Create procedure BUSCAR_DEPARTAMENTOS @COD_EDIF char(6) = '' AS Select E.COD_EDIF, E.NOM_EDIF, E.DIRECC_EDIF, D.COD_DEP, D.NUM_AMB_DEP, D.PISO_DEP From EDIFICIOS E inner join DEPARTAMENTOS D on E.COD_EDIF = D.COD_EDIF

P á g i n a | 148

Where E.COD_EDIF = @COD_EDIF Para ejecutarlo EXECUTE BUSCAR_DEPARTAMENTOS 'E00001' En el parámetro de entrada @COD_EDIF, se ha definido un valor por defecto igual a vacío. El procedimiento almacenado tomaría este valor cuando no se defina un valor al momento de ejecutarse. EXECUTE BUSCAR_DEPARTAMENTOS Elimine el procedimiento almacenado BUSCAR_USUARIO Drop procedure BUSCAR_USUARIO

P á g i n a | 149

AUTOEVALUACIÓN UNIDAD 08 14.

Escribe una V si la proposición es verdadera o escribe F si la proposición es Falsa. a. Son grupos formados por instrucciones SQL y el lenguaje de control de flujo ...............................................................................(

)

b. Mejora notablemente la potencia, eficacia y flexibilidad de SQL ..(

)

c. El comando EXECUTE se utiliza para ejecutar un procedimiento .(

)

d. Se utiliza la instrucción CREATE STORE PROCEDURE para crear un Procedimiento Almacenado ....................................................(

)

e. Los procedimientos almacenados se ejecutan de manera instantánea .........................................................................................( f.

)

Un procedimiento almacenado se comunica con el programa que lo llama mediante sus parámetros. ............................................(

)

g. El procedimiento almacenado también puede devolver valores al programa que lo llama mediante parámetros OUTPUT ..............(

)

h. Un procedimiento almacenado puede tener hasta 2.100 parámetros, cada uno de ellos con un nombre, un tipo de datos, una dirección y un valor predeterminado. ......................................................( 15.

)

Completa los espacios en blanco con la respuesta correcta. q. Que es un Procedimiento almacenado: ________ _______________________________________________________ _______________________________________________________ r. ¿En qué consiste los procedimientos almacenado con parámetros? ______________________________________ _______________________________________________________ _______________________________________________________ s. Indique la sintaxis para modificar un procedimiento almacenado. _______________________________________________________ _______________________________________________________

P á g i n a | 150

UNIDAD

ACTIVIDAD DIDÁCTICA

08

CASO Sean la siguiente Base de Datos: TRABAJADOR (ID_T, NOMBRE, TARIFA, OFICIO, ID_SUPV) Cada fila representa un trabajador, identificado por su ID_T. Su nombre es NOMBRE; su tarifa por hora, en nuevo soles; su oficio y el identificador de su supervisor. EDIFICIO (ID_E, DIR, TIPO, CATEGORIA) Cada fila representa un edificio, que se identifica por su ID_E. Se guarda su dirección; el tipo de edificio y su categoría. ASIGNACION (ID_T, ID_E, FECHA_INICIO, NUM_DIAS) Una fila por cada vez que un trabajador es asignado a un edificio. Realizar los siguientes procedimientos almacenados con y sin parámetros: 11. Mostrar los trabajadores cuya tarifa se encuentren en un monto determinado. 12. ¿Cuáles son los oficios de los trabajadores asignados a un edificio determinado? 13. Indicar los nombres de los trabajadores con su respectivo supervisor. 14. Nombre de los trabajadores asignados a las diferentes oficinas. 15. ¿Qué trabajadores reciben una tarifa por hora determinada mayor que la de su supervisor? 16. ¿Cuántos tipos de oficios diferentes hay? 17. Para cada supervisor que supervisa a más de un trabajador, ¿cuál es la tarifa más alta que se paga a un trabajador que informa a ese SUPERVISOR? 18. Incrementar la tarifa a los trabajadores de un oficio determinado.

[email protected] http://www.ucv.edu.pe /cis/

P á g i n a | 151

UNIDAD

9

GUIA DIDÁCTICA

Fundamentación El propósito de esta unidad es introducir al estudiante el manejo de los datos de una base de datos relacional utilizando comandos TRANSACT-SQL el cual permite agrupar una serie de instrucciones como lote, ya sea de forma interactiva o desde un archivo operativo. También, se puede utilizar estructuras

de

control

de

flujo

por

Transact/SQL

para

conectar

las

instrucciones utilizando estructuras de tipo de programación. Aprenderán conceptos

a manejar la programación TRANSACT-SQL aplicando los de

disparadores

que

viene

hacer

un

tipo

especial

de

procedimientos almacenados que se ejecutan cuando se insertan, eliminan o actualizan datos de una tabla especificada, la misma que será guiada por el docente a cargo.

Capacidad El participante al final de esta unidad estará en capacidad de implementar instrucciones SQL y de programación mediante procedimientos almacenados para optimizar las operaciones en la base de datos y desencadenadores para optimizar las operaciones (insert, delete y update) de registros en una base de datos. CONTENIDOS. REGLAS Y VALIDACIÓN  Creación por diseño y código.  Importancia para la tabla y base.  Asociación con los procedimientos almacenados.  Ventajas en la seguridad de la base.  Disparadores en las operaciones básicas.

P á g i n a | 152

Actividades La actividad a desarrollar en la Unidad es Actividad:

P á g i n a | 153

Caso: ALMACEN: Cree una base de datos de nombre ALMACEN con las siguientes tablas



Cree un disparador que se active al momento de eliminar o modificar la base de datos almacén



Cree una transacción parecida al ejemplo 3 para insertar productos



Modifique el precio de 4.5 a 10 del jabón de la tabla productos, realice la sentencia que muestre la fila modificada



Cree una transacción que dado un código de producto, cantidad, código de pedido y fecha de pedido, ingrese esos campos en la tabla pedido y luego busque ese producto en la tabla productos donde disminuya la existencia del producto

Ejemplo Cantidad=20

código='prod01'

fecha='2010-02-02'

pedido=1

La existencia actual del prod01 es 100, cuando se realice esa inserción, se deberá actualizar a 80, al final de la transacción imprimir un mensaje que indique el total del pedido, multiplicando el precio del producto por la cantidad del pedido.

P á g i n a | 154

Estrategias Metodológicas Para desarrollar la presente unidad llevaremos a cabo

dos tipos de

actividades: 13. Lectura Inicial de Contenidos, la realizaremos de manera ordenada, presenta los aspectos teóricos. Si se presenta alguna Duda se puede realizar lecturas sobre puntos específicos en la sección de Material Complementario. 14. Actividades a Desarrollar en la Unidad, se encuentran en el apartado de Actividades, donde constan: las consignas o indicaciones.

NOTA: Recuerde que el Aula Virtual de la UCV, se empleará como medio de comunicación entre el docente y los estudiantes, para efectos de mensajería interna, foros, evaluaciones virtuales, acciones de tutoría académica y comunicación de resultados de evaluación de los aprendizajes.

Evaluación En esta Unidad Ud., será evaluado en: 17. Desarrollar un caso práctico de crear una Base de Datos para un Empresa determinada

identificando

sus

tablas

asignándole

sus

columnas

y

respectivos tipo de datos de acuerdo a la columna (atributo). 18. Crear un diagrama de base de datos, identificando las claves primarias y foráneas para cada una de las tablas. Aplicando el Modo gráfico y Código SQL Server. Es importante que Ud., este en constante comunicación con su docente Tutor, ya sea para informar de dificultades, avances de las tareas, etc. Recuerde que será calificado de acuerdo a las rúbricas de evaluación de cada actividad; por ejemplo: se le evaluará por la entrega oportuna de sus actividades.

P á g i n a | 155

Material Complementario El material complementario se suministra con la finalidad

de ampliar la

lectura de algunos textos y profundizar conocimientos. http://technet.microsoft.com/es-es/library/ms189799.aspx Tutorial para la creación de Trigger.

http://www.devjoker.com/contenidos/catss/292/Transacciones-en-Transact-SQL.aspx Tutorial de Transact SQL

[email protected] http://www.ucv.edu.pe/cis/

P á g i n a | 156

UNIDAD

REGLAS Y VALIDACIÓN

9

ESTRUCTURA DE CONTENIDOS

1.

Reglas y Validación

2.

Creación por diseño y código.

3.

Importancia para la tabla y base.

4.

Asociación con los procedimientos almacenados.

5.

Ventajas en la seguridad de la base.

6.

Disparadores en las operaciones básicas.

P á g i n a | 157

Introducción

Estimado participante:

En esta oportunidad le damos la bienvenida a esta nueva unidad de aprendizaje, donde aprenderá los fundamentos necesarios para la creación de disparadores (trigger

o

desencadenador)

es

una

clase

especial

de

procedimiento almacenado que se ejecuta automáticamente cuando se produce un evento en el servidor de bases de datos Te deseamos éxitos en el desarrollo de esta Unidad.

Importante:

!

Si deseas ahondar más sobre las nuevas características de Microsoft SQL Server 2008, podrás encontrar material adicional en la sección: Material Complementario en un apartado llamado: “SQL server 2008 r2 SQL Trasact SQL“ (Gabillaud, 2009)

P á g i n a | 158

2

PROCEDIMIENTOS ALMACENADOS

SINTAXIS CREATE TRIGGER ON DATABASE FOR AS BEGIN END Luego realziar los siguientes ejemplos: A continuación se muestra un ejemplo sencillo. Este disparador imprime un mensaje cada vez que alguien trata de insertar, eliminar o actualizar datos de la tabla Usuario CREATE TRIGGER TX_USUARIO ON USUARIO FOR INSERT, UPDATE, DELETE AS PRINT 'UD. ACABA DE MODIFICAR VALORES EN LA TABLA USUARIO' Para modificar el trigger, se utiliza la siguiente sintaxis:

ALTER TRIGGER TX_USUARIO ON USUARIO FOR INSERT, UPDATE, DELETE AS PRINT 'UD. ACABA DE MODIFICAR LOS DATOS DEL USUARIO' Para borrar un trigger, se utiliza la siguiente sintaxis: DROP TRIGGER TX_USUARIO Funcionamiento de los Disparadores: Ejemplo de Disparador de Inserción Cuando se inserta una nueva fila en una tabla, SQL Server inserta los nuevos valores en la tabla INSERTED el cual es una tabla del sistema. Está tabla tómala misma estructura del cual se originó el Trigger, de tal manera que se pueda verificar los datos y ante un error podría revertirse los cambios. Cree un Trigger que permita insertar los datos de un Usuario siempre y cuando el nombre y apellido paterno del usuario sean únicos CREATE TRIGGER TX_USUARIO_INSERTA ON USUARIO FOR INSERT AS IF (Select count (*)

P á g i n a | 159

From INSERTED, USUARIO Where INSERTED.NOM_USUA = USUARIO.NOM_USUA AND INSERTED.APEPATER_USUA =USUARIO.APEPATER_USUA) > 1 Begin Rollback transaction Select 'El Usuario existe en la base de datos, por favor verifique sus datos' End Else Select 'El Usuario fue ingresado en la base de datos' En este ejemplo, verificamos el número de usuarios que tienen el mismo nombre y apellido y de encontrarse más de un usuario no se deberá permitir ingresar los datos del usuario. Este disparador imprime un mensaje si la inserción se revierte y otro si se acepta. Ejemplo de Disparador de Eliminación Cuando se elimina una fila de una tabla, SQL Server inserta los valores que fueron eliminados en la tabla DELETED el cual es una tabla del sistema. Está tabla toma la misma estructura del cual se originó el Trigger, de tal manera que se pueda verificar los datos y ante un error podría revertirse los cambios. En este caso la reversión de los cambios significará restaurar los datos eliminados. Cree un Trigger el cual permita eliminar Inquilinos cuyo haber básico sea menor a 400 soles. De eliminarse algún inquilino que no cumpla con dicha condición la operación no deberá ejecutarse. CREATE TRIGGER TX_INQUILINO_ELIMINA ON INQUILINO FOR Delete AS IF (select HABER_BAS_INQ from deleted ) > 400 Begin Rollback transaction print 'El Haber Básico del Inquilino debe ser menor a 400 soles' End En este ejemplo, verificamos el haber básico del inquilino y de superar los 400 soles la operación deberá ser cancelada.

Ejemplo de Disparador de Actualización

P á g i n a | 160

Cuando se actualiza una fila de una tabla, SQL Server inserta los valores que antiguos en la tabla DELETED y los nuevos valores los inserta en la tabla INSERTED. Usando estas dos tablas se podrá verificar los datos y ante un error podrían revertirse los cambios. Cree un Trigger que valide que la fecha de nacimiento de un Usuario no sea mayor a 1990. CREATE TRIGGER TX_USUARIO_ACTUALIZA ON USUARIO FOR UPDATE AS If (Select year(FEC_NAC_USUA) From Inserted) > 1990 Begin -- Mostrar los Datos Select year(dt_fechanacimiento) as fecha_anterior From deleted Select year(dt_fechanacimiento) as fecha_nueva From Inserted Rollback transaction print 'La fecha de nacimiento debe ser menor a 1990' End RESTRICCIONES DE LOS DISPARADORES A continuación, se describen algunas limitaciones o restricciones impuestas a los disparadores por SQL Server: • Una tabla puede tener un máximo de tres disparadores: uno de actualización, uno de inserción y uno de eliminación. • Cada disparador puede aplicarse a una sola tabla. Sin embargo, un mismo disparador se puede aplicar a las tres acciones del usuario: Update, Insert y Delete. • No se puede crear un disparador en una vista ni en una tabla temporal, aunque los disparadores pueden hacer referencia a las vistas o tablas temporales. • Los disparadores no se permiten en las tablas del sistema. Aunque no aparece ningún mensaje de error su crea un disparador en una tabla del sistema, el disparador no se utilizará.

P á g i n a | 161

PRÁCTICA DESARROLLADA En la base de datos VENTAS: 1.- Cree un Trigger que elimine en cascada una boleta y su detalle. CREATE TRIGGER TX_BOLETA_ELIMINAR ON BOLETA INSTEAD OF DELETE AS DECLARE @BOLETA CHAR (5) --SE OBTIENE EL CÓDIGO DE LA BOLETA QUE SE HA ELIMINADO SELECT @BOLETA=COD_BOL FROM DELETED --SE VERIFICA SI LA BOLETA TIENE DETALLE IF ( SELECT COUNT (*) FROM DETALLEBOLETA WHERE COD_BOL=@BOLETA) > 0 BEGIN -- SE ELIMINA EL DETALLE DE LA BOLETA DELETE DETALLEBOLETA WHERE COD_BOL=@BOLETA /*SE ELIMINA LA CABECERA.. ESTO SE HACE PUESTO QUE AL HABER DECLARADO EL TRIGGER DEL TIPO INSTEAD OF, ES DECIR, QUE EL DELETE EN LA TABLA BOLETA NO SE EJECUTA DE FORMA NORMAL. POR LO TANTO, HAY QUE FORZAR LA ELIMINACIÓN. */ DELETE BOLETA WHERE COD_BOL=@BOLETA PRINT 'BOLETA SE ELIMINÓ SATISFACTORIAMENTE' END ELSE -- SE ELIMINA SOLAMENTE LA CABECERA DELETE BOLETA WHERE COD_BOL=@BOLETA PRINT 'BOLETA ELIMINADA CARECE DE DETALLE' /*EL TRIGGER INSTEAD OF DELETE PUEDE SER USADO PARA REEMPLAZAR LA ACCIÓN REGULAR DE LA SENTENCIA DELETE SOBRE UNA TABLA O UNA VISTA. */ PRUEBA DEL TRIGGER EJECUTAR LO SIGUENTE: DELETE BOLETA WHERE COD_BOL='BOL777' 2.- Crear un disparador que impida la eliminación de un empleado que haya emitido boletas. 3.- Agregue en la tabla Boleta el campo total. Luego, cree un disparador que actualice el campo total por el cálculo del monto total a pagar en una boleta. Este disparador se ejecutara el tratar de insertar un registro en la tabla boleta.

P á g i n a | 162

AUTOEVALUACIÓN UNIDAD 09 Completa los espacios en blanco con la respuesta correcta. t. Que es un Trigger: ________ _______________________________________________________ _______________________________________________________ u. Indique la sintaxis para modificar un Trigger. _______________________________________________________ _______________________________________________________ _______________________________________________________ v. Explique la diferencia entre un procedimiento Almacenado y un Trigger _______________________________________________________ _______________________________________________________ _______________________________________________________ w. Mencionar las restricciones que se presentan al trabajar con Trigger _______________________________________________________ _______________________________________________________

P á g i n a | 163

UNIDAD

9

ACTIVIDAD CASO Sean la siguiente Base de Datos: TRABAJADOR (ID_T, NOMBRE, TARIFA, OFICIO, ID_SUPV)

Cada fila representa un trabajador, identificado por su ID_T. Su nombre es NOMBRE; su tarifa por hora, en nuevo soles; su oficio y el identificador de su supervisor. EDIFICIO (ID_E, DIR, TIPO, CATEGORIA) Cada fila representa un edificio, que se identifica por su ID_E. Se guarda su dirección; el tipo de edificio y su categoría. ASIGNACION (ID_T, ID_E, FECHA_INICIO, NUM_DIAS) Una fila por cada vez que un trabajador es asignado a un edificio. Realizar los siguientes procedimientos Triggers: 19. Cree un disparador que se active al momento de eliminar o modificar la base de

datos almacén

20.Cree un TRIGGER el cual permita eliminar los trabajadores que no han sido asignados a ningún edificio. De eliminarse algún Trabajador que no cumpla con dicha condición la operación no deberá ejecutarse. 21. Cree un TRIGGER que valide la tarifa por hora de un trabajador, donde dichos datos sean mayores a cero.

[email protected] http://www.ucv.edu.pe/cis/

P á g i n a | 164

UNIDAD

10

GUIA DIDÀCTICA Fundamentación

La finalidad de esta unidad está orientado a que el alumno frente a una determinada situación informática, analice y desarrolle una solución sólida, óptima; en base a los requerimientos del usuario. A su vez está orientado al estudio y conocimiento de la plataforma de desarrollo .Net , específicamente Visual Basic.NET 2010 para la elaboración aplicaciones de escritorio que interactúen con el administrador de base de datos SQL 2008 R2 en función al lenguaje TRANSACT SQL manejando Procedimientos Almacenados. Además, conocer el entorno de del Lenguaje de Programación Visual Basic .Net 2010 dicha herramienta proporciona al alumno realizar soluciones informáticas en diversos medios empresariales. De esta manera, mejorar la productividad del desempeño profesional que responda a las exigencias del entorno

Capacidad El participante al final de esta unidad estará en capacidad de: 

Proporcionar los conocimientos y prácticas necesarias para afrontar situaciones en los cuales se requiere el análisis del alumno para dar una solución acorde con el problema.



Proporcionar

conocimientos

necesarios

para

afrontar

casos

de

programación con alto grado de dificultad. 

Manejo del Lenguaje Transact SQL, utilizando para ello el administrador de datos SQL Server 2008 r2.



Manejo de la plataforma de desarrollo Visual Basic .Net 2010,

para el

desarrollo de aplicaciones. CONTENIDO PROYECTO ESTANDAR PARA TABLAS  Crear y diseñar una interfaz visual.  Aplicar controles de ingreso. Validación.  Conectividad. Entorno de datos.  Conectividad. Código y colecciones de datos.

P á g i n a | 165

Actividades La actividades a desarrollar en la Unidad son 

Manejo de Controles y entorno .NET



Conexión

a

base

de

datos

de

manera

conectada

y

desconectada(temporal) utilizando la librería System Data SqlClient 

Creación de formularios MDI.



Creación de Formularios hijos.



Manejo de Controles.



Ejecución de Procedimientos almacenados desde .NET



Programación de procesos básicos: Nuevo, Modificar, eliminar, Grabar y cancelar.

Estrategias Metodológicas Para desarrollar la presente unidad llevaremos a cabo

dos tipos de

actividades: 15. Lectura Inicial de Contenidos, la realizaremos de manera ordenada, presenta los aspectos teóricos. Si se presenta alguna Duda se puede realizar lecturas sobre puntos específicos en la sección de Material Complementario. 16. Actividades a Desarrollar en la Unidad, se encuentran en el apartado de Actividades, donde constan: las consignas o indicaciones.

NOTA: Recuerde que el Aula Virtual de la UCV, se empleará como medio de comunicación entre el docente y los estudiantes, para efectos de mensajería interna, foros, evaluaciones virtuales, acciones de tutoría académica y comunicación de resultados de evaluación de los aprendizajes.

P á g i n a | 166

Evaluación En esta Unidad Ud., será evaluado en: 19. Desarrollar un caso práctico de conexión de una Base de Datos con el Lenguaje de Programación Visual Basic .Net 2010. 20. Diseñar su aplicación de acuerdo al caso propuesto y mostrar los datos de las tablas creadas en la Base de Datos. Es importante que Ud., este en constante comunicación con su docente Tutor, ya sea para informar de dificultades, avances de las tareas, etc. Recuerde que será calificado de acuerdo a las rúbricas de evaluación de cada actividad; por ejemplo: se le evaluará por la entrega oportuna de sus actividades.

Material Complementario El material complementario se suministra con la finalidad

de ampliar la

lectura de algunos textos y profundizar conocimientos. http://msdn.microsoft.com/es-es/library/k3bb4tfd%28v=vs.100%29.aspx

Tutorial Visual Basic Net 2010.

[email protected] http://www.ucv.edu.pe/cis/

P á g i n a | 167

UNIDAD

PROYECTO ESTANDAR PARA TABLAS

10

PROYECTO ESTANDAR PARA TABLAS  Crear y diseñar una interfaz visual.  Aplicar controles de ingreso. Validación.  Conectividad. Entorno de datos.  Conectividad. Código y colecciones de datos

P á g i n a | 168

Introducción

Estimado participante:

En esta oportunidad le damos la bienvenida a esta nueva unidad de aprendizaje, donde aprenderá los fundamentos necesarios para la creación de Aplicaciones de Escritorio, enlazadas con una base de datos, utilizando las herramientas como el Manejador de Base de Datos SQL Server 2008 r2 y el Lenguaje de Programación Visual Basic .Net 2010 Te deseamos éxitos en el desarrollo de esta Unidad.

Importante:

!

Si deseas ahondar más sobre las nuevas características de Microsoft Visual Basic: Net

2010,

podrás

encontrar

material

adicional

en

la

sección:

Material

Complementario.

P á g i n a | 169

10

PROYECTO ESTANDAR PARA TABLAS

Desde el botón "Iniciar" - "Todos los programas" podremos ver el grupo de programas "Microsoft Visual Studio 2010":

CLICK

Tras

iniciar

por

primera

vez

Microsoft

Visual

Studio

2010

Ultimate,

seleccionaremos la configuración de entorno predeterminada, por ejemplo "Configuración de desarrollo de Visual Basic": NOTA: En caso de que esta configuración se haga de forma inadecuada o mal indicada; después de la instalación, podemos cambiar dicha configuración dirigiéndonos

al

Menú

Herramientas/Importar

y

Exportar

configuraciones /Restablecer todas las configuraciones, y desde ahí volver a configurar el modo sobre Configuración de desarrollo de Visual Basic.

P á g i n a | 170

Y ya podremos disponer de este entorno de programación que nos permitirá crear un nuevo proyecto. Creando un proyecto para Visual Basic .Net Para crear un proyecto en vb.net 2010 es necesario activar Nuevo Proyecto de la primera pantalla que aparece al usar la herramienta Visual Studio 2010:

En la ventana emergente que aparece es necesario seleccionar la opción Visual Basic /Windows, del árbol de selección de la parte izquierda, y paso seguido la opción Aplicación de Windows Form. Luego se asigna un nombre al nuevo proyecto en el campo de Nombre en la parte inferior de la ventana y se oprime el botón Aceptar.

El entorno de Visual Basic .Net Descripción de la interfaz gráfica de vb.net 2010:

A Menú: en esta barra se encuentra los menús de acceso a todas las funcionalidades de vb.net. B Estándar: en esta barra se puede acceder a botones de edición (copiar, pegar, cortar, deshacer, rehacer) y acciones de ejecución y depuración, a su vez muestra botones para administración de las ventanas emergentes del vb.net. C Diseño: en esta barra se encuentran los botones para ayuda de diseño de interfaz gráfica, los cuales se habilitan según los objetos que se estén visualizando en modo diseño.

P á g i n a | 171

Explorador de Soluciones Esta ventana se encuentra a la parte derecha del entorno grafico de .Net, aquí se muestran todos los objetos que hacen parte del proyecto abierto (formularios, recursos, reportes, imágenes, clases, módulos, etc…).

Nota: Es importante que en esta sección debamos hacer clic a Form1.vb y cambiar el Nombre de Archivo: frmPrincipal.vb Ventana de propiedades

En esta ventana se encuentra el listado de todas las propiedades de los objetos del proyecto como son formularios,

botones,

textbox,

labels, etc.

P á g i n a | 172

Caja de herramientas

En

esta

caja

de

herramientas se encuentran todos los controles que se pueden utilizar en nuestros proyectos,

estos

encuentran

debidamente

organizados

según

características

se sus

(todos

los

controles,

controles

comunes,

contenedores,

menús,

datos,

componentes,

impresión,

diálogos, entre otros).

2.4.5. Modo Diseño En este modo se visualiza el editor de diseño, el cual permite generar una interfaz gráfica de Usuario al gusto de cada programador, en este modo se puede acceder a controles de tipo grafico como son los TextBox, Labels, Checkbox, entre otros. Para acceder al modo diseño oprima las Teclas (Shift + F7)

P á g i n a | 173

2.4.6. Modo Código En este entorno se digita y codifican todos los algoritmos y procedimientos necesarios para la ejecución de nuestro programa. Dentro de este modo se pueden acceder a objetos y controles únicos del tipo Código, como son los Módulos, Códigos de Clases, entre otros. Para acceder al modo Código oprima la Tecla ( F7 ) u oprima Click + Der sobre el formulario y seleccione la opción ver Código.

Guardando un Proyecto Cuando se está trabajando con un solo proyecto nuevo es recomendable que antes de ingresar código se pueda guardar dicho proyecto para lo cual deberemos dirigirnos al Menú Archivo / Guardar todo (Ctrl + Shift + S). Una ventaja que nos da Visual Studio, es la de generar un directorio para guardar los respectivos archivos que genera un proyecto… ya que este al tener cantidad de archivos por manejar una interfaz, deben ser centralizados en un solo sitio, por ende se muestra el siguiente formulario:

Aquí vemos que ya tenemos el nombre del proyecto asignado en un principio, pero en su Ubicación debemos indicar un sitio o directorio donde se generará la solución agregamos, por ello es necesario que siempre este activo el check: Posteriormente, deberemos presionar el botón Guardar

P á g i n a | 174

CREACIÓN DE UNA NUEVA SOLUCIÓN Deberá ir al Menú Archivo, luego en Nuevo Proyecto (ó pulse las telas CTRL + N), a continuación nos mostrará la siguiente ventana: Considere lo siguiente: 1. Tipo de Proyecto: Visual Basic. 2. Plantilla: Aplicación de Windows. 3. Luego escriba el nombre de la aplicación: SISVENTAS 4. Especifique la carpeta donde se guardará el proyecto (ésta deberá ser una carpeta creada por usted, use el botón Examinar para localizar su carpeta personal) 5. Hacer clic en el botón Aceptar para crear el proyecto. SUGERENCIA: Una vez creado nuestro proyecto SISVENTAS, se sugiere crear carpetas para

guardar los diferentes elementos del sistema de forma

ordenada, para ello siga los siguientes pasos en el Explorador de Soluciones.

P á g i n a | 175

ESTABLECER LA CONEXIÓN A UN ORIGEN DE DATOS DETERMINADO (CONNECTION) Establece una conexión a un origen de datos determinado. Para nuestro caso crearemos el objeto Connection en un módulo. 

Haga clic en el menú PROYECTO



Luego seleccione con un clic en la opción AGREGAR NUEVO ELEMENTO



Se presenta una ventana de dialogo seleccione

MODULO y escriba el

nombre: MODCONEXION luego clic en el botón AGREGAR. 

Seguidamente se presentará una ventana en blanco para la codificación del módulo correspondiente.

ESCRIBA EL SIGUIENTE CÓDIGO EN EL MODULO: Imports System.Data.SqlClient Module modConexion Public Conexion As SqlConnection = _ New SqlConnection("Data Source=(local); user id=sa; password=; Initial Catalog=ventasM;") End Module Dónde: DATA SOURCE Ó SERVER Inicial Catalog ó

NOMBRE DEL SERVIDOR DE BASE DE DATOS. Nombre de la base de datos a la que se va a conectar

Database User ID

Nombre de usuario de una cuenta registrada en SQL Server

Password ó Pwd

Contraseña de inicio de sesión para una cuenta de SQL Server

P á g i n a | 176

ACCEDER A DATOS DE UNA TABLA – VISUALIZACIÓN Para empezar a trabajar con los objetos Connection, DataAdapter y DataSet deberá agregar un formulario y guardarlo con el nombre de FrmVisualizarArticulo, éste deberá tener la siguiente apariencia:

Imports System.Data Imports System.Data.SqlClient Public Class FrmVisualizarArticulo Dim daArticulo As SqlDataAdapter 'objeto Adaptador de datos Dim ds As New DataSet 'objeto Conjunto de datos Private Sub FrmVisualizarArticulo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Conexion.Open() ' Creando el Adaptador de datos daArticulo = New SqlDataAdapter("select * from Producto", modConexion.Conexion) ' Cargando datos en el dataset daArticulo.Fill(ds, "Articulo") ' Cerrando la conexión Conexion.Close() ' Enlazando los controles TextBox al campo correspondiente

P á g i n a | 177

Me.TextBox1.DataBindings.Add("Text", ds, "Articulo.IdProducto") Me.TextBox2.DataBindings.Add("Text", ds, "Articulo.Nombre") Me.TextBox3.DataBindings.Add("Text", ds, "Articulo.StockActual") Me.TextBox4.DataBindings.Add("Text", ds, "Articulo.PrecioVenta") ' Enlazando el control DataGrid Me.DataGridView1.DataSource = ds Me.DataGridView1.DataMember = "Articulo" Me.DataGridView1.ReadOnly = True ' Mostrando el 1er. registro 'NumRegistro(0) ' Estableciendo el maximo del control TrackBar ' igual al número de registros de la tabla articulos Me.TrackBar1.Maximum = ds.Tables("Articulo").Rows.Count - 1 End Sub Private Sub NumRegistro(ByVal fila As Integer) Dim total As Integer ' Mostrará el registro en una posición que tenga la var. fila Me.BindingContext(ds, "Articulo").Position = fila ' total de registros en la tabla artículos total = ds.Tables("Articulo").Rows.Count Me.lblPosicion.Text = "Articulo: " & Str(fila + 1) & " de " & Str(total) End Sub Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click Dim strDato As String Dim fila As Integer ' Trabjando con un DataView Dim dv As New DataView strDato = InputBox("Ingrese codigo del Artículo: ", "Buscar") dv.Table = ds.Tables("Articulo") dv.Sort = "IdProducto" fila = dv.Find(strDato) If fila = -1 Then MessageBox.Show("Codigo del Artículo no Existe", "Cuidado") Exit Sub End If

P á g i n a | 178

NumRegistro(fila) End Sub Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll Try NumRegistro(TrackBar1.Value) Catch ex As System.Exception MessageBox.Show(ex.Message) End Try End Sub End Class MÉTODO 2: UTILIZANDO OBJETOS DATAROW Imports System.Data Imports System.Data.SqlClient ' Esto va la sección declaraciones Public Class FrmVisualizarArticulo Dim daArticulo As SqlDataAdapter 'objeto Adaptador de datos Dim ds As New DataSet ' Objeto Conjunto de datos Dim dr As DataRow ' Objeto DataRow Private Sub frmVisCargo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Conexion.Open() ' Creando el Adaptador de datos daArticulo = New SqlDataAdapter("select * from Producto", modConexion.Conexion) ' Cargando datos en el dataset daArticulo.Fill(ds, "Articulo") ' Cerrando la conexión Conexion.Close() ' Enlazando el control DataGrid Me.DataGridView1.DataSource = ds Me.DataGridView1.DataMember = "Articulo" Me.DataGridView1.ReadOnly = True ' Mostrando el 1er. registro

P á g i n a | 179

CargarDatos(0) ' Estableciendo el maximo del control TrackBar ' igual al número de registros Me.TrackBar1.Maximum = ds.Tables("Articulo").Rows.Count - 1 End Sub Private Sub CargarDatos(ByVal fila As Integer) Dim total As Integer Try ' Para mostarar la posicion Me.BindingContext(ds, "Articulo").Position = fila ' total de registros en la tabla artículos total = ds.Tables("Articulo").Rows.Count Me.lblPosicion.Text = "Articulo: " & Str(fila + 1) & " de " & Str(total) ' Asignando un fila de datos "Registro" al DataRow dr = ds.Tables("Articulo").Rows(fila) ' Mostrando los datos desde el datarow TextBox1.Text = dr("IdProducto") TextBox2.Text = dr("Nombre") TextBox3.Text = dr("StockActual") TextBox4.Text = dr("PrecioVenta") Catch exc As Exception MessageBox.Show(exc.Message) End Try End Sub Private Sub TrackBar1_Scroll1(ByVal sender As Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll Try CargarDatos(TrackBar1.Value) Catch ex As System.Exception MessageBox.Show(ex.Message) End Try End Sub Private Sub btnBuscar_Click1(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBuscar.Click

P á g i n a | 180

Dim strDato As String Dim fila As Integer ' Trabjando con un DataView Dim dv As New DataView strDato = InputBox("Ingrese codigo del Artículo: ", "Buscar") dv.Table = ds.Tables("Articulo") dv.Sort = "IdProducto" fila = dv.Find(strDato) If fila = -1 Then MessageBox.Show("Codigo del Artículo no Existe", "Cuidado") Exit Sub End If CargarDatos(fila) End Sub End Class

P á g i n a | 181

PRÁCTICA DESARROLLADA Ingrear a Visual Basic .net y diseñar un formulario el cual permitira desplazarnos a traves de los diferentes registros de una tabla determinada. Colocar en el cuadro de herramientas y colocar en el formulario los siguientes controles: 4 5 4 1

Labels TextBox Button GroupBox

Terminado el diseño, presionar la tecla F7 para ingrear a la ventana de codigo y digitar el siguiente código Public Class desplazamiento 'Inherits System.Windows.Forms.Form Private dw As DataView Private WithEvents cmr As CurrencyManager Const CadConex As String = "Data Source=MARTINPC\SQLEXPRESS;Initial Catalog=EMPLEADO;Integrated Security=True" Private Sub desplazamiento_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim CN As New SqlConnection(CadConex) Dim DA As New SqlDataAdapter("Select * From EMPLEADO", CN) Dim Ds As New DataSet() DA.Fill(Ds, "Empleado") dw = Ds.Tables(0).DefaultView Enlazardatos() End Sub Private Sub Enlazardatos() Codigo.DataBindings.Add("Text", dw, "IdEmpleado") Nombre.DataBindings.Add("Text", dw, "Nombre") ApellPat.DataBindings.Add("Text", dw, "Apellidos") ApellMat.DataBindings.Add("Text", dw, "Direccion") cmr = Me.BindingContext(dw) End Sub Private Sub cmr_PositionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmr.PositionChanged lblPosicion.Text = cmr.Position + 1 & " de " & cmr.Count

P á g i n a | 182

End Sub Private Sub btnPrimero_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrimero.Click cmr.Position = 0 End Sub Private Sub btnAnterior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnterior.Click If cmr.Position > 0 Then cmr.Position -= 1 End Sub Private Sub btnSgte_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSgte.Click If cmr.Position < cmr.Count Then cmr.Position += 1 End Sub Private Sub btnUltimo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUltimo.Click cmr.Position = cmr.Count End Sub End Class Ingrear a Visual Basic .net y diseñar un formulario el cual permitira otorgar acceso a un usuario determinado.

Terminado el diseño, presionar la tecla F7 para ingrear a la ventana de codigo y digitar el siguiente código

Imports System.Data.SqlClient Public Class LoginForm1 'Public strConn As String = "Data Source=.;Initial Catalog=bdVentas;Integrated Security=True"

P á g i n a | 183

Public veces As Integer = 0 Public intentos As Integer = 3 Dim Cnn As SqlConnection Public ob As New Menu Dim Dr As SqlDataReader Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click If comprobarUsuario(UsernameTextBox.Text, PasswordTextBox.Text) = False Then veces = veces + 1 If veces < intentos Then MsgBox("Usuario y contraseña incorecto", MsgBoxStyle.Information) UsernameTextBox.Clear() PasswordTextBox.Clear() UsernameTextBox.Focus() Exit Sub Else End End If End If Me.Close() End Sub Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click ob.Close() Dim r As Integer r = MessageBox.Show("¿Desea Salir del Sistema?", "Mensaje", MessageBoxButtons.YesNo, MessageBoxIcon.Question) If r = 6 Then End End If End Sub Private Function comprobarUsuario(ByVal usua As String, ByVal contr As String) As Boolean Try Dim comando As SqlCommand Cnn = New SqlConnection Cnn.ConnectionString = My.Settings.Settings Cnn.Open() Dim sql As String sql = "SELECT COUNT(*),Nom_Usua,Apell_Usua FROM T_Usuario WHERE Usuario = '" & usua & " ' AND Clave = '" & contr & "' Group By Nom_Usua,Apell_Usua"

P á g i n a | 184

comando = Cnn.CreateCommand comando.CommandText = sql Dr = comando.ExecuteReader If Dr.Read Then nombre = Dr("Nom_Usua") apellido = Dr("Apell_Usua") End If Dr.Close() Dim t As Integer = CInt(comando.ExecuteScalar()) If t = 0 Then Return False End If Return True Catch exx As SqlException MsgBox(exx.Message) Catch ex As Exception MsgBox(ex.Message) Finally Cnn.Close() End Try End Function End Class

P á g i n a | 185

AUTOEVALUACIÓN UNIDAD 10 Completa los espacios en blanco con la respuesta correcta. x. Que es un Mantenedor: ________ _______________________________________________________ _______________________________________________________ y. Cuál es la importancia del Lenguaje Visual Basic .Net _______________________________________________________ _______________________________________________________ _______________________________________________________ z. Para qué sirve un modulo _______________________________________________________ _______________________________________________________ _______________________________________________________ aa.

Qué ventajas ofrece el ADO.net

_______________________________________________________ _______________________________________________________

P á g i n a | 186

UNIDAD

ACTIVIDAD DIDÁCTICA

10

Diseñar una aplicación utilizando la Base de Datos BDBancos, trabajada en sesiones anteriores. Agregar al Formulario dos DatagridView, un ListBox y tres Labels

Mostrar en el ListBox los tipos de cuentas

Luego, listando todos los clientes por tipo de Cuenta seleccionada.

P á g i n a | 187

Como resultado mostrando los movimientos realizados por cliente seleccionado

[email protected] http://www.ucv.edu.pe/cis/

P á g i n a | 188

UNIDAD

11

GUIA DIDACTICA Fundamentación

La finalidad de esta unidad está orientado a que el alumno frente a una determinada situación informática, analice y desarrolle una solución sólida, óptima; en base a los requerimientos del usuario. Con el lenguaje Visual Basic.NET 2010 permite la creación de aplicaciones de escritorio que interactúen con el administrador de base de datos SQL 2008 R2 en

función

al

lenguaje

TRANSACT

SQL

empleando

Procedimientos

Almacenados, vistas y consultas. Este Software proporciona al alumno las herramientas necesarias para realizar aplicaciones informáticas en diversos medios empresariales. De esta manera, mejorar la productividad del desempeño profesional que responda a las exigencias del entorno

Capacidad El participante al final de esta unidad estará en capacidad de: 

Proporcionar los conocimientos y prácticas necesarias para afrontar situaciones en los cuales se requiere el análisis del alumno para dar una solución acorde con el problema.



Proporcionar

conocimientos

necesarios

para

afrontar

casos

de

programación con alto grado de dificultad. 

Manejo del Lenguaje Transact SQL, utilizando para ello el administrador de datos SQL Server 2008 r2.

CONTENIDO PROYECTO ESTANDAR PARA TABLAS 1. Programación Tres Capas. 2. Visualización de los datos de una tabla en el formulario mediante un DataGridView. 3. Visualización de los datos de una tabla en el formulario mediante controles TextBox.

P á g i n a | 189

Actividades La actividades a desarrollar en la Unidad son 

Manejo de Controles y entorno Visual Basic .NET



Diseño de formularios.



Identifica de eventos.



Emplea Propiedades y variables



Manejo de Controles.



Control de errores.

Estrategias Metodológicas Para desarrollar la presente unidad llevaremos a cabo

dos tipos de

actividades: 17. Lectura Inicial de Contenidos, la realizaremos de manera ordenada, presenta los aspectos teóricos. Si se presenta alguna Duda se puede realizar lecturas sobre puntos específicos en la sección de Material Complementario. 18. Actividades a Desarrollar en la Unidad, se encuentran en el apartado de Actividades, donde constan: las consignas o indicaciones.

NOTA: Recuerde que el Aula Virtual de la UCV, se empleará como medio de comunicación entre el docente y los estudiantes, para efectos de mensajería interna, foros, evaluaciones virtuales, acciones de tutoría académica y comunicación de resultados de evaluación de los aprendizajes.

P á g i n a | 190

Evaluación En esta Unidad Ud., será evaluado en: 21. Desarrollar un caso práctico de conexión de una Base de Datos con el Lenguaje de Programación Visual Basic .Net 2010. 22. Diseñar su aplicación de acuerdo al caso propuesto y mostrar los datos de las tablas creadas en la Base de Datos. Es importante que Ud., este en constante comunicación con su docente Tutor, ya sea para informar de dificultades, avances de las tareas, etc. Recuerde que será calificado de acuerdo a las rúbricas de evaluación de cada actividad; por ejemplo: se le evaluará por la entrega oportuna de sus actividades.

Material Complementario El material complementario se suministra con la finalidad

de ampliar la

lectura de algunos textos y profundizar conocimientos. http://msdn.microsoft.com/es-es/library/k3bb4tfd%28v=vs.100%29.aspx

Tutorial Visual Basic Net 2010.

[email protected] http://www.ucv.edu.pe/cis/

P á g i n a | 191

UNIDAD

PROYECTO ESTANDAR PARA TABLAS

11

PROYECTO ESTANDAR PARA TABLAS 1. Programación Tres Capas. 2. Visualización de los datos de una tabla en el formulario mediante un DataGridView. 3. Visualización de los datos de una tabla en el formulario mediante controles TextBox.

P á g i n a | 192

Introducción

Estimado participante:

En esta oportunidad le damos la bienvenida a esta nueva unidad de aprendizaje, donde aprenderá los fundamentos necesarios para la creación de Aplicaciones de Escritorio, enlazadas con una base de datos, utilizando las herramientas como el Manejador de Base de Datos SQL Server 2008 r2 y el Lenguaje de Programación Visual Basic .Net 2010 Te deseamos éxitos en el desarrollo de esta Unidad.

Importante:

!

Si deseas ahondar más sobre las nuevas características de Microsoft Visual Basic: Net

2010,

podrás

encontrar

material

adicional

en

la

sección:

Material

Complementario.

P á g i n a | 193

1

PROGRAMACIÓN TRES CAPAS.

La programación en 3 capas es una metodología de programación en la cual establecemos niveles de acceso y distribuimos las aéreas de nuestra aplicación para acceder a bases de datos, esto tiene cierta jerarquía de acuerdo al nivel de acceso, en donde la capa superior que es la interfaz grafica del programa en si, no accede directamente a los datos como normalmente se utiliza el acceso a datos mediante el namespace SqlClient, sino que hay una capa intermedia entre el acceso a datos que es la que realiza la negociación entre la presentación del programa y los datos. Presentación Negocio datos

Así que la capa de datos es la que tiene la interacción con el manejador de bases de datos , la capa de negocio es la que establece como se va a acceder a esos datos, y la capa de presentación muestra los datos en los diversos formularios para su interacción con el usuario que administre los mismos. CREACIÓN DE UNA NUEVA SOLUCIÓN Deberá ir al Menú Archivo, luego en Nuevo Proyecto (ó pulse las telas CTRL + N), a continuación nos mostrará la siguiente ventana: Considere lo siguiente: 1. Tipo de Proyecto: Visual Basic. 2. Plantilla: Aplicación de Windows. 3. Luego escriba el nombre de la aplicación: SISVENTAS 4. Especifique la carpeta donde se guardará el proyecto (ésta deberá ser una carpeta creada por usted, use el botón Examinar para localizar su carpeta personal) 5. Hacer clic en el botón Aceptar para crear el proyecto.

P á g i n a | 194

SUGERENCIA: Una vez creado nuestro proyecto SISVENTAS, se sugiere crear carpetas para

guardar los diferentes elementos del sistema de forma

ordenada, para ello siga los siguientes pasos en el Explorador de Soluciones.

ESTABLECER LA CONEXIÓN A UN ORIGEN DE DATOS DETERMINADO (CONNECTION) Establece una conexión a un origen de datos determinado. Para nuestro caso crearemos el objeto Connection en un módulo. 

Haga clic en el menú PROYECTO



Luego seleccione con un clic en la opción AGREGAR NUEVO ELEMENTO



Se presenta una ventana de dialogo seleccione

MODULO y escriba el

nombre: MODCONEXION luego clic en el botón AGREGAR.

P á g i n a | 195



Seguidamente se presentará una ventana en blanco para la codificación del modulo correspondiente.

ESCRIBA EL SIGUIENTE CÓDIGO EN EL MODULO: Imports System.Data.SqlClient Module modConexion Public Conexion As SqlConnection = _ New SqlConnection("Data Source=(local); user id=sa; password=; Initial Catalog=ventasM;") End Module Donde: DATA SOURCE Ó SERVER Inicial Catalog ó

NOMBRE DEL SERVIDOR DE BASE DE DATOS. Nombre de la base de datos a la que se va a conectar

Database User ID Password ó Pwd

Nombre de usuario de una cuenta registrada en SQL Server Contraseña de inicio de sesión para una cuenta de SQL Server

P á g i n a | 196

2

VISUALIZACIÓN

DE

LOS

DATOS

DE

UNA

TABLA

EN

EL

FORMULARIO MEDIANTE UN DATAGRIDVIEW. El control DataGridView proporciona una forma eficaz y flexible de mostrar

datos

en

formato

de

tabla.

Puede

utilizar

el

control DataGridView para mostrar vistas de sólo lectura de una cantidad pequeña de datos o puede ajustar su tamaño para mostrar vistas modificables de conjuntos muy grandes de datos.

Personalizar un DataGridView

ACCEDER A DATOS DE UNA TABLA – VISUALIZACIÓN Para empezar a trabajar con los objetos Connection, DataAdapter y DataSet deberá agregar un formulario y guardarlo con el nombre de FrmVisualizarArticulo, éste deberá tener la siguiente apariencia:

P á g i n a | 197

Imports System.Data Imports System.Data.SqlClient Public Class FrmVisualizarArticulo Dim daArticulo As SqlDataAdapter 'objeto Adaptador de datos Dim ds As New DataSet 'objeto Conjunto de datos Private Sub FrmVisualizarArticulo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Conexion.Open() ' Creando el Adaptador de datos daArticulo = New SqlDataAdapter("select * from Producto", modConexion.Conexion) ' Cargando datos en el dataset daArticulo.Fill(ds, "Articulo") ' Cerrando la conexión Conexion.Close() ' Enlazando los controles TextBox al campo correspondiente Me.TextBox1.DataBindings.Add("Text", ds, "Articulo.IdProducto") Me.TextBox2.DataBindings.Add("Text", ds, "Articulo.Nombre") Me.TextBox3.DataBindings.Add("Text", ds, "Articulo.StockActual") Me.TextBox4.DataBindings.Add("Text", ds, "Articulo.PrecioVenta") ' Enlazando el control DataGrid Me.DataGridView1.DataSource = ds Me.DataGridView1.DataMember = "Articulo" Me.DataGridView1.ReadOnly = True ' Mostrando el 1er. registro 'NumRegistro(0) ' Estableciendo el maximo del control TrackBar ' igual al número de registros de la tabla articulos Me.TrackBar1.Maximum = ds.Tables("Articulo").Rows.Count - 1 End Sub Private Sub NumRegistro(ByVal fila As Integer) Dim total As Integer ' Mostrará el registro en una posición que tenga la var. fila Me.BindingContext(ds, "Articulo").Position = fila ' total de registros en la tabla artículos total = ds.Tables("Articulo").Rows.Count

P á g i n a | 198

Me.lblPosicion.Text = "Articulo: " & Str(fila + 1) & " de " & Str(total) End Sub Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click Dim strDato As String Dim fila As Integer ' Trabjando con un DataView Dim dv As New DataView strDato = InputBox("Ingrese codigo del Artículo: ", "Buscar") dv.Table = ds.Tables("Articulo") dv.Sort = "IdProducto" fila = dv.Find(strDato) If fila = -1 Then MessageBox.Show("Codigo del Artículo no Existe", "Cuidado") Exit Sub End If NumRegistro(fila) End Sub Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll Try NumRegistro(TrackBar1.Value) Catch ex As System.Exception MessageBox.Show(ex.Message) End Try End Sub End Class MÉTODO 2: UTILIZANDO OBJETOS DATAROW Imports System.Data Imports System.Data.SqlClient ' Esto va la sección declaraciones Public Class FrmVisualizarArticulo Dim daArticulo As SqlDataAdapter 'objeto Adaptador de datos Dim ds As New DataSet ' Objeto Conjunto de datos

P á g i n a | 199

Dim dr As DataRow ' Objeto DataRow Private Sub frmVisCargo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Conexion.Open() ' Creando el Adaptador de datos daArticulo = New SqlDataAdapter("select * from Producto", modConexion.Conexion) ' Cargando datos en el dataset daArticulo.Fill(ds, "Articulo") ' Cerrando la conexión Conexion.Close() ' Enlazando el control DataGrid Me.DataGridView1.DataSource = ds Me.DataGridView1.DataMember = "Articulo" Me.DataGridView1.ReadOnly = True ' Mostrando el 1er. registro CargarDatos(0) ' Estableciendo el maximo del control TrackBar ' igual al número de registros Me.TrackBar1.Maximum = ds.Tables("Articulo").Rows.Count - 1 End Sub Private Sub CargarDatos(ByVal fila As Integer) Dim total As Integer Try ' Para mostarar la posicion Me.BindingContext(ds, "Articulo").Position = fila ' total de registros en la tabla artículos total = ds.Tables("Articulo").Rows.Count Me.lblPosicion.Text = "Articulo: " & Str(fila + 1) & " de " & Str(total) ' Asignando un fila de datos "Registro" al DataRow dr = ds.Tables("Articulo").Rows(fila) ' Mostrando los datos desde el datarow TextBox1.Text = dr("IdProducto") TextBox2.Text = dr("Nombre") TextBox3.Text = dr("StockActual") TextBox4.Text = dr("PrecioVenta")

P á g i n a | 200

Catch exc As Exception MessageBox.Show(exc.Message) End Try End Sub Private Sub TrackBar1_Scroll1(ByVal sender As Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll Try CargarDatos(TrackBar1.Value) Catch ex As System.Exception MessageBox.Show(ex.Message) End Try End Sub Private Sub btnBuscar_Click1(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBuscar.Click Dim strDato As String Dim fila As Integer ' Trabjando con un DataView Dim dv As New DataView strDato = InputBox("Ingrese codigo del Artículo: ", "Buscar") dv.Table = ds.Tables("Articulo") dv.Sort = "IdProducto" fila = dv.Find(strDato) If fila = -1 Then MessageBox.Show("Codigo del Artículo no Existe", "Cuidado") Exit Sub End If CargarDatos(fila) End Sub End Class

P á g i n a | 201

PRÁCTICA DESARROLLADA Ingrear a Visual Basic .net y diseñar un formulario el cual permitira desplazarnos a traves de los diferentes registros de una tabla determinada. Colocar en el cuadro de herramientas y colocar en el formulario los siguientes controles: 4 5 4 1

Labels TextBox Button GroupBox

Terminado el diseño, presionar la tecla F7 para ingrear a la ventana de codigo y digitar el siguiente código Public Class desplazamiento 'Inherits System.Windows.Forms.Form Private dw As DataView Private WithEvents cmr As CurrencyManager Const CadConex As String = "Data Source=MARTINPC\SQLEXPRESS;Initial Catalog=EMPLEADO;Integrated Security=True" Private Sub desplazamiento_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim CN As New SqlConnection(CadConex) Dim DA As New SqlDataAdapter("Select * From EMPLEADO", CN) Dim Ds As New DataSet() DA.Fill(Ds, "Empleado") dw = Ds.Tables(0).DefaultView Enlazardatos() End Sub Private Sub Enlazardatos() Codigo.DataBindings.Add("Text", dw, "IdEmpleado") Nombre.DataBindings.Add("Text", dw, "Nombre") ApellPat.DataBindings.Add("Text", dw, "Apellidos") ApellMat.DataBindings.Add("Text", dw, "Direccion") cmr = Me.BindingContext(dw) End Sub Private Sub cmr_PositionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmr.PositionChanged lblPosicion.Text = cmr.Position + 1 & " de " & cmr.Count

P á g i n a | 202

End Sub Private Sub btnPrimero_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrimero.Click cmr.Position = 0 End Sub Private Sub btnAnterior_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnterior.Click If cmr.Position > 0 Then cmr.Position -= 1 End Sub Private Sub btnSgte_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSgte.Click If cmr.Position < cmr.Count Then cmr.Position += 1 End Sub Private Sub btnUltimo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUltimo.Click cmr.Position = cmr.Count End Sub End Class Ingrear a Visual Basic .net y diseñar un formulario el cual permitira otorgar acceso a un usuario determinado.

Terminado el diseño, presionar la tecla F7 para ingrear a la ventana de codigo y digitar el siguiente código Imports System.Data.SqlClient Public Class LoginForm1 'Public strConn As String = "Data Source=.;Initial Catalog=bdVentas;Integrated Security=True"

P á g i n a | 203

Public veces As Integer = 0 Public intentos As Integer = 3 Dim Cnn As SqlConnection Public ob As New Menu Dim Dr As SqlDataReader Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click If comprobarUsuario(UsernameTextBox.Text, PasswordTextBox.Text) = False Then veces = veces + 1 If veces < intentos Then MsgBox("Usuario y contraseña incorecto", MsgBoxStyle.Information) UsernameTextBox.Clear() PasswordTextBox.Clear() UsernameTextBox.Focus() Exit Sub Else End End If End If Me.Close() End Sub Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click ob.Close() Dim r As Integer r = MessageBox.Show("¿Desea Salir del Sistema?", "Mensaje", MessageBoxButtons.YesNo, MessageBoxIcon.Question) If r = 6 Then End End If End Sub Private Function comprobarUsuario(ByVal usua As String, ByVal contr As String) As Boolean Try Dim comando As SqlCommand Cnn = New SqlConnection Cnn.ConnectionString = My.Settings.Settings Cnn.Open() Dim sql As String sql = "SELECT COUNT(*),Nom_Usua,Apell_Usua FROM T_Usuario WHERE Usuario = '" & usua & " ' AND Clave = '" & contr & "' Group By Nom_Usua,Apell_Usua" comando = Cnn.CreateCommand comando.CommandText = sql Dr = comando.ExecuteReader If Dr.Read Then nombre = Dr("Nom_Usua") apellido = Dr("Apell_Usua") End If

P á g i n a | 204

Dr.Close() Dim t As Integer = CInt(comando.ExecuteScalar()) If t = 0 Then Return False End If Return True Catch exx As SqlException MsgBox(exx.Message) Catch ex As Exception MsgBox(ex.Message) Finally Cnn.Close() End Try End Function End Class

P á g i n a | 205

AUTOEVALUACIÓN UNIDAD 11 Completa los espacios en blanco con la respuesta correcta. bb.

Que es un Mantenedor: ________

_______________________________________________________ _______________________________________________________ cc. Cuál es la importancia del Lenguaje Visual Basic .Net _______________________________________________________ _______________________________________________________ _______________________________________________________ dd.

Para qué sirve un modulo

_______________________________________________________ _______________________________________________________ _______________________________________________________ ee.

Qué ventajas ofrece el ADO.net

_______________________________________________________ _______________________________________________________

P á g i n a | 206

UNIDAD

ACTIVIDAD DIDÁCTICA

11

Diseñar una aplicación utilizando la Base de Datos BDBancos, trabajada en sesiones anteriores. Agregar al Formulario dos DatagridView, un ListBox y tres Labels

Mostrar en el ListBox los tipos de cuentas

Luego, listando todos los clientes por tipo de Cuenta seleccionada.

P á g i n a | 207

Como resultado mostrando los movimiento realizados por cliente seleccionado

[email protected] http://www.ucv.edu.pe/cis/

P á g i n a | 208

TALLER DE UNIDAD II Y EXAMEN FINAL

12

P á g i n a | 209

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF