You are on page 1of 64

UNIVERSIDAD

CATLICA DE SANTA
MARA


FACULTAD DE CIENCIAS E
INGENIERAS FSICAS Y
FORMALES


PROGRAMA PROFESIONAL
DE INGENIERA DE
SISTEMAS

CURSO: Administracin de los datos y
la informacin



DOCENTE:
ING. Guillermo Caldern Ruiz


PRESENTADO POR:

PEROCHENA CORNEJO IRVIN
VALDEZ HUAMANI WILLIAM

AREQUIPA PER
2013



INDICE
RESUMEN ................................................................................................................................................ 5
INTRODUCCION ..................................................................................................................................... 5
OBJETIVOS .............................................................................................................................................. 5
SUPOSICIONES ADICIONALES ............................................................................................................ 6
DIAGRAMA DE ENTIDAD RELACIN ...................................................................................................................... 6
ENTIDADES: ............................................................................................................................................................ 6
O ENTIDAD USUARIO ......................................................................................................................................... 7
O ENTIDAD CONTENIDO .................................................................................................................................. 7
O ENTIDAD DESCARGA ..................................................................................................................................... 8
O ENTIDAD REGALO ........................................................................................................................................... 8
O ENTIDAD PROMOCIONES ............................................................................................................................ 8
O ENTIDAD CATEGORIA ................................................................................................................................... 9
O ENTIDAD RANKING......................................................................................................................................... 9
DIAGRAMA ENTIDAD RELACION: ......................................................................................................... 9
NORMALIZACIN: ............................................................................................................................................................10
PASO 1: Transformacin de Entidades...............................................................................................................11
PASO 2: Transformacin de Entidades Dbiles .............................................................................................11
PASO 3: Transformacin de 1: N............................................................................................................................11
O Usuario-Promociones (1:N) ......................................................................................................................11
O Promociones-Contenido (1:N) .................................................................................................................12
............................................................................................................................................................................................12
O Categoria-Contenido (1:N) ........................................................................................................................13
O Contenido-Ranking (1:N) ...........................................................................................................................13
PASO 4: Transformacin De 1: 1 ............................................................................................................................14
PASO 5: Transformacin De N: M ..........................................................................................................................14
PASO 6: Transformacin De Atributos Multivaluados ...............................................................................14
PASO 7: Transformacin De Vnculos .................................................................................................................14
PASO 8: Informacin De Una Generalizacin. ............................................................................................14
DIAGRAMA RELACIONAL.............................................................................................................................................15
Breve Explicacin ..........................................................................................................................................................15
Cardinalidad .....................................................................................................................................................................16
DICCIONARIO DE DATOS .............................................................................................................................................16
CDIGO SQL PARA CADA UNA DE LAS CONSULTAS ...................................................................................19


Consulta 1:...............................................................................................................................................................19
Consulta 2:...............................................................................................................................................................19
Consulta 3:...............................................................................................................................................................20
Consulta 4:...............................................................................................................................................................20
Consulta 5:...............................................................................................................................................................21
Consulta 6:...............................................................................................................................................................22
Consulta 7:...............................................................................................................................................................22
Consulta 8:...............................................................................................................................................................23
Consulta 9:...............................................................................................................................................................23
Consulta 10: ............................................................................................................................................................24
Consulta 11: ............................................................................................................................................................24
Consulta 12: ............................................................................................................................................................25
Consulta 13: ............................................................................................................................................................25
Consulta 14: ............................................................................................................................................................26
Consulta 15: ............................................................................................................................................................27
PROCEDIMIENTOS ALMACENADOS: ....................................................................................................................28
AbrirCuenta: ...........................................................................................................................................................28
Cerrar Cuenta: .......................................................................................................................................................29
Descarga: ..................................................................................................................................................................30
Regalo: .......................................................................................................................................................................32
Agregar Contenido: .............................................................................................................................................33
Ingresar Promocin: ..........................................................................................................................................34
Cargar Dinero: .......................................................................................................................................................35
Crear Categora:....................................................................................................................................................36
DESCRIPCION GENERAL DE LA ARQUITECTURA .........................................................................................38
1. REGISTRARSE........................................................................................................................................................38
2. TIENDA ..................................................................................................... Error! Marcador no definido.
3. ADMINISTRACION ..............................................................................................................................................44
Insertar Contenido:..................................................................................................................................................44
Modificar Contenido: ..............................................................................................................................................45
Eliminar Contenido ..................................................................................................................................................46
Cerrarcuenta ...............................................................................................................................................................48
MANUAL DE USUARIO ...................................................................................................................................................49
DESCRIPCION ..................................................................................................................................................................49
REQUERIMIENTOS DEL SISTEMA ........................................................................................................................49


ACCESO A LA APLICACIN .......................................................................................................................................49
1. PESTAA REGISTRAR ..................................................................................................................................51
2. PESTAA TIENDA ..........................................................................................................................................52
3. PESTAA ADMINISTRACION ...................................................................................................................53
Contenido ......................................................................................................................................................54
O Insertar ......................................................................................................................................................54
O Modificar ...................................................................................................................................................54
O Eliminar .....................................................................................................................................................55
Categoria ........................................................................................................................................................55
O Insertar ......................................................................................................................................................55
O Modificar ...................................................................................................................................................56
O Eliminar .....................................................................................................................................................57
Promociones ................................................................................................................................................58
O Insertar ......................................................................................................................................................58
O Modificar ...................................................................................................................................................59
O Eliminar .....................................................................................................................................................60
Usuario ............................................................................................................................................................61
O Cargar Dinero .........................................................................................................................................61
O Cerrar Cuenta .........................................................................................................................................62
CONCLUCIONES: .................................................................................................................................. 62
GLOSARIO.............................................................................................................................................. 63
Modelado de Datos .............................................................................................................................................63
Estructura de Base de Datos ..........................................................................................................................63
Normalizacin .......................................................................................................................................................63
Procedimientos almacenados .......................................................................................................................63
BIBLIOGRAFA ....................................................................................................................................................................63


5
RESUMEN
El presente informe da a conocer paso a paso el desarrollo del proyecto de descarga
de contenidos en el cual mostramos suposiciones que el grupo considero necesarias,
el diseo del diagrama E-R el cual cumple con la definicin del problema y responde a
todas las consultas del proyecto. A partir de dicho modelo realizamos la normalizacin
del esquema, descripcin del esquema final implementado, diccionario de datos,
posteriormente especificaciones de cdigos SQL para cada una de las consultas
requeridas, adems de ellos el esquema relacional poblado y finalmente los
procedimientos almacenados.
En una ltima etapa las conclusiones que se extraen de este documento se concentran
en una muy detalla la comprensin de todos los factores que hacen posible el
desarrollo

INTRODUCCION
El presente informe consiste en la elaboracin de un modelo de datos y sistema de
informacin asociado a un portal de descarga pagada de contenidos en formato de
imgenes (PNG, JPG, GIF o BMP), sonidos (MP3, MID o WAV) y videos (WMV, AVI, MPG
o MOV).

OBJETIVOS
Los objetivos principales del proyecto son:
a. Construir un modelo de datos Relacional que permita almacenar la
informacin del portal de descargas.

b. Implementacin de consultas en la Base de Datos para el sistema de
descargas.

c. Implementar algunos procedimientos que sirven para implementar algunas
de las transacciones solicitadas como parte de los requerimientos iniciales del
proyecto. Los parmetros que reciben los procedimientos deben ser elegidos
segn el esquema que estamos manejando.


6
SUPOSICIONES ADICIONALES
Al crear un nuevo usuario, se cargar automticamente un valor de S/. 10.00 a su
saldo actual, para q pueda realizar algunas descargas en forma de prueba del
servicio.
Segn las extensiones de los contenidos (definidas previamente en los requisitos
del trabajo), ser necesario ingresar los mime-type a la base de datos al momento
de realizar las pruebas, ya que slo de esta manera, el sistema reconocer la clase
de archivos que son, y as los podr reproducir y/o visualizar.
Se considerar un atributo de estado en la tabla de cliente, para as notificar si
est activo o inactivo, en el caso de que desee cerrar su cuenta.
Se crear un atributo de estado en la tabla de contenido, para que as, los usuarios
puedan ver si lo que desean descargar an se encuentra disponible, o fue de baja
por el administrador, segn sea el caso.
Se agregar el atributo de nmero de descargas al contenido, con un fin de poder
tener un control ms claro de las descargas que realizan los usuarios, y para
realizar posteriormente los rankings o reportes.
Se considerar el uso de un rbol binario para la implementacin de la entidad
Categora, de modo q se pueda ubicar de manera ms fluida sus categoras padre
y/o subcategoras.
Se realizar una notificacin de regalo para el destinatario, y para reclamarlo,
deber ingresar el ID del regalo al sistema. De igual manera, se considerar un
atributo del estado de regalo para el que lo manda, en este caso, se mostrar si el
destinatario acept o rechaz el regalo.

DIAGRAMA DE ENTIDAD RELACIN
ENTIDADES:
Describimos la arquitectura (modelo entidad - relacin) de las entidades de
nuestro sistema multimedia a realizar, las cuales estn compuestas por siete
entidades que describiremos a continuacin


















7
o ENTIDAD USUARIO
En esta entidad se encuentran toda la informacin del usuario que ser
pertinente para nuestro sistema.


o ENTIDAD CONTENIDO
En esta entidad se guardara la informacin del producto y las
caractersticas de dicho producto.














8
o ENTIDAD DESCARGA
Para nuestro sistema es necesario tener una entidad descarga la cual se
encargara de almacenar las descargas respectivas de cada usuario.



o ENTIDAD REGALO
Cada usuario tiene la opcin de poder regalar un contenido o varios a
un usuario el cual podr rechazarlo o aceptarlo.

o ENTIDAD PROMOCIONES
El administrador vera por conveniente realizar promociones para
aquellos usuarios que se comprometan con la pgina (haciendo
descargas o regalando contenidos).










9
o ENTIDAD CATEGORIA
Como nuestro sistema trata de la venta de productos multimedia
debemos almacenar en una base de datos y deben estar clasificados
esos productos, por lo tanto se organizan por categoras para que la
administracin de los datos sea eficiente.



o ENTIDAD RANKING
Creamos la entidad ranking donde se mostraran los 10 ms
descargados y los 10 ms votados, la cual se actualizara cada semana.


DIAGRAMA ENTIDAD RELACION:
Mostramos las entidades con sus relaciones respectivas haciendo recalcar lo
anterior mostrado.


10

Normalizacin:
Para la normalizacin tomamos como base los 8 pasos de transformacin del modelo entidad-
relacin al modelo relacional Navathe donde tomamos como punto principal:


11
PASO 1: Transformacin de Entidades

PASO 2: Transformacin de Entidades Dbiles
No hay ninguna entidad de este tipo.
PASO 3: Transformacin de 1: N
Para cada vinculo 1:N entre dos entidades E y F donde F est del lado N del vnculo, se
aade a la relacin correspondiente a la entidad F de alguna de las entidades la clave
primaria de la otra entidad relacionada.

o USUARIO-PROMOCIONES (1:N)

12
o PROMOCIONES-CONTENIDO (1:N)









13
o CATEGORIA-CONTENIDO (1:N)



o CONTENIDO-RANKING (1:N)

























14
PASO 4: Transformacin de 1: 1
No hay ninguna relacin de este tipo.

PASO 5: Transformacin de N: M
No hay ninguna relacin de este tipo.

PASO 6: Transformacin de atributos multivaluados
No hay ningn atributo de este tipo.

PASO 7: Transformacin de vnculos
Para cada vnculo se crea una relacin R.
Los atributos de la relacin R sern las claves primarias de todas las entidades
relacionadas ms los atributos propios del vnculo.




PASO 8: Informacin de Una Generalizacin.
No hay ninguna entidad de este tipo.


15
DIAGRAMA RELACIONAL
Realizada en SQL SERVER 2012, las 8 tablas presentan sus respectivos campos
con sus PKs respectivamente


BREVE EXPLICACIN
En nuestro diagrama, hemos considerado la creacin de ocho tablas: Usuario, Descarga,
Contenido, Regalo, Promocin, Ranking, Categora y Archivo. A continuacin la explicacin:
Un usuario, al realizar la descarga de un contenido, deber automticamente darle
una puntuacin. Esta informacin, junto a la fecha de descarga, el ID del usuario, del
contenido, ID de descarga, entre otros, ser almacenada en la tabla de Descarga, para
una mejor administracin de los datos. A su vez, esta tabla le permitir validar al
sistema, el nmero de veces que el usuario califica un contenido (debe ser 1 vez y slo
a los contenidos descargados), la fecha de descarga, y la calificacin en s que le dio el
usuario al contenido.

De igual manera, los usuarios podrn regalar contenidos (msica, imgenes, videos) a
otras personas, para ello, al momento de realizar el pago del contenido, se le pedir el
nombre de usuario del destinatario, y ste para poder reclamar su regalo, deber
ingresar al sistema el cdigo del regalo (IDRegalo) para su posterior descarga; sin
embargo, tambin puede rechazar el regalo (Estado_Regalo).
El Usuario Administrador ser el nico capaz de asignar las promociones a los
contenidos, as como tambin aplicarle el 20% de descuento a los Usuarios q les
corresponda
Los contenidos almacenados en la base de datos, contarn con varias caractersticas,
entre las que estn las principales que aparecern en pantalla para una mejor

16
descripcin hacia el usuario, como el autor, nombre, precio, categora, estado y
puntuacin promedio; sin embargo, hay otras que son necesarias para una mejor
administracin de la informacin, como el ID de la promocin a la cual est sujeto el
contenido, rbol de categoras, tamao, URL, secuencia en bytes, nmero de
descargas, y algunos de estos datos, son extrados de otras tablas presentes en la
relacin, como Categora, Tipo de Archivo y Promocin.
Al ingresar a la Pgina de descargas, se visualizaran dos rankings, para lo cual se est
integrando una tabla ranking la cual guardara dichos datos, los cuales brindaran
informacin de los 10 contenidos ms descargados en la semana anterior y otro de
los 10 contenidos ms votados en la semana anterior.

CARDINALIDAD
1 a 1: No hay ninguna relacin de este tipo.
1 a MUCHOS: Se muestran las siguientes:
o USUARIO a REGALO.- Un determinado usuario puede realizar muchos regalos,
y de igual manera, puede recibirlos. Un mismo regalo no puede ser dado a
muchos usuarios, ya que cada uno de ellos es diferente y cuenta con un ID
nico.
o USUARIO a DESCARGA.- Un determinado usuario puede realizar muchas
descargas. Una misma descarga no corresponde a muchos usuarios.
o CONTENIDO a REGALO.-Un mismo contenido puede ser parte de muchos
regalos realizados. Un regalo incluye a un solo contenido.
o CONTENIDO a DESCARGA.- Un mismo contenido puede ser parte de muchas
descargas. Una descarga incluye a un solo contenido.
o CATEGORIA a CONTENIDO.- Una categora abarca muchos contenidos. Un
contenido no puede ser parte de diferentes categoras.
o USUARIO a PROMOCIONES.-.- Un determinado Usuario (Administrador) puede
establecer muchas promociones a uno o varios contenidos.
o CONTENIDO a PROMOCIONES.- Una misma promocin puede incluir muchos
contenidos. Segn los requisitos del trabajo, un contenido slo puede tener
una promocin asociada en el momento.
o TIPO_ARCHIVO a CONTENIDO.- Un determinado tipo de archivo puede ser
para muchos contenidos. Un contenido slo tiene un nico tipo de archivo.
MUCHOS a MUCHOS: No hay ninguna relacin de este tipo.


DICCIONARIO DE DATOS
Un diccionario de datos es un conjunto de metadatos que contiene las caractersticas
lgicas y puntuales de los datos que se van a utilizar en el sistema que se programa,
incluyendo nombre, descripcin, alias, contenido y organizacin.
Identifica los procesos donde se emplean los datos y los sitios donde se necesita el
acceso inmediato a la informacin, se desarrolla durante el anlisis de flujo de datos y
auxilia a los analistas que participan en la determinacin de los requerimientos del
sistema, su contenido tambin se emplea durante el diseo.


17






18

















19
CDIGO SQL PARA CADA UNA DE LAS CONSULTAS
CONSULTA 1:
Nmero de descargas que se han efectuado desde la cuenta del cliente
con id X (ya sean propias o regalos a X) en los ltimos 30 das.

select IDUsuario, count (IDUsuario)as total
from descargas
where IDUsuario = 'U0043'
and Fecha between dateadd( day , -40 , getdate() ) and dateadd( day , 0 ,
getdate())
group by IDUsuario
order by total desc;

CONSULTA 2:
Nmero de descargas que se han efectuado desde la cuenta del cliente
con id X (ya sean propias o regalos a X) en el ltimo ao.

select IDUsuario, count(IDUsuario) as total
from descargas
where IDUsuario = 'U0043' and Fecha between dateadd( year , -1 , getdate() ) and dateadd(
year , 0 , getdate() )
group by IDUsuario
order by total desc









20
CONSULTA 3:
Nombre, tipo de contenido y extensin del contenido ms descargado
en los ltimos 30 das.

select top(1) with ties c.Nombre_cont , c.Informacion , c.Extension , count( d.IDContenido) as
total
from descargas d , contenido c
where d.IDContenido = c.IDContenido and d.Fecha between dateadd( day , -30 , getdate() )
and dateadd( day , 0 , getdate() )
group by c.Nombre_cont , c.Informacion , c.Extension
order by total desc















CONSULTA 4:
Nombre, tipo de contenido y extensin del contenido ms descargado
en el ltimo ao

select top(1) with ties c.Nombre_cont , c.Informacion , c.Extension,count( d.IDContenido) as
total
from descargas d , contenido c
where d.IDContenido = c.IDContenido and d.Fecha between dateadd( year , -1 , getdate() ) and
dateadd( year , 0 , getdate() )
group by c.Nombre_cont , c.Informacion , c.Extension
order by total desc






21
CONSULTA 5:
Nombre y promedio de notas de todos los contenidos. Si nadie ha
puesto nota a un contenido, sta debe aparecer con valor nulo. Se debe
ordenar por nota (la mayor primero)

select CONTENIDO.Nombre_cont, AVG(CONTENIDO.Nota_prom)"Promedio"
from CONTENIDO
group by CONTENIDO.Nombre_cont,CONTENIDO.Nota_prom
order by CONTENIDO.Nota_prom desc;










































22
CONSULTA 6:
Nombre de todos los clientes que han regalado contenidos junto con el
nombre del destinatario y del contenido.

select orig.Nombre , dest.Nombre as Destino , c.Nombre_cont
from USUARIO dest , USUARIO orig , CONTENIDO c
where dest.IDUsuario in (select r.IDUsuario_Dest from REGALO r
where orig.IDUsuario = r.IDUsuario and r.IDContenido = c.IDContenido )


















CONSULTA 7:
Nombre de todos los clientes que han regalado al menos 10 contenidos
diferentes.

select u.Nombre
from USUARIO u
where ( select count( distinct c.Nombre_cont ) from contenido c , regalo r where u.IDUsuario =
r.IDUsuario
and r.IDContenido = c.IDContenido ) >= 10








23

CONSULTA 8:
Nombre, tipo de contenido y extensin de los contenidos que han sido
descargados por el cliente con id X (ya sean propias o regalos a X) y
cuyo precio es mayor a Y.

select c.Nombre_cont , c.Informacion , c.Extension
from usuario u , descargas d , contenido c
where u.IDUsuario = 'U0002' and u.IDUsuario = d.IDUsuario and
d.IDContenido = c.IDContenido and c.precio > 8




CONSULTA 9:
Nombre, tipo de contenido y extensin de los contenidos que han sido
descargados por el cliente con id X (ya sean propias o regalos a X) y
cuya nota promedio es mayor o igual a Y.

select c.Nombre_cont , c.Informacion , c.Extension ,c.Nota_prom, u.IDUsuario
from usuario u , descargas d , contenido c
where u.IDUsuario = 'U0002' and u.IDUsuario = d.IDUsuario and d.IDContenido =
c.IDContenido and c.Nota_prom >= 8









24
CONSULTA 10:
Nombre, autor, descripcin, precio, extensin de archivo y la categora a
la que pertenece (la ms baja en el rbol de categoras) el contenido con
id X

select con.Nombre_cont , con.Autor , con.Descripcion , con.Precio , con.Extension , cat.Desc_cat
from categoria cat , contenido con
where cat.IDhijo_izq IS NULL and cat.IDhijo_der IS NULL and cat.IDCategoria = con.IDCatg_cont
and con.IDContenido = 'C0009'



CONSULTA 11:
Nombre de todos los clientes ordenados de acuerdo al nmero de
descargas efectuadas (ya sean propias o por regalos) en los ltimos 6
meses (de ms a menos)

select USUARIO.Nombre, count (USUARIO.Nombre) AS TOTAL
from USUARIO inner join DESCARGAS on USUARIO.IDUsuario=DESCARGAS.IDUsuario
where DESCARGAS.Fecha > DateAdd(MONTH, -6, GETDATE()+1) and
DESCARGAS.Fecha<=GETDATE()
group by USUARIO.Nombre
order by total desc




25
CONSULTA 12:
Nombre de todos los contenidos que pertenecen directamente a la
categora raz del rbol de categoras, junto con el nombre de la
categora Nombre de todos los contenidos del autor X y que han sido
regalados alguna vez

select con.Nombre_cont , cat.Desc_cat
from categoria cat , contenido con
where cat.IDCat_Padre IS NULL and cat.IDCategoria = con.IDCatg_cont



CONSULTA 13:
Nombre de todos los contenidos del autor X y que han sido regalados
alguna vez

select DISTINCT c.Nombre_cont
from contenido c
where c.autor = 'VERNIZ HERNANDEZ' and exists( select * from regalo r where r.IDContenido
= c.IDContenido)






26
CONSULTA 14:
Nombre de todos los contenidos con precio entre X e Y inclusive, y
que han sido alguna vez parte de una promocin que determinaba
un descuento mayor o igual al Z%.

select c.Nombre_cont
from contenido c
where c.precio >= 5 and c.precio <= 8 and exists ( select * from promocion p where
p.IDPromocion = c.IDPromocion and p.Decuento >= 30 )






















27
CONSULTA 15:
Nombre de todos los contenidos con precio entre X e Y inclusive, y que
han sido alguna vez parte de una promocin que determinaba un
descuento mayor o igual al Z%

select CONTENIDO.Nombre_cont, PROMOCION.Fecha_ini, PROMOCION.Fecha_fin
from PROMOCION inner join CONTENIDO on PROMOCION.IDPromocion =
CONTENIDO.IDPromocion
where PROMOCION.Fecha_ini >= CAST('20080101' AS DATETIME ) AND
PROMOCION.Fecha_fin <= CAST('20081231' AS DATETIME );

















28
PROCEDIMIENTOS ALMACENADOS:

AbrirCuenta:
o Este procedimiento realiza el ingreso de un nuevo usuario asigandole
un estado activo, un monto inicial de 200 soles y al mismo tiempo un
codigo unico de usuario.

CREATE PROCEDURE AbrirCuenta
@ApellidoP AS VARCHAR(50),
@ApellidoM AS VARCHAR(50),
@Nombre AS VARCHAR(50),
@Contrasea AS VARCHAR(8),
@Correo AS VARCHAR(50),
@msg AS VARCHAR(100) OUTPUT

AS
BEGIN
SET NOCOUNT ON;
Begin Tran Tadd

Begin Try
INSERT INTO USUARIO VALUES ('TRUE', 'TRUE',@ApellidoP,
@ApellidoM, @Nombre, @Contrasea, @Correo, 0, 200, 'FALSE', 0)
SET @msg = '*****REGISTRO EXITOSO*****'
COMMIT TRAN Tadd
End try

Begin Catch
SET @msg = '*****ERROR AL REGISTRAR*****'
Rollback TRAN Tadd
End Catch
END
GO

DECLARE @msg AS VARCHAR(100);

EXEC AbrirCuenta 'Cervantes', 'Castillo', 'Haydee', '1234','haydeeCC@gmail.com',@msg
OUTPUT
SELECT @msg AS msg

SELECT * FROM USUARIO;
DELETE FROM USUARIO WHERE IDUsuario='105'

DROP PROCEDURE AbrirCuen

29
Cerrar Cuenta:
o Para poder cerrar una cuenta de usuario se tiene que verificar que el
saldo de dicho cliente se encuentre en cero de lo contrario no se podr
realizar el cierre de su cuenta, tomando en cuenta que no se eliminara el
usuario solo se le asignara un estado de inactivo.

CREATE PROCEDURE CerrarCuenta
@Correo AS VARCHAR(50),
@msg AS VARCHAR(100) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
Begin Tran Tadd

Begin Try
IF(SELECT Saldo_Actual FROM USUARIO WHERE @Correo = Correo) = 0
BEGIN
UPDATE USUARIO SET Estado_Usuario = 'FALSE' WHERE Correo = @Correo ;
SET @msg = '***USUARIO PASO DE ACTIVO A INACTIVO***'
END
ELSE
SET @msg = '***EL CAMBIO NO SE PUEDE REALIZAR PORQUE EL USUARIO AUN TIENE
SALDO EN SU CUENTA***'
COMMIT TRAN Tadd
End try
Begin Catch
SET @msg = '***ERROR AL ACTUALIZAR***'
Rollback TRAN Tadd
End Catch
END
GO


DECLARE @msg AS VARCHAR(100);
EXEC CerrarCuenta 'JeannetteCC@gmail.com',@msg OUTPUT
SELECT @msg AS msg

select * from USUARIO;
drop procedure CerrarCuenta;

UPDATE USUARIO SET Saldo_Actual='0' WHERE IDUsuario= 107


30
Descarga:
o Para realizar una descarga se tiene que tomar en cuenta si es que el
usuario cuenta con el saldo suficiente para realizar una descarga y al
mismo tiempo verificar si el usuario ya descarg ese contenido; si no
cumple estas dos condiciones el usuario no podr realizar la descarga. Si
se cumplen las condiciones se proceder a descontar de su saldo el
monto de dicho producto ya sea que presente descuento o no, se
incrementara su nmero de descargas y se generara una nueva tupla en
la tabla descargas.

CREATE PROCEDURE Descargar
@Correo AS VARCHAR(50),
@Nom_Cont AS VARCHAR(30),
@Puntuacion AS SMALLINT,
@msg AS VARCHAR(100) OUTPUT
AS
BEGIN
DECLARE @ID_C AS INT, @ID_U AS int ,@ID_D AS int
SET NOCOUNT ON;

Begin Tran Tadd
Begin Try

SELECT @ID_C = (SELECT IDContenido FROM CONTENIDO WHERE Nombre_cont =
@Nom_Cont AND IDCatg_cont = 2 )
SELECT @ID_U = (SELECT IDUsuario FROM USUARIO WHERE Correo = @Correo )
SELECT @ID_D = (SELECT COUNT (IDDescargas) FROM DESCARGAS WHERE IDUsuario =
@ID_U AND IDContenido = @ID_C)
SET @msg = @ID_D

IF(@ID_D) > 0
BEGIN
SET @msg = '***CONTENIDO YA DESCARGADO***'
END
IF(@ID_D) = 0
BEGIN
DECLARE @DSCT INT
IF(SELECT Monto_Usu FROM USUARIO WHERE IDUsuario = @ID_U) >=150
BEGIN
SET @DSCT = (SELECT Precio FROM CONTENIDO WHERE IDContenido =
@ID_C)*0.8
UPDATE USUARIO SET Saldo_Actual = Saldo_Actual - @DSCT , Monto_Usu =
Monto_Usu + @DSCT ,
Num_Dscg_Usuario = Num_Dscg_Usuario + 1 WHERE IDUsuario = @ID_U;
END
ELSE
BEGIN
SET @DSCT = (SELECT PRECIO FROM CONTENIDO WHERE
IDContenido = @ID_C)
UPDATE USUARIO SET Saldo_Actual = Saldo_Actual - @DSCT , Monto_Usu =
Monto_Usu + @DSCT ,
Num_Dscg_Usuario = Num_Dscg_Usuario + 1 WHERE IDUsuario = @ID_U;
END


31
INSERT INTO DESCARGAS
VALUES(@ID_U,@ID_C,@Puntuacion,GETDATE())
SET @msg = '***DESCARGA EXITOSA***'
END
COMMIT TRAN Tadd
End try
Begin Catch
SET @msg = '***ERROR EN LA DESCARGA***'
Rollback TRAN Tadd
End Catch
END
GO


DECLARE @msg AS VARCHAR(100);
EXEC Descargar 'haydeeCC@gmail.com','HE VUELTO', 7,@msg OUTPUT
SELECT @msg AS MENSAJE



DROP PROCEDURE Descargar;
SELECT * FROM USUARIO;
SELECT* FROM DESCARGAS;
















32
Regalo:
o Para realizar un regalo se verifica si el usuario cuenta con el saldo
suficiente, se asigna a que usuario va dirigido el regalo, se realiza el
descuento del monto al usuario emisor y se realiza el registro del regalo
en las tablas Regalo y Descargas.

CREATE PROCEDURE Regalos
@UsuarioR AS VARCHAR(30),
@UsuarioD AS VARCHAR(30),
@Nom_Cont AS VARCHAR(30),
@msg AS VARCHAR(100) OUTPUT

AS
BEGIN
SET NOCOUNT ON;
Begin Tran Tadd

Begin Try
DECLARE @ID_C AS INT, @ID_UR AS int , @ID_UD AS int , @ID_D AS int , @ID_R AS int

SET @ID_C = (SELECT IDContenido FROM CONTENIDO WHERE Nombre_cont=
@Nom_Cont AND IDCatg_cont = 2 )
SET @ID_UR = (SELECT IDUsuario FROM USUARIO WHERE Correo= @UsuarioR )
SET @ID_UD = (SELECT IDUsuario FROM USUARIO WHERE Correo= @UsuarioD )

INSERT INTO REGALO VALUES ('1',GETDATE(),@ID_UR,@ID_UD,@ID_C)

SET @ID_R = (SELECT IDRegalo FROM REGALO WHERE IDUsuario= @ID_UR AND
IDUsuario_Dest = @ID_UD)
IF(SELECT Estado_Regalo FROM REGALO WHERE IDUsuario = @ID_UR AND
IDUsuario_Dest = @ID_UD) = 1
BEGIN
DECLARE @DSCT INT
INSERT INTO DESCARGAS VALUES(@ID_UD,@ID_C,7,GETDATE())

IF(SELECT Monto_Usu FROM USUARIO WHERE IDUsuario = @ID_UR) >= 150
BEGIN
SET @DSCT = (SELECT Precio FROM CONTENIDO WHERE IDContenido =
@ID_C)*0.8
UPDATE USUARIO SET Saldo_Actual = Saldo_Actual - @DSCT , Monto_Usu =
Monto_Usu + @DSCT ,
Num_Dscg_Usuario = Num_Dscg_Usuario + 1 WHERE IDUsuario = @ID_UR;
END
ELSE
BEGIN
SET @DSCT = (SELECT Precio FROM CONTENIDO WHERE IDContenido =
@ID_C)
UPDATE USUARIO SET Saldo_Actual = Saldo_Actual - @DSCT , Monto_Usu =
Monto_Usu + @DSCT ,
Num_Dscg_Usuario = Num_Dscg_Usuario + 1 WHERE IDUsuario = @ID_UR;
END
END
COMMIT TRAN Tadd
SET @msg = '***REGALO EXITOSO***'
End try

33
Begin Catch
SET @msg = '***ERROR AL PROCESAR EL REGALO***'
Rollback TRAN Tadd
End Catch
END
GO


DECLARE @msg AS VARCHAR(100);
EXEC Regalos 'haydeeCC@gmail.com','jeannetteCC@gmail.com','HE VUELTO',@msg OUTPUT
SELECT @msg AS msg

DROP PROCEDURE Regalos;

SELECT * FROM USUARIO;
SELECT * FROM REGALO;
SELECT * FROM DESCARGAS;


Agregar Contenido:
o Para agregar un contenido el administrador de la BD registra la
informacin requerida por los campos de la tabla Contenido.

CREATE PROCEDURE AgregarContenido
@NomCont AS VARCHAR(50),
@Descripcion VARCHAR(50),
@Autor AS VARCHAR(50),
@Estado AS bit,
@Precio AS float,
@Tamao AS VARCHAR(50),
@SecB AS IMAGE,
@IDPromo AS INT,
@IDCategoria AS INT,
@Informacion AS VARCHAR(50),
@Extension AS VARCHAR(50),
@MMT AS VARCHAR(50),
@msg AS VARCHAR(100) OUTPUT

AS
BEGIN
DECLARE @ID_CONT INT
SET NOCOUNT ON;
Begin Tran Tadd
Begin Try

INSERT INTO CONTENIDO VALUES (@NomCont,@Descripcion,
@Autor,@Estado,@Precio,@Tamao,@SecB,0,0,@IDPromo,
@IDCategoria,@Informacion,@Extension,@MMT)

SET @ID_CONT= (SELECT IDContenido FROM CONTENIDO WHERE Nombre_cont =
@NomCont)

INSERT INTO PUENTECONTPROMO VALUES (@IDPromo,@ID_CONT)

SET @msg = '***COTENIDO AGREGADO***'

34
COMMIT TRAN Tadd
End try
Begin Catch
SET @msg = '***ERROR AL AGRAGAR CONTENIDO***'
Rollback TRAN Tadd
End Catch
END
GO

DECLARE @msg AS VARCHAR(100);
EXEC AgregarContenido 'CARITA DE
PASAPORTE','SALSA','NSAMBLE','true',5.00,'3000kb',NULL,1,1,'MUSIC','.mp3','WINDOWS
MEDIA',@msg OUTPUT
SELECT @msg AS msg

SELECT * FROM CONTENIDO



Ingresar Promocin:
o Para asignar una promocin a un contenido el administrador de la BD
registra la informacin requerida por los campos de la tabla Promocion.

CREATE PROCEDURE IngresarPromocion
@IDPromocion AS INT,
@Descripcion AS VARCHAR(50),
@Descuento AS FLOAT,
@FechaI AS DATETIME,
@FechaF AS DATETIME,
@msg AS VARCHAR(100) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
Begin Tran Tadd

Begin Try
INSERT INTO PROMOCION VALUES (@IDPromocion,@Descripcion,@Descuento,
@FechaI,@FechaF)
SET @msg = '***PROMOCION INGRESADA***'
COMMIT TRAN Tadd

35
End try
Begin Catch
SET @msg = 'ERROR AL INGRESAR PROMOCION'
Rollback TRAN Tadd
End Catch
END
GO


DECLARE @msg AS VARCHAR(100);
EXEC IngresarPromocion 11,'PROMOCION11',5,'05/05/2013','05/06/2013',@msg OUTPUT
SELECT @msg AS msg


DROP PROCEDURE IngresarPromocion;
SELECT * FROM PROMOCION;
SET DATEFORMAT dmy;



Cargar Dinero:
o Para aumentar el saldo de la cuenta de un usuario se verifica el
depsito de dinero; una vez realizado el depsito el administrador de la
BD aumenta el saldo con dicho monto.

CREATE PROCEDURE CargarDinero
@IDUsu AS INT,
@Saldo AS VARCHAR(50),
@msg AS VARCHAR(100) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
Begin Tran Tadd

Begin Try
UPDATE USUARIO SET Saldo_Actual = Saldo_Actual + @saldo WHERE IDUsuario = @IDUsu
SET @msg = '***RECARGA EXITOSA***'
COMMIT TRAN Tadd
End try
Begin Catch
SET @msg = '***ERROR AL RECARGAR DINERO***'
Rollback TRAN Tadd

36
End Catch

END
GO


DECLARE @msg AS VARCHAR(100);
EXEC CargarDinero 1,35,@msg OUTPUT
SELECT @msg AS msg

DROP PROCEDURE CargarDinero;
SELECT * FROM USUARIO;


Crear Categora:
o Para crear una categora el administrador de la Base de datos asigna la
informacin requerida por los campos de la tabla Categoria.

CREATE PROCEDURE CrearCategoria
@Descripcion AS VARCHAR(50),
@IDPadre AS INT,
@IDHIzq AS INT,
@IDHDer INT,
@msg AS VARCHAR(100) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
Begin Tran Tadd

Begin Try
INSERT INTO CATEGORIA VALUES (@Descripcion,@IDPadre,@IDHIzq, @IDHDer)
SET @msg = '***CATEGORIA CREADA CON EXITO***'
COMMIT TRAN Tadd
End try
Begin Catch
SET @msg = '***ERROR AL CREAR CATEGORIA***'
Rollback TRAN Tadd
End Catch

37

END
GO

DECLARE @msg AS VARCHAR(100);
EXEC CrearCategoria 'VIDEOS MUSICALES BACHATAS',NULL,NULL,NULL,@msg OUTPUT
SELECT @msg AS msg

DROP PROCEDURE CrearCategoria;
SELECT * FROM CATEGORIA;















38
DESCRIPCION GENERAL DE LA ARQUITECTURA
1. LOGIN
a. Para poder realizar una descarga debemos estar registrados, el cual es
el encargado de verificar si eres usuario o administrador mostrandote
un mensaje de verificacion de haber ingresado correctamente al
sistema.
public string bandest = "";
public int estado = 2;
public string usuario;
public int log = 0;
public int logC = 1;

protected void Page_Load(object sender, EventArgs e)
{
logC = (int)(Session["loginCerrar"]);
if (log == 1)
{
Server.Transfer("DatosUsuario.aspx");
}
if(logC == 0)
{
log = 0;
estado = 2;
usuario = "";
Session.Add("Estado", estado);
Session.Add("Correo", usuario);
Session.Add("login", log);
}
else
{
Session.Add("Estado", estado);
Session.Add("login", log);
}
}

protected void Button1_Click(object sender, EventArgs e)
{
string cadenaconexion = "Data Source = .\\SQLEXPRESS;Initial
Catalog=DBMULTIMEDIA;Integrated Security=True";
usuario = tbCorreo.Text.ToString();
Session.Add("Correo", usuario);
log = 1;
Session.Add("login", log);

try
{
string selectSQL = "Select Tipo_usu From USUARIO Where Correo
= '" + tbCorreo.Text + "'AND Contrasea ='" + tbContrasea.Text + "'";
SqlConnection con = new SqlConnection(cadenaconexion);
SqlCommand cmd = new SqlCommand(selectSQL, con);
SqlDataReader dr;
con.Open();
dr = cmd.ExecuteReader();

if (dr.Read())
{

39
estado = Convert.ToInt32(dr[0]);
lblMensaje.Visible = true;
lblMensaje.Text = Convert.ToString(estado);
Session.Add("Estado", estado);
if (estado == 0)
{
bandest = "admin";
lblMensaje.Visible = true;
lblMensaje.Text = Convert.ToString(estado);
Server.Transfer("ModuloAdministracion.aspx");
}
else
if (estado == 1)
{
bandest = "usuario";
lblMensaje.Visible = true;
lblMensaje.Text = Convert.ToString(estado);
Server.Transfer("DatosUsuario.aspx");
}
if (estado == 2)
{
Server.Transfer("Descargar.aspx");
}

con.Close();
lblMensaje.Visible = true;
lblMensaje.Text = "BIENVENIDO" + "" + bandest + "";
}

else
{
tbCorreo.Text = "";
tbContrasea.Text = "";
lblMensaje.Visible = true;
lblMensaje.Text = "VERIFICA TU INFORMACION";

}
}
catch (Exception err)
{
lblMensaje.Visible = true;
lblMensaje.Text = err.Message;
}
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect("Registrarse.aspx");
}
2. REGISTRARSE
a. Nosotros generamos una pestaa para que el Usuario se pueda crear su
cuenta y poder realizar las descargas respectivas de los productos que
el Usuario desee, los campos correspondientes al registro son:
Nombre
Apellidos
Correo

40
Contrasea
Confirmar contrasea
b. La funcionalidad para registrar en la BD de datos es la siguiente:
Se hace la conexin con la base de datos, almacenamos los valores
introducidos por el Usuario en variables string las cuales son
enviadas al procedimiento con los parmetros especificados. En la
BD se llenan los valores en una tupla en la tabla Usuario

protected void btnRegistarse_Click(object sender, EventArgs e)
{

do
{
var cn = new SqlConnection();
cn.ConnectionString = "Data Source=MELISSA-PC\\SQLEXPRESS;Initial
Catalog=DBMULTIMEDIA;Integrated Security=True";

string nombre = txtNom.Text.ToString();
string apellidoP = txtApellP.Text.ToString();
string apellidoM = txtApellM.Text.ToString();
string correo = txtCorreo.Text.ToString();
string contrasea = txtContrasea.Text.ToString();
string confirmar = txtConfirmar.Text.ToString();
//string mensaje = string.Empty;
if (contrasea.Equals(confirmar))
{
SqlDataAdapter daCategory = new SqlDataAdapter
("AbrirCuenta", cn);
daCategory.SelectCommand.CommandType =
CommandType.StoredProcedure;
var cm = new SqlCommand("AbrirCuenta", cn);
cm.CommandType = System.Data.CommandType.StoredProcedure;
cm.Parameters.AddWithValue("@Nombre", nombre);
cm.Parameters.AddWithValue("@ApellidoP", apellidoP);
cm.Parameters.AddWithValue("@ApellidoM", apellidoM);
cm.Parameters.AddWithValue("@Correo", correo);
cm.Parameters.AddWithValue("@Contrasea", contrasea);
cn.Open();
cm.ExecuteNonQuery();
cn.Close();

txtNom.Text = "";
txtApellP.Text = "";
txtApellM.Text = "";
txtCorreo.Text="";
txtContrasea.Text="";
txtConfirmar.Text="";
band = false;
}
else
{
lblMensaje.Text = "CONTRASEA ERRONEA";
lblMensaje.Visible = true;
band = true;
}

41
} while (band == true);
}

3. REGALO
a. El usuario tiene la opcion de realizar un regalo hacia otro usuario ya sea
de los que tiene descargados o de los que esta por descargar.

public partial class MisRegalos : System.Web.UI.Page
{
string correo;
int IDContenido;
int log;
string cadenaconexion = "Data Source=.\\SQLEXPRESS;Initial
Catalog=DBMULTIMEDIA;Integrated Security=True";
protected void Page_Load(object sender, EventArgs e)
{
correo = (string)(Session["Correo"]);
lblCorreo.Visible = true;
lblCorreo.Text = correo;

string selectSQL = "SELECT c.IDContenido,(SELECT Nombre FROM USUARIO
WHERE IDUsuario = r.IDUsuario ), c.Nombre_cont, c.Extension, r.Fecha_regalo FROM
USUARIO u INNER JOIN REGALO r ON u.IDUsuario = r.IDUsuario_Dest JOIN CONTENIDO c ON
c.IDContenido = r.IDContenido WHERE u.Correo ='" + correo + "'AND r.Estado_Regalo='"
+ 1 + "'ORDER BY u.Nombre ASC";
GridView1.AutoGenerateSelectButton = true;
SqlConnection con = new SqlConnection(cadenaconexion);
SqlCommand cmd = new SqlCommand(selectSQL, con);
SqlDataReader dr;
try
{
con.Open();
dr = cmd.ExecuteReader();
GridView1.DataSource = dr;
GridView1.DataBind();
con.Close();
}
catch (Exception err)
{
lblMensaje.Text = err.Message;
}
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
IDContenido = Convert.ToInt32(GridView1.SelectedRow.Cells[1].Text);
}
protected void Button1_Click(object sender, EventArgs e)
{
try
{
IDContenido = Convert.ToInt32(GridView1.SelectedRow.Cells[1].Text);
string cadenaconexion = "Data Source = .\\SQLEXPRESS;Initial
Catalog=DBMULTIMEDIA;Integrated Security=True";
string selectSQL = " UPDATE REGALO SET Estado_Regalo='" + 0 +
"'WHERE IDContenido='" + IDContenido + "'";
SqlConnection con = new SqlConnection(cadenaconexion);
SqlCommand cmd = new SqlCommand(selectSQL, con);

42
con.Open();
cmd.ExecuteNonQuery();
con.Close();
lblMensaje.Text = "REGALO DESCARGADO";
}
catch (Exception err)
{
lblMensaje.Text = err.Message;
}

log = (int)(Session["Estado"]);
try
{
if (log == 0 || log == 1)
{
var cn = new SqlConnection();
cn.ConnectionString = "Data Source=.\\SQLEXPRESS;Initial
Catalog=DBMULTIMEDIA;Integrated Security=True";

string correo = (string)(Session["Correo"]);
int nota = 0;
IDContenido =
Convert.ToInt32(GridView1.SelectedRow.Cells[1].Text.ToString());
SqlDataAdapter daCategory = new SqlDataAdapter("Descargar", cn);
daCategory.SelectCommand.CommandType =
CommandType.StoredProcedure;
var cm = new SqlCommand("Descargar", cn);
cm.CommandType = System.Data.CommandType.StoredProcedure;
cm.Parameters.AddWithValue("@Correo", correo);
cm.Parameters.AddWithValue("@ID_C", IDContenido);
cm.Parameters.AddWithValue("@Puntuacion", nota);
cn.Open();
cm.ExecuteNonQuery();
cn.Close();

string Nombre = GridView1.SelectedRow.Cells[3].Text.ToString();
string Extencion =
GridView1.SelectedRow.Cells[4].Text.ToString();

byte[] buffer = null;
SqlConnection SqlConn = new SqlConnection(cadenaconexion);
{
SqlConn.Open();
using (SqlCommand command = new SqlCommand("SELECT Sec_bytes
FROM CONTENIDO WHERE IDContenido ='" + IDContenido + "'", SqlConn))
{
buffer = (byte[])command.ExecuteScalar();
}
SqlConn.Close();
}
long fileSize = (long)buffer.Length;
Response.Clear();
Response.ContentType = "application/oc-stream";
Response.AddHeader("Content-Disposition", "attachement;
filename=" + HttpUtility.UrlEncode(Nombre + Extencion));
Response.AddHeader("Content-Length", fileSize.ToString());
Response.BinaryWrite(buffer);
Response.Flush();
Response.Close();

43

lblMensaje.Visible = true;
lblMensaje.Text = "PROCESO EXITOSO";
}
else
{
Response.Redirect("Registrarse.aspx");
//lblMensaje.Text = "PARA DESCARGAR DEBES LOGEARTE";
}
}
catch
{
lblMensaje.Visible = true;
lblMensaje.Text = "ERROR EN EL PROCESO";
}
}
b. }
4. TIENDA
a. Se crea una pestaa Tienda en el cual el usuario realiza las descargas
deseadas mediante la bsqueda del contenido, los campos
correspondientes a tienda son:
Ingresar(El producto)
Buscar por(Nombre, Tipo, Autor, Precio)
Botn Buscar
Usuario
Nota
Boton Descargar

b. La funcionalidad de la pestaa Tienda es la siguiente:
Cuando llamamos al botn Buscar, se hace la conexin a la BD y
se asignan los valores ingresados a las variables
correspondientes, una vez que las variables estn con sus
respectivos valores se los enva al procedimiento. Las nuevas
tuplas se asignan en la tabla Descargas y Usuarios, debido a que
un Usuario realiza la descarga
protected void btnDescargar_Click(object sender, EventArgs e)
{
var cn = new SqlConnection();
cn.ConnectionString = "Data Source=USUARIO-PC\\SQLEXPRESS;Initial
Catalog=DBMULTIMEDIA;Integrated Security=True";

string nombre = txtUsuarioD.Text.ToString();
int nota = Convert.ToInt32(txtNotaD.Text);
IDContenido =
Convert.ToInt32(GridView1.SelectedRow.Cells[1].Text.ToString());
SqlDataAdapter daCategory = new SqlDataAdapter
("Descargar", cn);
daCategory.SelectCommand.CommandType =
CommandType.StoredProcedure;

44
var cm = new SqlCommand("Descargar", cn);
cm.CommandType = System.Data.CommandType.StoredProcedure;
cm.Parameters.AddWithValue("@Correo", nombre);
cm.Parameters.AddWithValue("@ID_C", IDContenido);
cm.Parameters.AddWithValue("@Puntuacion", nota);
cn.Open();
cm.ExecuteNonQuery();
cn.Close();
txtUsuarioD.Text = "";
txtNotaD.Text = "";

}


5. ADMINISTRACION

a. Esta pestaa es utilizada nicamente por el administrador de la BD en
cual podr modificar, insertar y eliminar los Contenidos de la BD, la
funcionalidad para administrar contenidos es la siguiente:

INSERTAR CONTENIDO:
Para poder insertar un contenido debemos conocer los campos que se
almacenan en la BD, con tal conocimiento podemos crear las respectivas
variables que almacenaran los datos a ingresar una vez hecho ese
proceso se envan las variables al procedimiento de insercin.
protected void btnInsertarCont_Click(object sender, EventArgs e)
{
var cn = new SqlConnection();
cn.ConnectionString = "Data Source=USUARIO-PC\\SQLEXPRESS;Initial
Catalog=DBMULTIMEDIA;Integrated Security=True";
string nombre = txtNombreC.Text.ToString();
string descripcion = txtDescrip.Text.ToString();
string autor = txtAutor.Text.ToString();
byte estado = Convert.ToByte(txtEstado.Text);
float precio = Convert.ToSingle(txtPrecio.Text);
string tamao = txtTamao.Text.ToString();
string sec_A = txtSec.Text.ToString();
string promo = txtPromo.Text.ToString();
string cate = txtCategoria.Text.ToString();
string info = txtInfo.Text.ToString();
string exte = txtExten.Text.ToString();
string mime = txtMime.Text.ToString();
SqlDataAdapter daCategory = new SqlDataAdapter
("AgregarContenido", cn);
daCategory.SelectCommand.CommandType =
CommandType.StoredProcedure;
var cm = new SqlCommand("AgregarContenido", cn);
cm.CommandType = System.Data.CommandType.StoredProcedure;
cm.Parameters.AddWithValue("@NomCont", nombre);
cm.Parameters.AddWithValue("@Descr", descripcion);
cm.Parameters.AddWithValue("@Autor", autor);
cm.Parameters.AddWithValue("@Estado", estado);
cm.Parameters.AddWithValue("@Precio", precio);
cm.Parameters.AddWithValue("@Tamao", tamao);
cm.Parameters.AddWithValue("@SecB", sec_A);

45
cm.Parameters.AddWithValue("@IDPromo",promo);
cm.Parameters.AddWithValue("@IDCate", cate);
cm.Parameters.AddWithValue("@Info", info);
cm.Parameters.AddWithValue("@Extc", exte);
cm.Parameters.AddWithValue("@MMT", mime);
cn.Open();
cm.ExecuteNonQuery();
cn.Close();
GridView1.DataBind();
string cadenaconexion = "Data Source=USUARIO-PC\\SQLEXPRESS;Initial
Catalog=DBMULTIMEDIA;Integrated Security=True";
string selectSQL = "SELECT * FROM CONTENIDO'";
SqlConnection con = new SqlConnection(cadenaconexion);
SqlCommand cmd = new SqlCommand(selectSQL, con);
SqlDataReader dr;
try
{
con.Open();
dr = cmd.ExecuteReader();
GridView1.DataSource = dr;
con.Close();
}
catch (Exception err)
{
lblAlerta.Text = err.Message;
}
}

MODIFICAR CONTENIDO:
Para realizar la modificacin primero mostramos los datos en un
gridView el cual nos dar mayor facilidad; seleccionando la tupla a
modificar y cargando los valores en las variables, las cuales son
enviadas como parmetros al procedimiento a ejecutar.
protected void btnModificarCont_Click(object sender, EventArgs e)
{
var cn = new SqlConnection();
cn.ConnectionString = "Data Source=USUARIO-PC\\SQLEXPRESS;Initial
Catalog=DBMULTIMEDIA;Integrated Security=True";

string nombre = txtCont.Text.ToString();
string descripcion = txtDesc.Text.ToString();
string autor = txtAutor.Text.ToString();
byte estado = Convert.ToByte(txtEstado.Text);
float precio = Convert.ToSingle(txtPrecio.Text);
string tamao = txtTamao.Text.ToString();
string sec_A = txtSec.Text.ToString();
string promo = txtPromo.Text.ToString();
string cate = txtCate.Text.ToString();
string info = txtInfo.Text.ToString();
string exte = txtExt.Text.ToString();
string mime = txtMime.Text.ToString();

SqlDataAdapter daCategory = new SqlDataAdapter
("ModificarContenido", cn);
daCategory.SelectCommand.CommandType =
CommandType.StoredProcedure;
var cm = new SqlCommand("ModificarContenido", cn);

46
cm.CommandType = System.Data.CommandType.StoredProcedure;
cm.Parameters.AddWithValue("@NombreCont", nombre);
cm.Parameters.AddWithValue("@Descr", descripcion);
cm.Parameters.AddWithValue("@Autor", autor);
cm.Parameters.AddWithValue("@Estado", estado);
cm.Parameters.AddWithValue("@Precio", precio);
cm.Parameters.AddWithValue("@Tamao", tamao);
cm.Parameters.AddWithValue("@SecB", sec_A);
cm.Parameters.AddWithValue("@IDPromo",promo);
cm.Parameters.AddWithValue("@IDCate", cate);
cm.Parameters.AddWithValue("@Info", info);
cm.Parameters.AddWithValue("@Extn", exte);
cm.Parameters.AddWithValue("@MMT", mime);
cn.Open();
cm.ExecuteNonQuery();
cn.Close();

txtCont.Text = "";
txtDesc.Text = "";
txtAutor.Text = "";
txtEstado.Text = "";
txtPrecio.Text = "";
txtTamao.Text = "";
txtSec.Text = "";
txtPromo.Text = "";
txtCate.Text = "";
txtInfo.Text = "";
txtExt.Text = "";
txtMime.Text = "";

GridView1.DataBind();
string cadenaconexion = "Data Source=USUARIO-PC\\SQLEXPRESS;Initial
Catalog=DBMULTIMEDIA;Integrated Security=True";
string selectSQL = "SELECT * FROM CONTENIDO'";
GridView1.AutoGenerateSelectButton = true;
SqlConnection con = new SqlConnection(cadenaconexion);
SqlCommand cmd = new SqlCommand(selectSQL, con);
SqlDataReader dr;
try
{
con.Open();
dr = cmd.ExecuteReader();
GridView1.DataSource = dr;

con.Close();
}
catch (Exception err)
{

lblAlerta.Text = err.Message;
}
}
}
ELIMINAR CONTENIDO
Para eliminar un contenido solo nos fijamos en su ID y el procedimiento
almacenado hace referencia a ese ID con la tabla, en la cual se borrara el
dato una vez que hayamos enviado los datos al procedimiento
almacenado

47
protected void btnEliminarPro_Click(object sender, EventArgs e)
{
var cn = new SqlConnection();
cn.ConnectionString = "Data Source=USUARIO-PC\\SQLEXPRESS;Initial
Catalog=DBMULTIMEDIA;Integrated Security=True";
int contenido = Convert.ToInt32(txtEliminar.Text);
SqlDataAdapter daCategory = new SqlDataAdapter
("EliminarContenido", cn);
daCategory.SelectCommand.CommandType =
CommandType.StoredProcedure;
var cm = new SqlCommand("EliminarContenido", cn);
cm.CommandType = System.Data.CommandType.StoredProcedure;
cm.Parameters.AddWithValue("@IDCont", contenido);
cn.Open();
cm.ExecuteNonQuery();
cn.Close();


GridView1.DataBind();
string cadenaconexion = "Data Source=USUARIO-PC\\SQLEXPRESS;Initial
Catalog=DBMULTIMEDIA;Integrated Security=True";
string selectSQL = "SELECT * FROM CONTENIDO'";
SqlConnection con = new SqlConnection(cadenaconexion);
SqlCommand cmd = new SqlCommand(selectSQL, con);
SqlDataReader dr;
try
{
con.Open();
dr = cmd.ExecuteReader();
GridView1.DataSource = dr;
con.Close();
}
catch (Exception err)
{
lblAlerta.Text = err.Message;
}
}

a. Aparte de realizar mantenimiento a los contenidos de la BD, tambin
puede realizar mantenimiento a los Usuarios como son Cargar Dinero,
Cerrar Cuenta, la funcionalidad para administrar Usuarios es la
siguiente:

CARGAR DINERO
Las variables utilizadas en este procesamiento son:
Correo Electrnico
Monto
El correo electrnico es el que identifica a que usuario se le va a recargar
el dinero guardando el valor en una variable y envindolo al
procedimiento almacenado.

protected void btnRecargar_Click(object sender, EventArgs e)
{
var cn = new SqlConnection();

48
cn.ConnectionString = "Data Source=MELISSA-PC\\SQLEXPRESS;Initial
Catalog=DBMULTIMEDIA;Integrated Security=True";

string usuario = txtUsuario.Text.ToString();
float saldo = Convert.ToSingle(txtSaldo.Text);
SqlDataAdapter daCategory = new SqlDataAdapter
("CargarDinero", cn);
daCategory.SelectCommand.CommandType =
CommandType.StoredProcedure;
var cm = new SqlCommand("CargarDinero", cn);
cm.CommandType = System.Data.CommandType.StoredProcedure;
cm.Parameters.AddWithValue("@Correo", usuario);
cm.Parameters.AddWithValue("@Saldo",saldo);
cn.Open();
cm.ExecuteNonQuery();
cn.Close();
GridView1.DataBind();
}

CERRARCUENTA
Se ingresa el correo electrnico de la persona a la cual se le inhabilita la
cuenta, hay que considerar unas excepciones las cuales son:
Usuario no cuente con dinero
Usuario se encuentre inhabilitado

protected void btnDesactivarUsu_Click(object sender, EventArgs e)
{
var cn = new SqlConnection();
cn.ConnectionString = "Data Source=MELISSA-PC\\SQLEXPRESS;Initial
Catalog=DBMULTIMEDIA;Integrated Security=True";

string correo = txtUsuario.Text.ToString();
SqlDataAdapter daCategory = new SqlDataAdapter
("CerrarCuenta", cn);
daCategory.SelectCommand.CommandType =
CommandType.StoredProcedure;
var cm = new SqlCommand("CerrarCuenta", cn);
cm.CommandType = System.Data.CommandType.StoredProcedure;
cm.Parameters.AddWithValue("@Correo", correo);
cn.Open();
cm.ExecuteNonQuery();
cn.Close();
GridView1.DataBind();

}





49
MANUAL DE USUARIO
DESCRIPCION
Se dise esta pgina web con el propsito de brindar a los usuarios productos
multimedia tales como msica, video e imgenes, orientados a la descarga de
dichos productos para facilitar la demanda de los usuarios.
REQUERIMIENTOS DEL SISTEMA
Para poder utilizar esta pgina deber contar, como mnimo con lo siguiente:
Sistema operativo Windows de 64 bits:
o Windows XP
o Windows Vista
o Windows 7
o Windows 8
Computadora PC con el sistema operativo detallado y funcionando
correctamente.

ACCESO A LA APLICACIN
Una vez ingresado a la aplicacin nos mostrara un resumen de los contenidos ms
descargados y los contenidos ms votados, realizados por los clientes.



50
LOGIN ADMINISTRADOR
Cuando un administrador se logea debe de enviarlo al mdulo de administracin,
donde se encarga de efectuar el mantenimiento de los usuarios y los productos






51
LOGIN USUARIO
Cuando un usuario ingresa lo lleva a su perfil el cual le mostrara su informacin
necesaria para realizar: Sus descargas, regalos realizados, sus regalos, editar
informacin, regalar, etc.

1. PESTAA REGISTRAR
En la pestaa de REGISTRAR nos muestra los campos que se utilizan para crear
un Usuario.





52
2. PESTAA TIENDA
En la pestaa de TIENDA nos muestra los campos por los cuales vamos a buscar
el producto, el cual lo podemos encontrar de 4 formas que son: Nombre, Tipo,
Autor y Precio.

Una vez realizada la bsqueda nos muestra en una tabla los resultados de
dicha bsqueda y al mismo tiempo un botn de descarga el cual nos permitir
descargar una vez seleccionado el producto.



53
3. PESTAA ADMINISTRACION
En la pestaa de ADMINISTRACION se encuentra nuestro mdulo de
administracin que contiene como ndices principales los siguiente:
En esta pestaa nosotros realizamos la parte de mantenimiento de los artculos
y los usuarios registrados en nuestra BD.





















54
CONTENIDO
o INSERTAR
Insertamos los datos especificados por los campos de la tabla
Contenido.


MODIFICAR
Seleccionamos el producto, una vez seleccionado el producto se accede
a sus datos para poder hacer la modificacin.


55
o ELIMINAR
Mostramos la tabla Contenido con el cual nos guiaremos para saber su
ID. Ingresamos el ID seleccionado para eliminar el contenido de la

CATEGORIA
o INSERTAR
Insertamos los datos especificados por los campos de la tabla Categoria






56
o MODIFICAR
Seleccionamos la categora a modificar, una vez seleccionada la
categora se accede a sus datos para poder hacer la modificacin.



















57
o ELIMINAR
Mostramos la tabla Categora con el cual nos guiaremos para saber su
ID. Ingresamos el ID seleccionado para eliminar el contenido de la BD.

















58
PROMOCIONES
o INSERTAR
Insertamos los datos especificados por los campos de la tabla
Promocin.



















59
o MODIFICAR
Seleccionamos la promocin a modificar, una vez seleccionada la
promocin se accede a sus datos para poder hacer la modificacin.
















60
o ELIMINAR
Mostramos la tabla de las Promociones con el cual nos guiaremos para
saber su ID. Ingresamos el ID seleccionado para eliminar el contenido
de la BD.



















61
USUARIO
o CARGAR DINERO
Seleccionar el correo del Usuario y el monto a recargar, una vez hecho
el procedimiento se muestra una grilla con los datos del Usuario al cual
se le ha recargado el saldo.


















62
o CERRAR CUENTA
Mostramos la Tabla Usuario y por medio del campo correo nosotros
eliminaremos a dicho usuario que este asociado a ese campo. Hay que
considerar lo siguiente para eliminar a un Usuario:
Usuario se encuentre habilitado
No cuente con saldo


CONCLUCIONES:

A partir de aqu, se detallan diferentes conclusiones agrupadas en puntos
claramente diferenciados y que correspondes a cada una de las fases y
entregables de las que se compone el proyecto.
En la primera fase del Proyecto Final se realiz el modelado de datos y el
modelo entidad relacin, a partir de este se realiz el modelo relacional que
permite almacenar la informacin del sistema de descarga, adems de ellos
se realiz la normalizacin usando la metodologa de la transformacin de
los 8 pasos del modelo entidad relacin al modelo relacional.
En la segunda fase del Proyecto Final se realizo las consultas en la base de
datos a los cuales cumplen con los requerimientos, como puntos final se
realiz los procedimientos almacenados en los cuales se aplican los

63
conocimientos sobre dicho tema estos procedimientos cumplen con los
requerimientos iniciales del proyecto.
Por ltimo, y a modo de enlace entre los conocimientos adquiridos en el
curso de Administracin de datos y la Informacin podemos decir que
hicimos uso de todos los conocimientos dictados en el curso aplicando cada
uno de ellos para cada entregable de proyecto.
GLOSARIO
Modelado de Datos
o Coleccin de conceptos que describen la estructura de una Base de
Datos.
Estructura de Base de Datos
o Tipos de datos, vnculos y restricciones.
o Modelo relacional: Representa la Base de datos como una coleccin de
relaciones.
Normalizacin
o Proceso de conversin de una relacin en una forma estndar, con el fin
de eliminar la redundancia de datos.
Procedimientos almacenados
o Secuencia ordenada de instrucciones T-SQL, que pueden recibir y
proporcionar parmetros provistos por el usuario y se pueden guardar
en el servidor con un nombre, para posteriormente se invocados y
ejecutados, por lo regular desde una aplicacin.
Bibliografa
Paginas:
Crear un procedimiento almacenado
http://msdn.microsoft.com/es-es/library/ms345415.aspx
Procedimientos almacenados (parmetros de entrada)
http://www.sqlserverya.com.ar/temarios/descripcion.php?c
od=122&punto=122
Como crear Procedimientos Almacenados en Sql Server
http://cristiantorresalfaro.blogspot.com/2012/06/como-
crear-procedimientos-almacenados.html

64
Procedimientos almacenados en Transact SQL
http://www.devjoker.com/contenidos/articulos/238/Proced
imientos-almacenados-en-Transact-SQL.aspx
[SQL]Procedimientos almacenados paso a paso
http://mspnor.com/blog/2008/10/31/sqlprocedimientos-
almacenados-paso-a-paso/

You might also like