Está en la página 1de 209

UNIDAD

GUIA DIDCTICA

Fundamentacin
El propsito de este mdulo es introducir al estudiante en el Diseo e
Implementacin de Base de Datos como una herramienta de imprescindible
ayuda en la construccin de un sistema de informacin. Proporcionando al
participante un conjunto de tcnicas de identificacin de requerimientos
operacionales, y

modelado de bases de datos, pasando por sus diferentes

etapas. Incluyendo el desarrollo de un caso prctico, que incluye desde la


identificacin de requerimientos hasta el modelado fsico de la Base de Datos
para una organizacin; al cual los alumnos harn su respectivo levantamiento
y tratamiento de la informacin recopilada, la misma que ser guiada por el
docente a cargo.
Capacidad
El participante al final de esta unidad estar en capacidad de:

Disear su Base de Datos partiendo de los requerimientos de informacin


que los usuarios de una empresa puedan tener para cumplir los procesos
de negocios.

Aplica las tcnicas y estrategias de Modelamiento de base de datos


adecuadas a fin de conseguir un modelo en un plazo ms corto y de una
manera ms ptima valorando la importancias de las estrategias de
Modelamiento de datos

Pgina |1

Estructura de contenidos
1. Entorno SQL 2008
2. Descripcin del entorno y herramientas principales.
3. Conexin a un servidor
4. Crear base de datos y tablas por diseo.
5. Almacenar base de datos. Copias de Seguridad y Restaurar.
ACTIVIDADES
Las actividades a desarrollar en la Unidad son:

Actividad 01:

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 travs de un usuario.

Actividad 02:

Crea una Base de Datos de manera grfica y usando script.

Aplica Backup y restauracin de Base de Datos.

ESTRATEGIAS METODOLGICAS

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 tericos. Si se presenta alguna Duda se puede realizar


lecturas sobre puntos especficos en la seccin 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
comunicacin entre el docente y los estudiantes, para efectos de
mensajera interna, foros, evaluaciones virtuales, acciones de tutora
acadmica y comunicacin de resultados de evaluacin de los aprendizajes.

Pgina |2

EVALUACIN

En esta Unidad Ud., ser evaluado en:


1.

Creacin de una Base de Datos en modo de diseo y utilizando cdigo.

2.

Crear su backup y almacenar en un dispositivo fsico su Base de Datos.

3.

Como restaurar una Base de Datos.

4.

Desarrollar un caso prctico de crear una Base de Datos para un

Empresa determinada identificando sus tablas


Es importante

que Ud.,

este en constante comunicacin con su

docente Tutor, ya sea para informar de dificultades, avances de las


tareas, etc. Recuerde que ser calificado de acuerdo a las rbricas
de evaluacin 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. Organizacin 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. Espaa

cis@ucv.edu.pe
http://www.ucv.edu.pe/cis/

Pgina |3

UNIDAD

Anlisis y Diseo de Base de


Datos en SQL Server 2008

ESTRUCTURA DE CONTENIDOS
1. Entorno SQL 2008
2. Descripcin del entorno y herramientas principales.
3. Conexin a un servidor
4. Crear base de datos y tablas por diseo.
5. Almacenar base de datos. Copias de Seguridad y Restaurar.

Pgina |4

Introduccin

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 grficas y utilidades de la lnea de comandos que permiten al


operador, programadores y administradores aumentar su productividad. Que
podemos usar para el desarrollo y configuracin de una Base de Datos.
La importancia de esta Unidad radica en disear 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 bsicos 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

ms sobre

las nuevas caractersticas de

Microsoft SQL Server 2008, podrs encontrar material adicional en


la seccin: Material Complementario en un apartado llamado: SQL
server 2008 r2 SQL Trasact SQL (Gabillaud, 2009)

Pgina |5

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 botn Inicio -> Todos los Programas -> Microsoft SQL Server
2008 -> SQL Server Management Studio

Se visualizara la siguiente pantalla:

Pgina |6

2 DESCRIPCIN DEL ENTORNO


En el cuadro de dilogo Conectar al servidor, haga clic en Cancelar
Entorno de Microsoft SQL Server
Existen muchas herramientas que va a utilizar en el servidor Microsoft SQL.

Uno de ellos se llama Microsoft SQL Server Management Studio.

La seccin superior del SQL Server Management Studio muestra lo siguiente:


A.- La clsica barra de ttulo de una ventana, con un icono de la
izquierda, seguido por el ttulo de la solicitud, y el sistema de botones en
el lado derecho.
B.- Men Principal, Bajo la barra de ttulo, la barra de men muestra las
categoras de mens que utilizar para realizar las diferentes operaciones
necesarias.
C.- La barra de herramientas Estndar aparece bajo el men principal La
barra de herramientas es slo una de las disponibles. Finalmente, cuando
se realiza una accin que se beneficiara 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

Pgina |7

el men principal o cualquier botn 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 ttulo 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 ttulo a un lugar de su
eleccin. Al empezar a arrastrar, pequeas cajas que representan los
posibles marcadores de posicin encontraran:
Puede arrastrar y soltar a uno de los marcadores de posicin.

Pgina |8

Para colocar la ventana de nuevo a su posicin anterior, puede hacer


doble clic en su barra de ttulo. La ventana tambin se puede pestaas.
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 botn de cierre. En la parte derecha del
Explorador de objetos ttulo, hay tres botones. Si hace clic en el primer

botn que seala hacia abajo, un men que aparece:


El men le permite especificar si desea que la ventana flote, acoplado o
pestaas. La parte derecha de la ventana es de una ventana vaca. 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
operacin. Como se ver ms adelante, muchas otras ventanas ocupar
la seccin correcta, pero que comparten la misma zona.
3 CONEXIN 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 botn Inicio, Conectar al servidor cuadro de dilogo que surgen. Si
se haba iniciado desde el botn Inicio hace clic en Cancelar, pero, para
conectarse a un servidor:

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


objetos

Pgina |9

En la barra de herramientas Estndar, haga clic en el botn Nueva


consulta

En el Explorador de objetos, puede hacer clic en la flecha del botn Conectar


y haga clic en una de las opciones, como motor de base de datos...

Cualquiera de estas acciones se mostrar el cuadro de dilogo Conectar al


servidor de correos:

Desde all, seleccione el nombre del servidor y el tipo de autenticacin para su


uso. Si elige la autenticacin de Windows, puede simplemente haga clic en
Conectar. En caso contrario, la autenticacin en el cuadro combinado, puede
seleccionar la autenticacin de SQL Server. En este caso, debe proporcionar
un nombre de usuario y una contrasea.

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:

Despus 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 ttulo, haga clic en el botn 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

Descripcin
El archivo de datos principal incluye la informacin de inicio de
la base de datos y apunta a los dems 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 extensin
recomendada

para

los

nombres

de

archivos

de

datos

principales es .mdf.
Los archivos de datos secundarios son opcionales, estn
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. Adems, si una
Secundario

base de datos supera el tamao mximo establecido para un


archivo de Windows, puede utilizar los archivos de datos
secundarios para permitir el crecimiento de la base de datos.
La extensin recomendada para los nombres de archivos de
datos secundarios es .ndf.
Los archivos del registro de transacciones contienen la
informacin 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 tamao mnimo es de 512 kb y es el archivo


Log. La extensin recomendada para los nombres de archivos
de registro es .ldf.

P g i n a | 12

Ahora pasemos a la creacin de la bases de datos.


1. Forma grfica

Primero abrimos nuestro SQL Server Management Studio usando


nuestra autenticacin Windows

En el Explorador de objetos, conctese a una instancia del SQL Server 2008


Motor de base de datos y expndala.

Haga clic con el botn secundario en Bases de datos y, a


continuacin, en Nueva base de datos.

Se abre nuestro men de dilogo 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, contine con
siguientes los pasos opcionales.

Vers que el Nombre Lgico se va llenando a la vez que t le


escribes el nombre, ahora explicando las otras pestaas 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, Tamao Inicial
muestra el tamao inicial que tendr su base de datos (est en
MegaBytes), en Crecimiento Automtico es el tamao 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, tambin puedes aqu dndole clic en los puntitos () definir
un tamao mximo y finalmente Ruta de Acceso que ser donde se
van a guardar tus archivos , tambin Ud. cambiarla claro est, para
colocarla en la carpeta que mejor considere.

2. Mediante Query:
Tambin Ud. puede crear su base de datos mediante una consulta quizs para
tener en cuenta con ms detalle el tamao mximo y otras caractersticas,
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
cdigo
SQL

Luego aqu escribe el siguiente cdigo:

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 cdigo mostrado hemos creado una base de
datos donde se tiene especificado las caractersticas del archivo mdf
mientras que el archivo log al no haberse especificado <filespec> se
crear automticamente con un tamao de 1 Mb.

Con ms 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 terminacin
data).
FILENAME es cmo puedes ver la ruta del archivo mdf.
SIZE es el tamao inicial de tu base de datos
MAXSIZE se puede deducir que es su tamao mximo, mientras que
FILEGROWTH determina el tamao o la proporcin en la que crecer
el archivo principal, todos estos tamaos estn representados en
Megabytes por defecto pero uno podra especificar si quiere que sea en
otra unidad (Kb, Mb, Gb, TB, tambin Unlimited -en el caso de
Maxsize- y N% -en el caso de FileGrowth) finalmente as debera
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

Tambin es vlido pero esta no tendr especificaciones y tomar los


valores

de

la

base de

datos

model

el

crecimiento

ser

ilimitado puesto que no est especificado MaxSize y ser hasta llenar


todo el espacio disponible en disco.

Importante

Ms informacin sobre la creacin de una base de datos revisar la


documentacin MSDN en la siguiente direccin electrnica:
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 Restauracin 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.

2
En la pestaa 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 botn 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 pestaa 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 comprobacin 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 restauracin lo utilizaremos, por lo que es recomendable
copiarlo en una ubicacin donde se lo pueda hallar fcilmente.

P g i n a | 18

Proceso de Recuperacin
Hacemos clic en Base de datos del panel principal de la izquierda. Damos clic
en Restaurar base de datos.

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
botn de opcin Desde Dispositivo para despus hacer clic en el botn de
puntos suspensivos para buscar el archivo .bak

P g i n a | 19

Luego haz clic en el botn 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

PRCTICA DESARROLLADA
TEMA:
Creacin de una Base de Datos
A continuacin 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 conexin actual.

Paso 4. Copiar el script siguiente y pulsar el botn ejecutar o bien ejecutar


instruccin a instruccin seleccionando estas previamente. Recordar que en el
estndar la instruccin termina con punto y coma y en TSQL tambin 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 Botn Actualizar para mostrar la Base de


Datos en el Explorador de Objetos

Botn
Actualiza
r

Base de
Datos
Creada

P g i n a | 25

AUTOEVALUACIN UNIDAD 01
1.

Escribe una V si la proposicin es verdadera o escribe F si la


proposicin es Falsa.
a. Base de Datos es un dispositivo fsico el cual se utiliza para
almacenar informacin ..........................................................(

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

c. El DDL es un lenguaje que sirve para manipular la informacin de una


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

d. SQL Server 2008 permite administrar informacin 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 transaccin? Cundo se deben utilizar?
_______________________________________________________
_______________________________________________________

P g i n a | 26

3.

Confrontar.
COLOCAR LA
CRITERIOS

LETRA QUE

DEFINICIONES

CORRESPONDE
A. BASE DE
DATOS

Sistema de administracin y anlisis


de

bases

de

datos

relacionales

(SGBD) de Microsoft
Coleccin de informacin organizada
de datos, relativa a un problema
concreto, que puede ser compartida
B. SQL Server
2008

por

un

conjunto

usuarios/aplicaciones;

de
cuyo

propsito es recolectar, almacenar y


recuperar

informacin

relacionada

para utilizarla en aplicaciones.


C. RENAME

Son tiles para recuperarse de una


catstrofe informtica

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 Prctico.
Una base de datos para una pequea empresa debe de contener
informacin acerca de los clientes, artculos, fabricantes y pedidos. Hasta
el momento se registran los siguientes datos en documentos varios:

Para cada cliente: Nmero de cliente (nico), Direccin de envi


(varias por cliente), saldo lmite de crdito, Descuento.

Para cada artculo: Nmero de artculo (nico), Fbricas que lo


distribuyen, Descripcin del artculo.

Para cada Pedido: Cada Pedido tiene una cabecera y el cuerpo del
pedido. La cabecera est formada por el nmero de pedido,
nmero del cliente, direccin de envo y fecha del pedido. El cuerpo
del pedido son varias lneas, en cada lnea se especifican el nmero
del artculo pedido y la cantidad.

Adems se ha determinado que se debe de almacenar la


informacin de las fbricas: Nmero de la Fbrica (nico), Telfono
de contacto.

Nota: la Direccin se entender como Nro., calle, comuna y ciudad.


Una fecha incluye Hora.

P g i n a | 28

UNIDAD

ACTIVIDAD
CASO 01:
Crear una base de datos DB_Reservacones:
1. Utilizar cdigo 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 grfica 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 DIDCTICA

Fundamentacin
El propsito de este mdulo es introducir al estudiante en el Diseo e
Implementacin de Base de Datos como una herramienta de imprescindible
ayuda en la construccin de un sistema de informacin. Proporcionando al
participante un conjunto de tcnicas de
operacionales, y

identificacin de requerimientos

modelado de bases de datos, pasando por sus diferentes

etapas. Incluyendo el desarrollo de un caso prctico, que incluye desde la


identificacin de requerimientos hasta el modelado fsico de la Base de Datos
para una organizacin; al cual los alumnos harn su respectivo levantamiento y
tratamiento de la informacin recopilada, la misma que ser guiada por el
docente a cargo.
Capacidad
El participante al final de esta unidad estar en capacidad de:

Disear su Base de Datos partiendo de los requerimientos de informacin que


los usuarios de una empresa puedan tener para cumplir los procesos de
negocios.

Aplica las tcnicas y estrategias de Modelamiento de base de datos adecuadas


a fin de conseguir un modelo en un plazo ms corto y de una manera ms
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

asignndoles

su

adecuado tipo de datos a cada uno de ellos, realizndolo de


manera grfica y usando script.

Asigna Clave Primarias a sus tablas creadas.

Crea su Diagrama de Base de Datos

Actividad 02:
o

Ingresa registros a cada una de sus tablas utilizando el diseador


grfico y utilizando scripts.

Modifica informacin en los

registros de sus tablas utilizando el

diseador grfico y utilizando scripts.


o

Elimina informacin en los

registros de sus tablas utilizando el

diseador grfico y utilizando scripts.


o

Realiza

estas

actividades

teniendo

en

cuenta

la

Integridad

Referencial.

P g i n a | 31

Estrategias Metodolgicas
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 tericos. Si se presenta alguna Duda se puede
realizar lecturas sobre puntos especficos en la seccin 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
comunicacin entre el docente y los estudiantes, para efectos de
mensajera interna, foros, evaluaciones virtuales, acciones de tutora
acadmica y comunicacin de resultados de evaluacin de los aprendizajes.

Evaluacin
En esta Unidad Ud., ser evaluado en:
1. Desarrollar un caso prctico de crear una Base de Datos para un Empresa
determinada

identificando

sus

tablas

asignndole

sus

columnas

respectivos tipo de datos de acuerdo a la columna (atributo).


2. Crear un diagrama de base de datos, identificando las claves primarias y
forneas para cada una de las tablas. Aplicando el Modo grfico y Cdigo
SQL Server.

P g i n a | 32

Es importante que Ud., este en constante comunicacin con su


docente Tutor, ya sea para

informar de dificultades, avances de

las tareas, etc. Recuerde que ser calificado de acuerdo a las


rbricas de evaluacin 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

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

Introduccin

Estimado participante:

En esta Unidad aprender a identificar las tablas con sus respetivas columnas o
atributos asignndole 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 travs 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

ms sobre

las nuevas caractersticas de Microsoft SQL

Server 2008, podrs encontrar material adicional en la seccin: Material


Complementario en un apartado llamado: SQL server 2008 r2 SQL Trasact
SQL (Gabillaud, 2009)

P g i n a | 35

OBJETOS DE TABLAS

Crear Tablas en SQL Server 2008


1.- Forma Grfica:

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 botn Cerrar


(X) y se visualizara una ventana de dialogo para que le asigne un nombre
a la tabla, finalmente clic en el botn 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 visualizars la(s)


tabla(s) ya creada(s).

P g i n a | 38

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 preguntars Por qu repito el
valor?, bueno este campo nos permitir hacer la relacin en el diagrama
de bases de datos como llave Fornea.

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
diseadas.

Selecciona las tablas que participaran en el diagrama (en este caso todas)
y dale Agregar, luego cuando estn agregadas slo haz clic en el botn
Cerrar y vers que las tablas estn en pantalla, puedes acomodarlas con
el mouse si lo deseas.

P g i n a | 39

Asignacin 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 tambin lo puedes hacer al momento de crear los campos y tipos


de datos.

P g i n a | 40

Crear la relacin
Asignaremos los Foreign Key (Llave Fornea) esta establecer la relacin
entre las tablas, para esto solo arrastramos desde el smbolo 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
colocndolo de manera premeditada para que ahora sirva finalmente de
campo a relacionar, estos campos de relacin pueden tener diferentes
nombres pero es importante que sea el mismo Tipo De Dato sino la
relacin producir un error.

Hacemos los mismo desde la Tabla Cliente hacia la tabla Factura


relacionndolo 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 tendrs que recrear las tablas, tranquilo para esto hay solucin
Qu sucede? es que en SQL Server Management Studio ahora no te permite
hacer este tipo de cambios mediante el Diseador sea a nivel de interfaz (una
razn muy buena para hacer esto por Transact SQL) as que para que puedas
continuar primero debes desmarcar la opcin Impedir guardar cambios que
requieran volver

a crear tablas la cual debes ingresar a la siguiente ruta

Herramientas/Opciones/Diseadores de Tablas y Base de Datos, de esta


manera Ud. podr guardar los cambios y tendrs tu diagrama.

P g i n a | 41

Finalmente el diagrama deber quedar as como se muestra en el siguiente


grfico, cirralo 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:

Bueno ahora veremos la forma de hacerlo mediante las Querys:

Primero vamos al botn Nueva Consulta y abrimos una nueva consulta.

Crearemos una base de datos y luego ponerla en uso entonces escribimos


el siguiente cdigo y luego ejecutamos:
CREATE DATABASE HOTELERA
USE HOTELERA

Ahora vamos a crear las tablas Hotel, Habitacin 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),
Descripcin 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 razn 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 slo 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 quizs sea por qu
utilizar la palabra reservada not null? es que en estos campos se
establecern las Primary Keys y estas no aceptan valores nulos o vacos.

P g i n a | 44

Podemos darles los siguientes SELECT para comprobar que estn


correctamente creadas:
SELECT * FROM HOTEL
SELECT * FROM HABITACION
SELECT * FROM CLIENTE

Ahora vamos a agregarle a las tablas Habitacin y Cliente los campos que
servirn de referencia para las Foreign Keys (tambin 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 agregumosle las Llaves Primarias y Forneas


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 tambin hacemos


referencia a la tabla de donde proviene la Llave Principal y con la palabra
reservada REFERENCES se crear la relacin entre las tablas.

Para la creacin del Diagrama, se seguirn los mismos pasos ya


mencionados en el modo grfico, pero esta vez al agregar las tablas
podremos observar que las relaciones ya estn creadas solo guardamos el
diagrama y listo.

P g i n a | 45

Diagrama para cliente nico

Como dato adicional puedes tambin 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 algn 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

PRCTICA DESARROLLADA
TEMA:
Creacin 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 restauracin de una Base de datos)

Verificar la restauracin de la base de datos con la cual se trabajara.

P g i n a | 47

Paso 2. Abrir una consulta en la conexin actual.

Paso 3. Copiar el script siguiente y pulsar el botn ejecutar o bien ejecutar


instruccin a instruccin seleccionando estas previamente. Recordar que en el
estndar la instruccin termina con punto y coma y en TSQL tambin 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,


UBICACIN CHAR (4) NOT NULL,
SUPERFICIE DEC (8, 2) NOT NULL,
CONSTRAINT fk_loc FOREIGN KEY (DNI) REFERENCES PROPIETARIOS (DNI));

Seleccionar el
cdigo y CLIC

Paso 4. Utilizando las instrucciones de manipulacin bsicas 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 restriccin 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, UBICACIN, SUPERFICIE)
VALUES ('L-234', '132345674','San Martin', 100)
GO
SELECT CODIGO, UBICACIN, 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 caractersticas de los objetos creados en la BD a travs del
entorno grfico.

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

AUTOEVALUACIN UNIDAD 02
1.

Escribe una V si la proposicin es verdadera o escribe F si la


proposicin es Falsa.
a. Una Tupla es una fila.............................................................(

b. La instruccin INSERT permite ingresar columnas en una tabla ..(

c. El DDL es un lenguaje que sirve para manipular la informacin de una

2.

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

d. La instruccin UPDATE sirve para ingresar datos en una tabla ....(

e. BETWEEN especifica un intervalo inclusivo de bsqueda. ...........(

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

manipulacin de datos
_______________________________________________________
_______________________________________________________
h. Qu es una transaccin? Cundo 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

unvoca

mnimamente cada tupla de la


relacin.
Se denomina clave ajena de una
relacin R2 a un conjunto no
B. CLAVE
CANDIDATA

vaco de atributos cuyos valores


han de coincidir con los valores
de una clave candidata de una
relacin R1.

C. LLAVE
PRIMARIA

Representacin bidimensional de
una relacin 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 informacin.
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 Prctico.
Complete los esquemas con los atributos, relaciones y restricciones
correspondientes a los problemas de informacin que se propone.

P g i n a | 56

UNIDAD

ACTIVIDAD DIDCTICA

CASOS: Restaurar la Base de Datos creadas en Unidad 1 y realizar los


siguientes casos:
CASO 01:
Realice el siguiente diseo utilizando el MS SQL Server Management Studio.
Realizarlo de manera grfica y utilizando cdigo:

A continuacin realice las siguientes acciones:


Inserciones

Inserte el tipo de servicio OCIO.

De alta una reserva de la habitacin 101 para el cliente 12345 para las
noches del 2 al 4 de julio de 2009. El cdigo de la reserva es
autonumrico.

P g i n a | 57

Actualizaciones

Actualice el telfono del cliente 12345. Su nuevo nmero es 123456789.

Actualice el precio de los servicios incrementndolos en un 2%.

Eliminar

Borre la reserva de la habitacin 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 bsquedas.

Cree

un

ndice

sobre

el

atributo

numHabitacion

de

la

tabla

reverva_habitac, con objeto de agilizar las bsquedas.

Cree un ndice sobre el atributo nombreServicio de la tabla servicios,


con objeto de agilizar las bsquedas.

ALTER TABLE

Aada una columna calculada en la tabla gastos que obtenga el


importe por lnea sin aplicar el iva.

Aada una columna en servicios que indique si el servicio se ofrece a


los clientes o no.

TABLA y FK

Aada en gastos una referencia que indique el empleado que atendi


el servicio.

Aada 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 direccin; el tipo de edificio y su categora.
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

ALBAIL

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

OFICINA

312

123 ELM

OFICINA

435

456 MAPLE

COMERCIO

ALMACEN

RESIDENCIA

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

1235

515

2001-10-17

22

1311

435

2001-10-08

12

1311

460

2001-10-23

24

1412

111

2001-12-01

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

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

3231

312

2001-10-24

20

cis@ucv.edu.pe
http://www.ucv.edu.pe/cis/

P g i n a | 60

UNIDAD

GUIA DIDCTICA

Fundamentacin
El propsito de este mdulo consiste en analizar un conjunto de reglas
formales que nos permiten confeccionar un diseo lgico, o asegurar que un
diseo lgico 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 gestin de base de datos a utilizar. Proporcionando al
participante tcnicas para una correcta normalizacin de los datos. Incluyendo
el desarrollo de casos prcticos, la cual ser guiada por el docente a cargo.

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

Aplica correctamente la normalizacin a una Base de Datos.

Aplica correctamente las formas normales de normalizacin de datos.

CONTENIDOS
NORMALIZACION Y RELACION

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

Convertir datos en informacin.

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.

Identificar correctamente las Clave Primarias a sus tablas.

Crea su diagrama de Base de Datos

Actividad 02:
o

Identificar en forma normales se encuentras las tablas.

Identificar adecuadamente las dependencias funcionales entre los


campos.

Estrategias Metodolgicas
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 tericos. Si se presenta alguna Duda se puede
realizar lecturas sobre puntos especficos en la seccin 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
comunicacin entre el docente y los estudiantes, para efectos de
mensajera interna, foros, evaluaciones virtuales, acciones de tutora
acadmica y comunicacin de resultados de evaluacin de los aprendizajes.

P g i n a | 62

Evaluacin
En esta Unidad Ud., ser evaluado en:
3. Desarrollar casos prcticos

para crear Base de Datos identificando sus

tablas correctamente normalizadas y relacionadas.


Es importante que Ud., este en constante comunicacin con su
docente Tutor, ya sea para informar de dificultades, avances de
las tareas, etc. Recuerde que ser calificado de acuerdo a las
rbricas de evaluacin 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. Espaa

P g i n a | 63

UNIDAD

NORMALIZACION Y RELACION

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

Introduccin

Estimado participante:

En esta Unidad analizaremos las diferentes formas normales definidas en la


Teora de Base de Datos Relacionales representan una gua y una orientacin
para el diseo de registros. Las reglas de normalizacin estn destinadas a
prevenir anomalas en las actualizaciones e inconsistencia en los datos.
El propsito de la normalizacin es mejorar la integridad de los datos a travs
de la minimizacin de la redundancia y la inconsistencia, pero con algn
posible costo en ciertas aplicaciones.
Estas reglas se aplican al modelo relacional de la base de datos, obtenido a
partir del modelo entidad-relacin. La verdad es que son bastante sencillas de
entender y aplicar, aunque a veces parece que la percepcin que se tiene
respecto a ellas es que son complejas y algo enrevesadas.
Es comprender la normalizacin, que no es ms que una serie de pasos a
seguir para transformar una lista de datos con atributos similares en una
tabla, o una relacin para que esto se lleve a cabo, la normalizacin 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 relacin, y que los
valores sean nicos. Le deseo xitos en el desarrollo de esta Unidad.

Importante:

Si deseas ahondar ms sobre las nuevas caractersticas de Microsoft SQL Server


2008, podrs encontrar material adicional en la seccin: Material Complementario
en un apartado llamado: An Introduction to Database Systems (Date, 2003)

P g i n a | 65

1 FORMAS NORMALES
NORMALIZACIN
Una normalizacin razonable permite mejorar el rendimiento. Cuando se
dispone de ndices tiles, el optimizador de consultas de SQL Server es una
herramienta adecuada para la seleccin rpida y eficaz de combinaciones
entre tablas. Existen tres formas normales para el proceso de normalizacin.
A.- Primera Forma Normal (1FN)
La definicin formal sera:
Una relacin 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 ningn grupo repetitivo
CASO: Diseo de una base de datos para la automatizacin del control de los
pedidos de productos. Se cuenta con el siguiente documento para
solicitar los productos:

Primer Paso
Se efecta 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: Direccin del Proveedor.
NumProd: Numero del Producto.
DescProd: Descripcin 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: Direccin del Proveedor.
NumProd: Numero del Producto.
DescProd: Descripcin 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 relacin est en 1 FN, de lo contrario:
Tercer Paso
Se eliminan los grupos repetidos, crendose dos relaciones:
1.- Una relacin para los campos que sean nicos, es decir, se dejan en la
relacin original slo los atributos que no son repetidos:
PEDIDO (Numpedido, FechPed, NumProv, NomProv, DirProv, MtoTtlPed)
2.- Una relacin para los grupos repetidos, es decir, se extraen en una
nueva relacin los atributos repetidos, adems de la clave primaria de la
relacin original:
PED_PROD

(NumPed,

NumProd,

DescProd,

PreUniProd,

CantPed,SubtlProd)
Una relacin para los campos que sean nicos, es decir, se dejan en la
RELACION ORIGINAL solo los atributos que no son repetitivos:
RELACIN 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 relacin para los grupos repetitivos, es decir, se extraen en una NUEVA
RELACION los atributos repetitivos, adems de la clave primaria de la
relacin original:
RELACIN 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: Relacin PROV_PROD
CANT es funcional y completamente dependiente de Producto y
Pedido
PROV_PROD
PRDNRO

SNRO

CANT

S1

P2

S2

P2

S3

P3

S3

P3

S3

P2

2.- SEGUNDA FORMA NORMAL (2FN)


Una relacin R se dice que est en 2FN si adems 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
slo de una parte de sta.
Entonces, este segundo paso se aplica slo 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 relacin que est en 1FN y que no tenga claves compuestas, ya est en
2FN
Consideremos la relacin de clave compuesta:
PED_PROD
NUMPED

NUMPROV

DESCPROD

PREUNIPROV

CANTPED

SUBTPROD

Esta relacin NO est en 2Fn, pues DESCPROD y PREUNIPROD no


dependen funcional y completamente de la clave (NUMPED, NUMPROD).
Se crea una relacin para todos los atributos que dependen funcional y
completamente de la clave:
PED_PROD
NUMPED

NUMPROD

CANTPED

SUBTPROD

Se crea otra relacin 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 relacin R se dice que est en 3FN si est en 2FN y s, y slo 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 slo de la clave y de ningn otro atributo de la relacin.
Se crea una relacin para los atributos no claves que no dependen
transitivamente de la clave primaria.
Esta relacin:
PEDIDO
NUMPED

FECPED

NUMPROV

NOMPROV

DIRPROV

MTOTTTLPED

Quedara de la siguiente manera:


PEDIDO
NUMPED

FECPED

NUMPROV

MTOTTTLPED

Y una relacin para los atributos no claves que dependen transitivamente


de la clave primaria a travs de otro atributo o conjunto de atributos no
clave primaria (que no son parte de la clave primaria). La clave primaria
de la relacin as formada ser el atributo o conjunto de atributos a travs
de los cuales existe la dependencia transitiva:
De esta relacin:
PEDIDO
NUMPED

FECPED

NUMPROV

NOMPROV

DIRPROV

MTOTTTLPED

Surgira:
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 teora de la normalizacin nos ayuda a estructurar mejor las relaciones,
evitando posibles redundancias y anomalas, y a representar mejor nuestro
mundo real en un esquema relacional.

P g i n a | 71

PRACTICA DESARROLLADA
Aplicaremos las reglas de normalizacin 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
prohbe 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 cules 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 slo 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 continuacin
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 continuacin.
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

AUTOEVALUACIN UNIDAD 03
5.

Escribe una V si la proposicin es verdadera o escribe F si la


proposicin 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 relacin es la estructura bsica del modelo relacional. Se


representa mediante una tabla. ..............................................(

h. Es el conjunto vlido de valores que toma un atributo. Existen con


independencia de cualquier otro elemento. ..............................(
i. Normalizacin,

serie de reglas a las relaciones obtenidas tras el paso del

modelo entidad-relacin al modelo relacional. .................................. (


6.

Completa los espacios en blanco con la respuesta correcta.


i. Qu es Normalizacin?: ________
_______________________________________________________
_______________________________________________________
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 PRCTICO.
COMPROBANTE DE COMPRA VENTA
La empresa LA PODEROSA lo ha contratado como el Ingeniero
Encargado para sistematizar la facturacin. En la siguiente FACTURA DE
COMPRA VENTA, usted debe analizar toda la informacin disponible y
aplique el proceso de normalizacin, hasta llegar a la Tercera Forma
Normal.
Se pide realizar la respectiva justificacin 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)


Dnde:
NUM_FAC: Nmero de la factura de compra venta
FECHA_FAC: Fecha de la factura de compra venta
NOM_CLIENTE: Nombre del cliente
DIR_CLIENTE: Direccin del cliente
RIF_CLIENTE: Rif del cliente
CIUDAD_CLIENTE: Ciudad del cliente
TELEF_CLIENTE: Telfono del cliente
CATEGORIA: Categora del producto
COD_PROD: Cdigo del producto
DESCRIPCION: Descripcin del producto
VAL_UNIT: Valor unitario del producto
CANT_PROD: Cantidad de productos q compra el cliente
La llave primaria es Nmero de Factura de venta: NUM_FAC

P g i n a | 76

UNIDAD

ACTIVIDAD
CASO 01:

EMPRESA DE ENVIO DE MERCANCIA

A continuacin se agrupan todos los atributos que hacen parte de la base de


datos para aplicarle las reglas de normalizacin. Donde se incluyen los
nombres de los atributos con su significado
* GUIA_NO = Numero de Gua
* GUIA_FECHA= Fecha de la Gua
* GUIA_HORA= Hora de la Gua
* ORGN_RIF = Identificacin de Empresa Origen
* ORGN_NOM = Nombre de Empresa Origen
* ORGN_ACT = Actividad Comercial de Empresa Origen
* ORGN_CIUDAD= Ciudad de Empresa Origen
* ORGN_DIR = Direccin de Empresa Origen
* ORGN_TEL = Telfono de Empresa Origen
* ORGN_CEL = Celular de Empresa Origen
* DEST_ID = Identificacin del destinatario
* DEST_NOM = Nombre del destinatario
* DEST_COD_CIUDAD = Cdigo de la ciudad del destinatario
* DEST_CIUDAD= Ciudad del destinatario
* DEST_DIR = Direccin del destinatario
* DEST_TEL = Telfono del destinatario
* DEST_KM = Distancia kilometraje de Ciudad origen a ciudad
destinatario
* CODIGO = Cdigo del paquete
* TIPO = Tipo de paquete
* NOMBRE = Nombre del paquete
* DESCRIPCION = Descripcin del paquete
* VALR_ FLETE = Valor del flete

del

CASO 02: BIBLIOTECA


Se presenta una base de datos de una biblioteca, aplicar las reglas de
normalizacin simplificando hasta la tercera forma normal.
Prestamos_libro
Fechadev)

(codLibro,

Titulo,

Autor,

Editorial,

NombreLector,

Codlibro

Titulo

Autor

Editorial

Nombrelector

Fechadevoluc

1001

Introduccin a la
Programacin
Visual Basic .Net

Murray Spiegel

McGraw Hill

15/08/2012

E. Petroustsos

Anaya

1005

Estadstica
Aplicada

Murray Spiegel

McGraw Hill

Prez Gmez,
Juan
Ros Tern,
Ana
Roca, Ren

1006

Manual de SQL
Server 2008
Fundam. de
Base de Datos

Nancy
Greenberg
Ramalho

Microsoft
Corp.
McGraw
Hill

Garca, Luis

20/08/2012

Prez
Gmez, 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 relacin ASIGNACIN (DNI, Nombre, Cod_Tienda,
Direccin_Tienda, Fecha, Turno) que contiene informacin relativa a la
asignacin 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. Martn
L. Sanz
D. Daz

COD_TIENDA

100A
100A
100A

33456456

P. Martn

200B

11223344

E. Lpez

300C

99887766

F. Monte

200B

11223344

E. Lpez

300C

99887766
44556689

F. Monte
L. Sanz

100A
100A

33456456

P. Martn

200B

DIRECCIN _TIENDA

Avd. Amrica Sur 658, Palermo


Avd. Amrica Sur 658, Palermo
Avd. Amrica Sur 658, Palermo
Avd. Amrica Oeste 658, Vista
Hermosa
Avd. Amrica Norte 865, Las
Quintanas
Avd. Amrica Oeste 658, Vista
Hermosa
Avd. Amrica Norte 865, Las
Quintanas
Avd. Amrica Sur 658, Palermo
Avd. Amrica Sur 658, Palermo
Avd. Amrica Oeste 658, Vista
Hermosa

TURNO

FECHA

M
M
T

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

3/9/12

3/9/12

3/9/12

4/9/12

M
T

4/9/12
4/9/12

5/9/12

Se pide, considerando nicamente la extensin de la relacin mostrada en la


tabla:
a. Indicar un ejemplo de anomala de borrado
b. Indicar las dependencias funcionales utilizando las siguientes
abreviaturas:
DNI
(P),
Nombre
(N),
Cdigo_Tienda
(C),
Direccin_Tienda (D), Turno (T), Fecha (F).
c. En qu Forma Normal se encuentra la relacin? Cules son sus
claves?

cis@ucv.edu.pe
http://www.ucv.edu.pe/cis/

P g i n a | 78

UNIDAD

GUIA DIDCTICA
Fundamentacin

El propsito de este modulo es ensearle 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 diseo o utilizando cdigo SQL.

As como resolver

consultas simples utilizando el diseador de consultas o cdigo SQL.


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

Aplica las tcnicas de ingreso, modificacin y eliminacin de datos.

Resuelve consultas simples, utilizando el diseador de consultas o


instrucciones DML
ESTRUCTURA DE CONTENIDOS
1. Edicin de Tablas y Registros
2. Actualizacin 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 diseador


grafico y utilizando scripts.

Modifica informacin en los

registros de sus tablas utilizando el

diseador grafico y utilizando scripts.


o

Elimina informacin en los

registros de sus tablas utilizando el

diseador 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 diseador


grfico de consultas y utilizando scripts.

Estrategias Metodolgicas
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 tericos. Si se presenta alguna Duda se puede
realizar lecturas sobre puntos especficos en la seccin 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
comunicacin entre el docente y los estudiantes, para efectos de
mensajera interna, foros, evaluaciones virtuales, acciones de tutora
acadmica y comunicacin de resultados de evaluacin de los aprendizajes.

P g i n a | 80

Evaluacin
En esta Unidad Ud., ser evaluado en:
4. Creacin de una Base de Datos, crear su backup y almacenarla en un
dispositivo fsico y como restaurarla su Base de Datos.
5. Desarrollar un caso prctico 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 diseador grafico de consultas y scripts.
Es importante que Ud., este en constante comunicacin con su
docente Tutor, ya sea para informar de dificultades, avances de
las tareas, etc. Recuerde que ser calificado de acuerdo a las
rbricas de evaluacin 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. Organizacin 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. Espaa

P g i n a | 81

UNIDAD

EDICION DE TABLAS Y REGISTROS

ESTRUCTURA DE CONTENIDOS

1. Edicin de Tablas y Registros


2. Actualizacin de datos.
3. Insertando datos usando los comando DML
4. Consultas simples

P g i n a | 82

Introduccin

Estimado participante:

En esta Unidad aprender a ingresar correctamente datos a su base de datos


utilizando el modo de diseo 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
diseador de consultas y cdigo SQL

Importante:

Si deseas ahondar ms sobre las nuevas caractersticas de Microsoft SQL Server


2008, podrs encontrar material adicional en la seccin: Material Complementario
en un apartado llamado: SQL server 2008 r2 SQL Trasact SQL (Date, 2003)

P g i n a | 83

EDICION DE TABLAS Y REGISTROS

Creando tablas e Insertando registros mediante Cdigo


Insertar registros a travs 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 botn
Nueva Consulta

Digitar el siguiente cdigo:


--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 vaca 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 podrn acceder a este fcilmente, 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 estn cargados mediante un nuevo SELECT
--Muestra la tabla
SELECT * FROM TIENDA

ACTUALIZACIN DE DATOS

Modificar nombres de Tablas y Columnas con Transact SQL


Primero para usar el sp_rename crearemos algunos ejemplos, Ud. podr
copiar el cdigo 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 estn
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

INSERTANDO DATOS USANDO LOS COMANDO DML

Declaracin 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
Declaracin 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
Declaracin UPDATE
Se usa para poner al da 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
Declaracin 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

CONSULTAS SIMPLES

Utilizando el Diseador 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 Opcin Disear Consulta en el Editor
C

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

Pas

Servicio

TIPO_HABITACION

Nombre_Servicio

Tipo_Habitacion

Descripcin

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 habitacin 101 para el cliente 12345 para las
noches del 2 al 4 de julio de 2012. El cdigo de la reserva es
autonumrico.
insert into reserva_habitac ([FechaENTRADA]
,[FechaSALIDA]
,[NumHABITACION]
,[CLIENTE])
values ('02-07-2012','04-07-2012',101,'12345')
3) Actualice el telfono del cliente 12345. Su nuevo nmero es 123456789.
select * from clientes where identificacion=12345
update clientes set telefono='123456789'
where identificacion=12345
4) Actualice el precio de los servicios incrementndolos en un 2%
update servicios set precio=precio*1.02
5) Borre la reserva de la habitacin 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 da 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 Espaa y
Francia.
select * from clientes
where pais in ('Espaa','Italia')
9) Crea una consulta que devuelva los clientesque tengan alguna observacin
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

AUTOEVALUACIN 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

segn

especificaciones
Se
B. UPDATE

utiliza

para

eliminar

registros de una tabla en una


base de datos
Conjunto

C. DELETE

de

manipulacin

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

operacin
F. CONSISTENCIA

9.

coherencia de los datos

Caso Prctico.
Crear la BD de Gestin Acadmica. Este corresponde a la gestin
acadmica 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 maana o tarde), de forma que el alumno se matricula en los cursos


pero indicando en cul de los grupos definidos para la misma.
Decidir los tipos de datos en funcin de la informacin 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,
calificacin)
Grupo (CodCurso, CodGrupo, max_alum, CodDocente)
Curso (CodCurso, nombre, crditos, carcter, curso)
Clase (CodCurso, CodGrupo, CodAula, hora, dia)
Aula (CodAula, capacidad)
Realizar las siguientes acciones:
1) Introducir datos en las tablas utilizando el LMD
2) Aadir a la tabla Alumno la columna sexo no permitir valores nulos.
3) Aadir a la tabla Docente la columna profesin permitir valores nulos.
4) Mostrar toda la informacin de las aulas
5) Mostrar el cdigo, nombre y profesin de los docentes
6) Mostrar a los docentes del departamento con cdigo 21
7) Buscar los cursos con ms de 6 crditos
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 das lunes.

P g i n a | 96

UNIDAD

ACTIVIDAD DIDCTICA

CASO 01:
Realice el siguiente diseo utilizando el MS SQL Server Management Studio.
Realizarlo de manera grafica y utilizando cdigo:

A continuacin realice las siguientes acciones:


Inserciones

Inserte el tipo de servicio OCIO.

De de alta una reserva de la habitacin 101 para el cliente 12345 para las
noches del 2 al 4 de julio de 2009. El cdigo de la reserva es
autonumrico.

Actualizaciones

Actualice el telfono del cliente 12345. Su nuevo nmero es 123456789.

Actualice el precio de los servicios incrementndolos en un 2%.

P g i n a | 97

Eliminar

Borre la reserva de la habitacin 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 slaba
le ordenados por su identificador.

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

Cree una consulta que devuelva los servicios cuyo precio supere los 5
ordenados por su cdigo de servicio.

Cree una consulta que devuelva las habitaciones reservadas para el da 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

Aada una columna calculada en la tabla gastos que obtenga el


importe por lnea sin aplicar el iva.

Aada una columna en servicios que indique si el servicio se ofrece a


los clientes o no.

TABLA y FK

Aada en gastos una referencia que indique el empleado que atendi


el servicio.

P g i n a | 98

Aada 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 direccin; el tipo de edificio y su categora.
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

ALBAIL

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

OFICINA

312

123 ELM

OFICINA

435

456 MAPLE

COMERCIO

460

1415

ALMACEN

P g i n a | 99

BEACH
515

789 OAK

RESIDENCIA

ASIGNACION
ID_T

ID_E

FECHA_INICIO

1235

312

2001-10-10

1235

515

2001-10-17

22

1311

435

2001-10-08

12

1311

460

2001-10-23

24

1412

111

2001-12-01

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

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

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. Cules 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. Cul es el nmero total de das que se han dedicado a fontanera en
el edificio 312?
7. Cuntos tipos de oficios diferentes hay?

P g i n a | 100

8. Para cada supervisor, Cul es la tarifa por hora ms alta que se paga
a un trabajador que informa a ese SUPERVISOR?
9. Para cada supervisor que supervisa a ms de un trabajador, cul es la
tarifa ms alta que se paga a un trabajador que informa a ese
SUPERVISOR?
10. Incrementar la tarifa a los trabajadores cuyo oficio son FONTANERO.

cis@ucv.edu.pe
http://www.ucv.edu.pe/cis/

P g i n a | 101

UNIDAD

GUIA DIDCTICA

Fundamentacin
El propsito de este modulo es ensearle al resolver consultas complejas
utilizando el diseador de consultas o cdigo SQL.
Capacidad
El participante al final de esta unidad estar en capacidad de:

Resolver consultas utilizando funciones d Disear su Base de Datos partiendo


de los requerimientos de informacin

Contenidos
1. Consultas con Criterios
2. Consultas Mediante Cdigo
3. Criterios de bsqueda anidada. Operadores lgicos.
4. Campos calculados.
5. Agrupacin.

P g i n a | 102

Actividades
Las actividades a desarrollar en la Unidad son:

Actividad 05:
o

Resuelve consultas compuestas utilizando criterios.

Valorar la teora y la prctica, como base del perfeccionamiento


profesional, individual y colectivo.

Estrategias Metodolgicas
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 tericos. Si se presenta alguna Duda se puede
realizar lecturas sobre puntos especficos en la seccin 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
comunicacin entre el docente y los estudiantes, para efectos de
mensajera interna, foros, evaluaciones virtuales, acciones de tutora
acadmica y comunicacin de resultados de evaluacin de los aprendizajes.

P g i n a | 103

Evaluacin
En esta Unidad Ud., ser evaluado en:
7. Realizar consultas con criterios, utilizando los operadores adecuados,
haciendo uso del diseador grafico de consultas y scripts.
Es importante que Ud., este en constante comunicacin con su
docente Tutor, ya sea para informar de dificultades, avances de
las tareas, etc. Recuerde que ser calificado de acuerdo a las
rbricas de evaluacin 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. Organizacin 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. Espaa

P g i n a | 104

UNIDAD

CONSULTAS CON CRITERIOS

6. Consultas con Criterios


7. Consultas Mediante Cdigo
8. Criterios de bsqueda anidada. Operadores lgicos.
9. Campos calculados.
10. Agrupacin.

P g i n a | 105

Introduccin

Estimado participante:

En esta Unidad aprender resolver consultas con operadores, funciones, aplicar


campos calculados utilizando el diseador de consultas o cdigo SQL.

Importante:
Si deseas ahondar ms sobre las nuevas caractersticas de Microsoft
SQL Server 2008, podrs encontrar material adicional en la seccin:
Material Complementario en un apartado llamado: SQL server 2008
r2 SQL Trasact SQL (Gabillaud, 2009)

P g i n a | 106

CONSULTAS CON CRITERIOS


Utilizando el Diseador 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 Opcin Disear Consulta en el Editor


C

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 CDIGO


1
Clusula SELECT
Argumentos:
DISTINCT Los Ingresos Distintos: Especifica que slo 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 BSQUEDA ANIDADA


AS Seudnimo de Columna: Se utiliza para poner un alias a una columna
y se muestre en la lista de

resultados como cabecera.

SELECT CodCliente AS 'Cdigo de Cliente'


FROM Cliente
ORDER BY

(Ordenado Por): Se utiliza para mostrar los resultados

ordenados por una o ms 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


bsqueda. 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 expresin numrica.

AVG([ALL | DISTINCT] expression)

Promedio de los valores de la expresin


numrica.

COUNT([ALL | DISTINCT] expression)

Nmero de valores en la expresin.

MAX (expression)

Valor mayor de la expresin.

MIN (expression)

Valor menor de la expresin.

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)
Comodn

Significado

Cualquier cadena de cero o ms caracteres.

Cualquier carcter individual

Incluya los caracteres comodn y la cadena de caracteres entre apstrofes 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 slaba 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 observacin 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 categora de
habitacin.
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 ms caro y del ms
barato
select max(precio) maximo, min(precio) mnimo
from servicios

P g i n a | 112

go

P g i n a | 113

AUTOEVALUACIN 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 expresin


Muestra

D. GROUP BY

los

ordenados

resultados

por

una

que

slo

ms

columna.

E. ORDER BY

Especifica
aparecer

filas

conjunto de
F. LIKE

G. AVG

11.

nicas

pueden
en

el

resultados.

Valor menor de una expresin


Promedio de los valores de la
expresin numrica.

Caso Prctico.
Crear la BD de Gestin Acadmica. Este corresponde a la gestin
acadmica de un centro de estudios (instituto con grupos diurnos y
nocturnos, o la universidad con titulaciones que se imparten en
horarios de maana o tarde), de forma que el alumno se matricula en
los cursos pero indicando en cul de los grupos definidos para la
misma.
Decidir los tipos de datos en funcin de la informacin 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,
calificacin)
Grupo (CodCurso, CodGrupo, max_alum, CodDocente)
Curso (CodCurso, nombre, crditos, carcter, 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 estn cursando algn 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 calificacin ms alta en el curso de BD
independientemente de su convocatoria. Y el alumno o alumnos con la
calificacin ms baja del mismo curso.
10) Mostrar los alumnos que estn matriculados slo en cursos electivos.

P g i n a | 115

UNIDAD

ACTIVIDAD

CASO 01:
Realice el siguiente diseo utilizando el MS SQL Server Management Studio.
Realizarlo de manera grafica y utilizando cdigo:

A continuacin realice las siguientes acciones:


Consultas de combinacin y subsentencia

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

Cree una consulta que devuelva las caractersticas de cada habitacin


reservada.

Cree una consulta que devuelva los precios de los distintos tipos de
habitacin 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 categora de


habitacin.

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
ms 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 ms caro y del ms
barato.

Crear una tabla temporal que recoja los clientes de Italia. Actualizar su
identificacin sumndole 10 y cambiando pas 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 bsquedas.

Cree

un

ndice

sobre

el

atributo

numHabitacion

de

la

tabla

reverva_habitac, con objeto de agilizar las bsquedas.

Cree un ndice sobre el atributo nombreServicio de la tabla servicios,


con objeto de agilizar las bsquedas.

P g i n a | 117

ALTER TABLE

Aada una columna calculada en la tabla gastos que obtenga el


importe por lnea sin aplicar el iva.

Aada una columna en servicios que indique si el servicio se ofrece a


los clientes o no.

TABLA y FK

Aada en gastos una referencia que indique el empleado que atendi


el servicio.

Aada en reserva_habitac una referencia que indique el empleado que


recogi la reserva.

cis@ucv.edu.pe
http://www.ucv.edu.pe/cis/

P g i n a | 118

UNIDAD

TALLER DE UNIDAD I Y
EXAMEN PARCIAL I

ESTRUCTURA DE CONTENIDOS

Taller de Unidad I

Examen Unidad I

cis@ucv.edu.pe
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. Segn 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
Aadir 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 DIDCTICA

07

Fundamentacin
Una de las mejores herramientas que tenemos para mejorar el rendimiento
de las consultas en las bases de datos son las vistas que son fciles de crear,
en esta unidad se

proporciona informacin sobre cmo 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

emplear

vistas

complejas

de

subconjunto,

agrupadas

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

CONTENIDOS
1. Vistas
2. Creacin por diseo y cdigo.

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, efecte una consulta sobre dicha
vista, para mostrar el menor y el mayor ao 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
ao 2012. Luego, efecte una consulta a dicha vista para listar aquellos
productos cuya letra inicial de su descripcin 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 descripcin
empiezan con la letra P o contenga la cadena SA y que hayan sido vendidos
en el segundo trimestre del ao 2012.

Estrategias Metodolgicas
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 tericos. Si se presenta alguna duda se puede
realizar lecturas sobre puntos especficos en la seccin 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
comunicacin entre el docente y los estudiantes, para efectos de mensajera
interna, foros, evaluaciones virtuales, acciones de tutora acadmica y
comunicacin de resultados de evaluacin de los aprendizajes.

P g i n a | 125

Evaluacin
En esta Unidad Ud., ser evaluado en:
8. Creacin de Vista simples.
9. Desarrollar un caso prctico, la Base de Datos trata de informatizar el
proceso de compras de una empresa, Esto es, recoger los pedidos de los
artculos, contemplados en su catlogo, que compran a proveedores ya
conocidos.
Reglas:

No se puede seleccionar un artculo que no se encuentre en el catlogo.

Si el stock alcanza el mnimo establecido, se ha de notificar como un


evento.

Realizar una vista que guarde el encabezado del pedido que se realizara
al proveedor.

Es importante

que Ud.,

Tutor, ya sea para

este en constante comunicacin con su docente

informar de dificultades, avances de las tareas, etc.

Recuerde que ser calificado de acuerdo a las rbricas de evaluacin 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 creacin de vistas

cis@ucv.edu.pe
http://www.ucv.edu.pe/cis/

P g i n a | 126

UNIDAD

VISTAS

07

ESTRUCTURA DE CONTENIDOS

1. Creacin por diseo


2. Creacin por cdigo.

cis@ucv.edu.pe
http://www.ucv.edu.pe/cis/

P g i n a | 127

Introduccin

Estimado participante:

En esta oportunidad le damos la bienvenida a esta nueva unidad de


aprendizaje, donde aprender los fundamentos necesarios para la creacin de
Vistas, en este manual se realizan consultas multitablas empleando funciones
agrupadas, para luego grabarlas en una vista.
La creacin 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 informacin que
hay en una tabla, pero no a toda la tabla.
En cuanto a Comodidad, el modelo relacional no es el ms cmodo
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

ms sobre

creacin de vistas visitar el

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

P g i n a | 128

CREACIN DE VISTAS POR DISEO EN SQL Server 2008 r2


Una vista se puede considerar como una tabla virtual o una consulta
almacenada. Los datos accesibles a travs de una vista no estn
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 Botn derecho para crear Vistas.

Presionar
Botn
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.

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 operacin


presionar el botn derecho en la Carpeta Vistas y seleccionar la
opcin deseada.
2

CREACIN DE VISTAS MEDIANTE CDIGO

Para crear Vistas mediante cdigo realizar lo siguiente:


1. Click en el botn Nueva Consulta
2. Digitar el cdigo:
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 cdigo y click en el Botn Ejecutar
11. Verificar la implementacin de la vista, digitando el siguiente cdigo:
SELECT * FROM MONTOXCONTRATO
12. La vista se almacenara en la carpeta Vistas

13. Para modificar una vista utilizar el siguiente cdigo:


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 cdigo:
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 cdigo, nombre y apellido del
aval de todos los inquilinos existentes, para que unos ciertos usuarios
tengan acceso slo a columnas especficas. 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

PRCTICA DESARROLLADA
TEMA:
Creacin de Vistas (Base de Datos DEPARTAMENTOS)
1. Muestre el nombre, apellido paterno y apellido materno de los inquilinos
que tienes el haber bsico ms alto y ms 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, direccin 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

AUTOEVALUACIN UNIDAD 07
12.

Marca con un crculo la opcin correcta en las siguientes


alternativas.
I.- Cules 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 diseado para facilitar un caso en particular.


B. El manejo de permisos y otras tareas administrativas es mucho

ms fcil a travs de vistas que a travs de tablas.


C. Una vista es utilizada para recuperacin rpida de datos.
D. Una vista es una rpida descripcin 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.- Cul de las siguientes sentencias es cierta sobre las relaciones?


A. Las relaciones son entidades.
B. Las relaciones son enlaces lgicos entre las tablas implementadas

a travs de Primary y Foreign keys.


C. Las relaciones son almacenadas como atributos en la base de

datos.
D. Las relaciones explcitamente definen una asociacin entre 2

tablas.
13.

Completa los espacios en blanco con la respuesta correcta.


n. Defina que es una VISTA: __________________________________
_______________________________________________________
_______________________________________________________
o. Cules son las ventajas de trabajar con vistas?
_______________________________________________________
_______________________________________________________
_______________________________________________________
p. Cules 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 informacin en varias
tablas. El director no quiere que los empleados de administracin conozcan la
estructura de las tablas ni algunos datos de los profesores y socios, por ello se
crean vistas a las cuales tendrn 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','mircoles','jueves','viernes','sbado')),
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 da y el nombre del profesor y muestre la informacin
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 da) para los cuales no hay
inscriptos.
4. Muestre los nombres de los socios que no se han inscripto en ningn
curso (consultando la vista)
5. Muestre (consultando la vista) los profesores que no tienen asignado
ningn deporte an.
6. Muestre (consultando la vista) el nombre y documento de los socios que
deben matrculas.
7. Consulte la vista y muestre los nombres de los profesores y los das en
que asisten al club para dictar sus clases.
8. Muestre la misma informacin anterior pero ordenada por da.
9. Muestre todos los socios que son compaeros en tenis los lunes.
10. Elimine la vista "vista_inscriptos" si existe y crela para que muestre la
cantidad de inscriptos por curso, incluyendo el nmero del curso, el
nombre del deporte y el da.
11. Consulte la vista: SELECT * FROM vista_inscriptos;

P g i n a | 137

UNIDAD

08

GUIA DIDCTICA
Fundamentacin

El propsito 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. Tambin, se puede utilizar
estructuras

de

control

de

flujo

por

Transact/SQL

para

conectar

las

instrucciones utilizando estructuras de tipo de programacin.


Aprendern

a manejar la programacin 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 programacin 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 Parmetros
3. Procedimientos Almacenados con Parmetros

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 parmetro de entrada el cdigo
del producto.

2. Cree un procedimiento almacenado que muestre los datos de las boletas


con su monto total por boleta. El procedimiento recibir como parmetro
de entrada el cdigo del vendedor que emiti dicha boleta.
3. Cree un procedimiento almacenado que muestre el detalle de una
boleta. El procedimiento recibir como parmetro de entrada el cdigo
de dicha boleta.
4. Cree un procedimiento almacenado que permita ingresar datos a la tabla
PRODUCTO y que reciba como parmetros de entrada los datos para
cada campo. Considere que el cdigo 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 descripcin, y si esto ocurriera, muestre un mensaje que indique
Ya existe un producto con la misma descripcin. Los mensajes de error
debern ser invocados desde otro procedimiento almacenado.
5. Cree un procedimiento almacenado que permita el ingreso de datos de
un empleado. El procedimiento tendr como parmetros de entrada
todos los campos de la tabla empleado. Tome en cuenta las siguientes
condiciones antes de ingresar un empleado:

El cdigo del empleado debe ser nico.

No deber permitir ingresar empleados cuya edad sea menor a 18


aos.

No deber permitir ingresar empleados con el email repetido.

Si existieran errores se mostrarn los mensajes correspondientes.

6. Cree un procedimiento almacenado que permita actualizar el stock


mnimo

de

un

producto.

El

procedimiento

tendr

los

siguientes

parmetros de entrada: cdigo del producto y el stock mnimo a


actualizar. Considere las siguientes condiciones antes de modificar un
producto:

No permitir registrar stocks negativos.

P g i n a | 139

Slo puede modificarse aquellos productos con un stock actual menor


a 100 unidades.

Si existieran errores se mostrarn los mensajes correspondientes.

7. Cree un procedimiento almacenado que permita eliminar un distrito. El


procedimiento tendr como parmetro de entrada el cdigo del distrito.
U distrito ser eliminado siempre y cuando no est asociado a algn
empleado o cliente.

P g i n a | 140

Estrategias Metodolgicas
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 tericos. Si se presenta alguna Duda se puede
realizar lecturas sobre puntos especficos en la seccin 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 comunicacin entre el
docente y los estudiantes, para efectos de mensajera interna, foros, evaluaciones virtuales,
acciones de tutora acadmica y comunicacin de resultados de evaluacin de los
aprendizajes.

Evaluacin
En esta Unidad Ud., ser evaluado en:
15. Desarrollar un caso prctico de crear una Base de Datos para un Empresa
determinada

identificando

sus

tablas

asignndole

sus

columnas

respectivos tipo de datos de acuerdo a la columna (atributo).


16. Crear un diagrama de base de datos, identificando las claves primarias y
forneas para cada una de las tablas. Aplicando el Modo grfico y Cdigo
SQL Server.
Es importante que Ud., este en constante comunicacin con su
docente Tutor, ya sea para informar de dificultades, avances de
las tareas, etc. Recuerde que ser calificado de acuerdo a las
rbricas de evaluacin 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 creacin de procedimientos almacenados
http://www.devjoker.com/contenidos/Tutorial-de-TransactSQL/238/Procedimientos-almacenados-en-Transact-SQL.aspx
Tutorial para la creacin de procedimientos almacenados

cis@ucv.edu.pe
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 Parmetros
3. Procedimientos Almacenados con Parmetros

P g i n a | 143

Introduccin

Estimado participante:

En esta oportunidad le damos la bienvenida a esta nueva unidad de


aprendizaje, donde aprender los fundamentos necesarios para la creacin de
procedimientos almacenados con y sin parmetros, estos

son grupos

formados por instrucciones SQL y el lenguaje de control de flujo. Cuando se


ejecuta un procedimiento, se prepara un plan de ejecucin para que la
subsiguiente ejecucin sea muy rpida.
La posibilidad de escribir procedimientos almacenados mejora notablemente
la potencia, eficacia y flexibilidad de SQL. Los procedimientos compilados
mejoran la ejecucin de las instrucciones y lotes de SQL de forma dramtica.
Te deseamos xitos en el desarrollo de esta Unidad.

Importante:
Si deseas ahondar

ms sobre

las nuevas caractersticas de

Microsoft SQL Server 2008, podrs encontrar material adicional en


la seccin: Material Complementario en un apartado llamado: SQL
server 2008 r2 SQL Trasact SQL (Gabillaud, 2009)

P g i n a | 144

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 botn derecho en la carpeta Procedimiento almacenado, como
se indica en la siguiente figura.

P g i n a | 145

Se mostrara el siguiente cdigo:


CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName>
-- Add the parameters for the stored procedure here
<@Param1, sysname, @p1> <Datatype_For_Param1, , int> =
<Default_Value_For_Param1, , 0>,
<@Param2, sysname, @p2> <Datatype_For_Param2, , int> =
<Default_Value_For_Param2, , 0>
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 <@Param1, sysname, @p1>, <@Param2, sysname, @p2>
END
GO

Luego realizar los siguinetes ejemplos:

Procedimientos Almacenados Sin Parmetros

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 parmetros de
entrada y
--para ejecutarlo deber usar una de las siguientes sentencias:
EXECUTE LISTAR_EDIFICIOS
EXEC LISTAR_EDIFICIOS

P g i n a | 146

Procedimientos Almacenados con Parmetros

Cree un procedimiento almacenado que permita buscar los datos de un


Usuario. El procedimiento tiene los siguientes parmetros 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 parmetros y realiza
una bsqueda exacta dado el Nombre y Apellido del Usuario.

P g i n a | 147

PRCTICA DESARROLLADA
Modifique el procedimiento anterior para que la bsqueda 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 bsqueda por


una secuencia de caracteres.
Cree un procedimiento almacenado que muestre el cdigo, nombre y direccin
del edificio as como el cdigo, nmero de ambiente y piso del departamento.
El procedimiento recibir como parmetro de entrada el cdigo del edificio. Se
debe considerar que el parmetro de entrada tendr un valor por defecto
igual a vaco.
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 parmetro de entrada @COD_EDIF, se ha definido un valor por defecto
igual a vaco. El procedimiento almacenado tomara 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

AUTOEVALUACIN UNIDAD 08
14.

Escribe una V si la proposicin es verdadera o escribe F si la


proposicin 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 instruccin CREATE STORE PROCEDURE para crear un


Procedimiento Almacenado ....................................................(

e. Los procedimientos almacenados se ejecutan de manera instantnea


.........................................................................................(
f.

Un procedimiento almacenado se comunica con el programa que lo


llama mediante sus parmetros. ............................................(

g. El procedimiento almacenado tambin puede devolver valores al


programa que lo llama mediante parmetros OUTPUT ..............(

h. Un procedimiento almacenado puede tener hasta 2.100 parmetros,


cada uno de ellos con un nombre, un tipo de datos, una direccin 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 parmetros?
______________________________________
_______________________________________________________
_______________________________________________________
s. Indique la sintaxis para modificar un procedimiento almacenado.
_______________________________________________________
_______________________________________________________

P g i n a | 150

UNIDAD

ACTIVIDAD DIDCTICA

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 direccin; el tipo de edificio y su categora.
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 parmetros:
11. Mostrar los trabajadores cuya tarifa se encuentren en un monto determinado.
12. Cules 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. Cuntos tipos de oficios diferentes hay?
17. Para cada supervisor que supervisa a ms de un trabajador, cul es la
tarifa ms alta que se paga a un trabajador que informa a ese
SUPERVISOR?
18. Incrementar la tarifa a los trabajadores de un oficio determinado.

cis@ucv.edu.pe
http://www.ucv.edu.pe
/cis/

P g i n a | 151

UNIDAD

GUIA DIDCTICA

Fundamentacin
El propsito 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. Tambin, se puede utilizar
estructuras

de

control

de

flujo

por

Transact/SQL

para

conectar

las

instrucciones utilizando estructuras de tipo de programacin.


Aprendern
conceptos

a manejar la programacin 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 programacin 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 VALIDACIN
Creacin por diseo y cdigo.
Importancia para la tabla y base.
Asociacin con los procedimientos almacenados.
Ventajas en la seguridad de la base.
Disparadores en las operaciones bsicas.

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 almacn

Cree una transaccin parecida al ejemplo 3 para insertar productos

Modifique el precio de 4.5 a 10 del jabn de la tabla productos, realice la


sentencia que muestre la fila modificada

Cree una transaccin que dado un cdigo de producto, cantidad, cdigo 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

cdigo='prod01'

fecha='2010-02-02'

pedido=1

La existencia actual del prod01 es 100, cuando se realice esa insercin, se


deber actualizar a 80, al final de la transaccin 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 Metodolgicas
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 tericos. Si se presenta alguna Duda se puede
realizar lecturas sobre puntos especficos en la seccin 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 comunicacin entre el
docente y los estudiantes, para efectos de mensajera interna, foros, evaluaciones virtuales,
acciones de tutora acadmica y comunicacin de resultados de evaluacin de los
aprendizajes.

Evaluacin
En esta Unidad Ud., ser evaluado en:
17. Desarrollar un caso prctico de crear una Base de Datos para un Empresa
determinada

identificando

sus

tablas

asignndole

sus

columnas

respectivos tipo de datos de acuerdo a la columna (atributo).


18. Crear un diagrama de base de datos, identificando las claves primarias y
forneas para cada una de las tablas. Aplicando el Modo grfico y Cdigo
SQL Server.
Es importante que Ud., este en constante comunicacin con su
docente Tutor, ya sea para informar de dificultades, avances de
las tareas, etc. Recuerde que ser calificado de acuerdo a las
rbricas de evaluacin 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 creacin de Trigger.

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

cis@ucv.edu.pe
http://www.ucv.edu.pe/cis/

P g i n a | 156

UNIDAD

REGLAS Y VALIDACIN

ESTRUCTURA DE CONTENIDOS

1.

Reglas y Validacin

2.

Creacin por diseo y cdigo.

3.

Importancia para la tabla y base.

4.

Asociacin con los procedimientos almacenados.

5.

Ventajas en la seguridad de la base.

6.

Disparadores en las operaciones bsicas.

P g i n a | 157

Introduccin

Estimado participante:

En esta oportunidad le damos la bienvenida a esta nueva unidad de


aprendizaje, donde aprender los fundamentos necesarios para la creacin de
disparadores (trigger

desencadenador)

es

una

clase

especial

de

procedimiento almacenado que se ejecuta automticamente 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 ms sobre las nuevas caractersticas de Microsoft SQL Server


2008, podrs encontrar material adicional en la seccin: Material Complementario
en un apartado llamado: SQL server 2008 r2 SQL Trasact SQL (Gabillaud, 2009)

P g i n a | 158

PROCEDIMIENTOS ALMACENADOS

SINTAXIS
CREATE TRIGGER <trigger_name, sysname, table_alter_drop_safety>
ON DATABASE
FOR <data_definition_statements, , DROP_TABLE, ALTER_TABLE>
AS
BEGIN
END
Luego realziar los siguientes ejemplos:
A continuacin 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 Insercin
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
tmala misma estructura del cual se origin el Trigger, de tal manera que se
pueda verificar los datos y ante un error podra 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 nmero de usuarios que tienen el mismo
nombre y apellido y de encontrarse ms de un usuario no se deber permitir
ingresar los datos del usuario. Este disparador imprime un mensaje si la
insercin se revierte y otro si se acepta.
Ejemplo de Disparador de Eliminacin
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 podra revertirse los cambios.
En este caso la reversin de los cambios significar restaurar los datos
eliminados.
Cree un Trigger el cual permita eliminar Inquilinos cuyo haber bsico sea
menor a 400 soles. De eliminarse algn inquilino que no cumpla con dicha
condicin la operacin 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 Bsico del Inquilino debe ser menor a 400 soles'
End
En este ejemplo, verificamos el haber bsico del inquilino y de superar los 400
soles la operacin deber ser cancelada.

Ejemplo de Disparador de Actualizacin

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 podran 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 continuacin, se describen algunas limitaciones o restricciones impuestas a
los disparadores por SQL Server:
Una tabla puede tener un mximo de tres disparadores: uno de
actualizacin, uno de insercin y uno de eliminacin.
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 ningn mensaje de error su crea un disparador en una tabla del
sistema, el disparador no se utilizar.

P g i n a | 161

PRCTICA 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 CDIGO 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 ELIMINACIN. */
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 ACCIN 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 eliminacin 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 clculo 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

AUTOEVALUACIN 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

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 direccin; el tipo de edificio y su categora.
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 almacn

20.Cree un TRIGGER el cual permita eliminar los trabajadores que no han sido
asignados a ningn edificio. De eliminarse algn Trabajador que no cumpla con
dicha condicin la operacin no deber ejecutarse.
21. Cree un TRIGGER que valide la tarifa por hora de un trabajador,
donde dichos datos sean mayores a cero.

cis@ucv.edu.pe
http://www.ucv.edu.pe/cis/

P g i n a | 164

UNIDAD

10

GUIA DIDCTICA
Fundamentacin

La finalidad de esta unidad est orientado a que el alumno frente a una


determinada situacin informtica, analice y desarrolle una solucin slida,
ptima; en base a los requerimientos del usuario. A su vez est orientado al
estudio y conocimiento de la plataforma de desarrollo .Net , especficamente
Visual Basic.NET 2010 para la elaboracin aplicaciones de escritorio que
interacten con el administrador de base de datos SQL 2008 R2 en funcin al
lenguaje TRANSACT SQL manejando Procedimientos Almacenados. Adems,
conocer el entorno de del Lenguaje de Programacin Visual Basic .Net 2010
dicha herramienta proporciona al alumno realizar soluciones informticas en
diversos medios empresariales. De esta manera, mejorar la productividad del
desempeo profesional que responda a las exigencias del entorno

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

Proporcionar los conocimientos y prcticas necesarias para afrontar


situaciones en los cuales se requiere el anlisis del alumno para dar una
solucin acorde con el problema.

Proporcionar

conocimientos

necesarios

para

afrontar

casos

de

programacin 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 disear una interfaz visual.
Aplicar controles de ingreso. Validacin.
Conectividad. Entorno de datos.
Conectividad. Cdigo 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

Conexin

base

de

datos

de

manera

conectada

desconectada(temporal) utilizando la librera System Data SqlClient

Creacin de formularios MDI.

Creacin de Formularios hijos.

Manejo de Controles.

Ejecucin de Procedimientos almacenados desde .NET

Programacin de procesos bsicos: Nuevo, Modificar, eliminar, Grabar y


cancelar.

Estrategias Metodolgicas
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 tericos. Si se presenta alguna Duda se puede
realizar lecturas sobre puntos especficos en la seccin 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 comunicacin entre el
docente y los estudiantes, para efectos de mensajera interna, foros, evaluaciones virtuales,
acciones de tutora acadmica y comunicacin de resultados de evaluacin de los
aprendizajes.

P g i n a | 166

Evaluacin
En esta Unidad Ud., ser evaluado en:
19. Desarrollar un caso prctico de conexin de una Base de Datos con el
Lenguaje de Programacin Visual Basic .Net 2010.
20. Disear su aplicacin 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 comunicacin con su
docente Tutor, ya sea para informar de dificultades, avances de
las tareas, etc. Recuerde que ser calificado de acuerdo a las
rbricas de evaluacin 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.

cis@ucv.edu.pe
http://www.ucv.edu.pe/cis/

P g i n a | 167

UNIDAD

PROYECTO ESTANDAR
PARA TABLAS

10

PROYECTO ESTANDAR PARA TABLAS


Crear y disear una interfaz visual.
Aplicar controles de ingreso. Validacin.
Conectividad. Entorno de datos.
Conectividad. Cdigo y colecciones de datos

P g i n a | 168

Introduccin

Estimado participante:

En esta oportunidad le damos la bienvenida a esta nueva unidad de


aprendizaje, donde aprender los fundamentos necesarios para la creacin 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 Programacin Visual Basic .Net 2010
Te deseamos xitos en el desarrollo de esta Unidad.

Importante:

Si deseas ahondar ms sobre las nuevas caractersticas de Microsoft Visual Basic:


Net

2010,

podrs

encontrar

material

adicional

en

la

seccin:

Material

Complementario.

P g i n a | 169

10

PROYECTO ESTANDAR PARA TABLAS

Desde el botn "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 configuracin de entorno predeterminada, por ejemplo


"Configuracin de desarrollo de Visual Basic":
NOTA: En caso de que esta configuracin se haga de forma inadecuada o mal
indicada; despus de la instalacin, podemos cambiar dicha configuracin
dirigindonos

al

Men

Herramientas/Importar

Exportar

configuraciones /Restablecer todas las configuraciones, y desde ah


volver a configurar el modo sobre Configuracin de desarrollo de Visual Basic.

P g i n a | 170

Y ya podremos disponer de este entorno de programacin 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 opcin


Visual Basic /Windows, del rbol de seleccin de la parte izquierda, y paso
seguido la opcin Aplicacin 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 botn Aceptar.

El entorno de Visual Basic .Net


Descripcin de la interfaz grfica de vb.net 2010:

A Men: en esta barra se encuentra los mens de acceso a todas las


funcionalidades de vb.net.
B Estndar: en esta barra se puede acceder a botones de edicin (copiar,
pegar, cortar, deshacer, rehacer) y acciones de ejecucin y depuracin, a su
vez muestra botones para administracin de las ventanas emergentes del
vb.net.
C Diseo: en esta barra se encuentran los botones para ayuda de diseo de
interfaz grfica, los cuales se habilitan segn los objetos que se estn
visualizando en modo diseo.

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, imgenes, clases, mdulos, etc).

Nota: Es importante que en esta seccin 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

segn

caractersticas

se
sus

(todos

los

controles,

controles

comunes,

contenedores,

mens,

datos,

componentes,

impresin,

dilogos, entre otros).

2.4.5. Modo Diseo


En este modo se visualiza el editor de diseo, el cual permite generar una
interfaz grfica 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 diseo oprima las Teclas (Shift + F7)

P g i n a | 173

2.4.6. Modo Cdigo


En este entorno se digita y codifican todos los algoritmos y procedimientos
necesarios para la ejecucin de nuestro programa. Dentro de este modo se
pueden acceder a objetos y controles nicos del tipo Cdigo, como son los
Mdulos, Cdigos de Clases, entre otros.
Para acceder al modo Cdigo oprima la Tecla ( F7 ) u oprima Click + Der
sobre el formulario y seleccione la opcin ver Cdigo.

Guardando un Proyecto
Cuando se est trabajando con un solo proyecto nuevo es recomendable que
antes de ingresar cdigo 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 Ubicacin debemos indicar un sitio o directorio donde se generar
la solucin agregamos, por ello es necesario que siempre este activo el check:
Posteriormente, deberemos presionar el botn Guardar

P g i n a | 174

CREACIN DE UNA NUEVA SOLUCIN


Deber ir al Men Archivo, luego en Nuevo Proyecto ( pulse las telas
CTRL + N), a continuacin nos mostrar la siguiente ventana:
Considere lo siguiente:
1. Tipo de Proyecto: Visual Basic.
2. Plantilla: Aplicacin de Windows.
3. Luego escriba el nombre de la aplicacin: SISVENTAS
4. Especifique la carpeta donde se guardar el proyecto (sta deber ser una
carpeta creada por usted, use el botn Examinar para localizar su carpeta
personal)
5. Hacer clic en el botn 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 CONEXIN A UN ORIGEN DE DATOS DETERMINADO


(CONNECTION)
Establece una conexin a un origen de datos determinado. Para nuestro caso
crearemos el objeto Connection en un mdulo.

Haga clic en el men PROYECTO

Luego seleccione con un clic en la opcin AGREGAR NUEVO ELEMENTO

Se presenta una ventana de dialogo seleccione

MODULO y escriba el

nombre: MODCONEXION luego clic en el botn AGREGAR.

Seguidamente se presentar una ventana en blanco para la codificacin


del mdulo correspondiente.

ESCRIBA EL SIGUIENTE CDIGO 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
Dnde:
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

Contrasea de inicio de sesin para una cuenta de SQL


Server

P g i n a | 176

ACCEDER A DATOS DE UNA TABLA VISUALIZACIN


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 conexin
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 nmero 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 posicin que tenga la var. fila
Me.BindingContext(ds, "Articulo").Position = fila
' total de registros en la tabla artculos
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 Artculo: ", "Buscar")
dv.Table = ds.Tables("Articulo")
dv.Sort = "IdProducto"
fila = dv.Find(strDato)
If fila = -1 Then
MessageBox.Show("Codigo del Artculo 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
MTODO 2: UTILIZANDO OBJETOS DATAROW
Imports System.Data
Imports System.Data.SqlClient
' Esto va la seccin 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 conexin
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 nmero 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 artculos
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 Artculo: ", "Buscar")
dv.Table = ds.Tables("Articulo")
dv.Sort = "IdProducto"
fila = dv.Find(strDato)
If fila = -1 Then
MessageBox.Show("Codigo del Artculo no Existe", "Cuidado")
Exit Sub
End If
CargarDatos(fila)
End Sub
End Class

P g i n a | 181

PRCTICA DESARROLLADA
Ingrear
a Visual Basic .net y disear 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 diseo, presionar la tecla F7 para ingrear a la ventana de codigo y


digitar el siguiente cdigo
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 disear un formulario el cual permitira otorgar
acceso a un usuario determinado.

Terminado el diseo, presionar la tecla F7 para ingrear a la ventana de codigo y


digitar el siguiente cdigo

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 contrasea 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

AUTOEVALUACIN UNIDAD 10
Completa los espacios en blanco con la respuesta correcta.
x. Que es un Mantenedor: ________
_______________________________________________________
_______________________________________________________
y. Cul 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 DIDCTICA

10

Disear una aplicacin 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

cis@ucv.edu.pe
http://www.ucv.edu.pe/cis/

P g i n a | 188

UNIDAD

11

GUIA DIDACTICA
Fundamentacin

La finalidad de esta unidad est orientado a que el alumno frente a una


determinada situacin informtica, analice y desarrolle una solucin slida,
ptima; en base a los requerimientos del usuario.
Con el lenguaje Visual Basic.NET 2010 permite la creacin de aplicaciones de
escritorio que interacten con el administrador de base de datos SQL 2008 R2
en

funcin

al

lenguaje

TRANSACT

SQL

empleando

Procedimientos

Almacenados, vistas y consultas. Este Software proporciona al alumno las


herramientas necesarias para realizar aplicaciones informticas en diversos
medios empresariales. De esta manera, mejorar la productividad del
desempeo profesional que responda a las exigencias del entorno

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

Proporcionar los conocimientos y prcticas necesarias para afrontar


situaciones en los cuales se requiere el anlisis del alumno para dar una
solucin acorde con el problema.

Proporcionar

conocimientos

necesarios

para

afrontar

casos

de

programacin 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. Programacin Tres Capas.
2. Visualizacin de los datos de una tabla en el formulario mediante un
DataGridView.
3. Visualizacin 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

Diseo de formularios.

Identifica de eventos.

Emplea Propiedades y variables

Manejo de Controles.

Control de errores.

Estrategias Metodolgicas
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 tericos. Si se presenta alguna Duda se puede
realizar lecturas sobre puntos especficos en la seccin 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
comunicacin entre el docente y los estudiantes, para efectos de
mensajera interna, foros, evaluaciones virtuales, acciones de tutora
acadmica y comunicacin de resultados de evaluacin de los
aprendizajes.

P g i n a | 190

Evaluacin
En esta Unidad Ud., ser evaluado en:
21. Desarrollar un caso prctico de conexin de una Base de Datos con el
Lenguaje de Programacin Visual Basic .Net 2010.
22. Disear su aplicacin 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 comunicacin con su
docente Tutor, ya sea para informar de dificultades, avances de
las tareas, etc. Recuerde que ser calificado de acuerdo a las
rbricas de evaluacin 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.

cis@ucv.edu.pe
http://www.ucv.edu.pe/cis/

P g i n a | 191

UNIDAD

PROYECTO ESTANDAR
PARA TABLAS

11

PROYECTO ESTANDAR PARA TABLAS


1. Programacin Tres Capas.
2. Visualizacin de los datos de una tabla en el formulario mediante un
DataGridView.
3. Visualizacin de los datos de una tabla en el formulario mediante
controles TextBox.

P g i n a | 192

Introduccin

Estimado participante:

En esta oportunidad le damos la bienvenida a esta nueva unidad de


aprendizaje, donde aprender los fundamentos necesarios para la creacin 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 Programacin Visual Basic .Net 2010
Te deseamos xitos en el desarrollo de esta Unidad.

Importante:

Si deseas ahondar ms sobre las nuevas caractersticas de Microsoft Visual Basic:


Net

2010,

podrs

encontrar

material

adicional

en

la

seccin:

Material

Complementario.

P g i n a | 193

PROGRAMACIN TRES CAPAS.

La programacin en 3 capas es una metodologa de programacin en la cual


establecemos niveles de acceso y distribuimos las areas de nuestra
aplicacin para acceder a bases de datos, esto tiene cierta jerarqua 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 negociacin entre la presentacin del programa y los datos.
Presentacin
Negocio
datos

As que la capa de datos es la que tiene la interaccin 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 presentacin muestra los datos en los diversos formularios
para su interaccin con el usuario que administre los mismos.
CREACIN DE UNA NUEVA SOLUCIN
Deber ir al Men Archivo, luego en Nuevo Proyecto ( pulse las telas
CTRL + N), a continuacin nos mostrar la siguiente ventana:
Considere lo siguiente:
1. Tipo de Proyecto: Visual Basic.
2. Plantilla: Aplicacin de Windows.
3. Luego escriba el nombre de la aplicacin: SISVENTAS
4. Especifique la carpeta donde se guardar el proyecto (sta deber ser una
carpeta creada por usted, use el botn Examinar para localizar su carpeta
personal)
5. Hacer clic en el botn 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 CONEXIN A UN ORIGEN DE DATOS DETERMINADO


(CONNECTION)
Establece una conexin a un origen de datos determinado. Para nuestro caso
crearemos el objeto Connection en un mdulo.

Haga clic en el men PROYECTO

Luego seleccione con un clic en la opcin AGREGAR NUEVO ELEMENTO

Se presenta una ventana de dialogo seleccione

MODULO y escriba el

nombre: MODCONEXION luego clic en el botn AGREGAR.

P g i n a | 195

Seguidamente se presentar una ventana en blanco para la codificacin


del modulo correspondiente.

ESCRIBA EL SIGUIENTE CDIGO 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


Contrasea de inicio de sesin para una cuenta de SQL
Server

P g i n a | 196

VISUALIZACIN

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 slo lectura de una


cantidad pequea de datos o puede ajustar su tamao para mostrar
vistas modificables de conjuntos muy grandes de datos.

Personalizar un DataGridView

ACCEDER A DATOS DE UNA TABLA VISUALIZACIN


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 conexin
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 nmero 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 posicin que tenga la var. fila
Me.BindingContext(ds, "Articulo").Position = fila
' total de registros en la tabla artculos
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 Artculo: ", "Buscar")
dv.Table = ds.Tables("Articulo")
dv.Sort = "IdProducto"
fila = dv.Find(strDato)
If fila = -1 Then
MessageBox.Show("Codigo del Artculo 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
MTODO 2: UTILIZANDO OBJETOS DATAROW
Imports System.Data
Imports System.Data.SqlClient
' Esto va la seccin 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 conexin
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 nmero 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 artculos
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 Artculo: ", "Buscar")
dv.Table = ds.Tables("Articulo")
dv.Sort = "IdProducto"
fila = dv.Find(strDato)
If fila = -1 Then
MessageBox.Show("Codigo del Artculo no Existe", "Cuidado")
Exit Sub
End If
CargarDatos(fila)
End Sub
End Class

P g i n a | 201

PRCTICA DESARROLLADA
Ingrear
a Visual Basic .net y disear 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 diseo, presionar la tecla F7 para ingrear a la ventana de codigo y


digitar el siguiente cdigo
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 disear un formulario el cual permitira otorgar
acceso a un usuario determinado.

Terminado el diseo, presionar la tecla F7 para ingrear a la ventana de codigo


y digitar el siguiente cdigo
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 contrasea 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

AUTOEVALUACIN UNIDAD 11
Completa los espacios en blanco con la respuesta correcta.
bb.

Que es un Mantenedor: ________

_______________________________________________________
_______________________________________________________
cc. Cul 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 DIDCTICA

11

Disear una aplicacin 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

cis@ucv.edu.pe
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

También podría gustarte