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