Date post: | 26-Dec-2015 |
Category: |
Documents |
Upload: | william-valdez |
View: | 16 times |
Download: | 1 times |
UNIVERSIDAD
CATÓLICA DE SANTA MARÍA
FACULTAD DE CIENCIAS E INGENIERÍAS FÍSICAS Y
FORMALES
PROGRAMA PROFESIONAL DE INGENIERÍA DE
SISTEMAS
CURSO: Administración de los datos y
la información
DOCENTE: ING. Guillermo Calderón 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 RELACIÓN ...................................................................................................................... 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
NORMALIZACIÓN: ............................................................................................................................................................10
PASO 1: Transformación de Entidades...............................................................................................................11
PASO 2: Transformación de Entidades Débiles .............................................................................................11
PASO 3: Transformación 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: Transformación De 1: 1 ............................................................................................................................14
PASO 5: Transformación De N: M ..........................................................................................................................14
PASO 6: Transformación De Atributos Multivaluados ...............................................................................14
PASO 7: Transformación De Vínculos .................................................................................................................14
PASO 8: Información De Una Generalización. ............................................................................................14
DIAGRAMA RELACIONAL.............................................................................................................................................15
Breve Explicación ..........................................................................................................................................................15
Cardinalidad .....................................................................................................................................................................16
DICCIONARIO DE DATOS .............................................................................................................................................16
CÓDIGO 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 Promoción: ..........................................................................................................................................34
Cargar Dinero: .......................................................................................................................................................35
Crear Categoría:....................................................................................................................................................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 APLICACIÓN .......................................................................................................................................49
1. PESTAÑA REGISTRAR ..................................................................................................................................51
2. PESTAÑA TIENDA ..........................................................................................................................................52
3. PESTAÑA 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
Normalización .......................................................................................................................................................63
Procedimientos almacenados .......................................................................................................................63
BIBLIOGRAFÍA ....................................................................................................................................................................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 diseño del diagrama E-R el cual cumple con la definición del problema y responde a
todas las consultas del proyecto. A partir de dicho modelo realizamos la normalización
del esquema, descripción del esquema final implementado, diccionario de datos,
posteriormente especificaciones de códigos SQL para cada una de las consultas
requeridas, además 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 comprensión de todos los factores que hacen posible el
desarrollo
INTRODUCCION
El presente informe consiste en la elaboración de un modelo de datos y sistema de
información asociado a un portal de descarga pagada de contenidos en formato de
imágenes (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
información del portal de descargas.
b. Implementación 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 parámetros que reciben los procedimientos deben ser elegidos
según el esquema que estamos manejando.
6
SUPOSICIONES ADICIONALES
Al crear un nuevo usuario, se cargará automáticamente un valor de S/. 10.00 a su saldo actual, para q pueda realizar algunas descargas en forma de prueba del servicio.
Según 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 sólo 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 aún se encuentra disponible, o fue de baja por el administrador, según sea el caso.
Se agregará el atributo de número de descargas al contenido, con un fin de poder tener un control más 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 implementación de la entidad Categoría, de modo q se pueda ubicar de manera más fluida sus categorías padre y/o subcategorías.
Se realizará una notificación 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 RELACIÓN ENTIDADES:
Describimos la arquitectura (modelo entidad - relación) de las entidades de nuestro sistema multimedia a realizar, las cuales están compuestas por siete entidades que describiremos a continuación
7
o ENTIDAD USUARIO En esta entidad se encuentran toda la información del usuario que será pertinente para nuestro sistema.
o ENTIDAD CONTENIDO
En esta entidad se guardara la información del producto y las características 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 opción 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 página (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 categorías para que la administración de los datos sea eficiente.
o ENTIDAD RANKING
Creamos la entidad ranking donde se mostraran los 10 más descargados y los 10 más votados, la cual se actualizara cada semana.
DIAGRAMA ENTIDAD – RELACION:
Mostramos las entidades con sus relaciones respectivas haciendo recalcar lo anterior mostrado.
10
Normalización: Para la normalización tomamos como base los 8 pasos de transformación del modelo entidad-relación al modelo relacional – Navathe donde tomamos como punto principal:
11
PASO 1: Transformación de Entidades
PASO 2: Transformación de Entidades Débiles
No hay ninguna entidad de este tipo.
PASO 3: Transformación de 1: N
Para cada vinculo 1:N entre dos entidades E y F donde F está del lado N del vínculo, se añade a la relación 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: Transformación de 1: 1 No hay ninguna relación de este tipo.
PASO 5: Transformación de N: M
No hay ninguna relación de este tipo. PASO 6: Transformación de atributos multivaluados
No hay ningún atributo de este tipo. PASO 7: Transformación de vínculos
Para cada vínculo se crea una relación R.
Los atributos de la relación R serán las claves primarias de todas las entidades relacionadas más los atributos propios del vínculo.
PASO 8: Información de Una Generalización.
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 EXPLICACIÓN En nuestro diagrama, hemos considerado la creación de ocho tablas: Usuario, Descarga, Contenido, Regalo, Promoción, Ranking, Categoría y Archivo. A continuación la explicación:
Un usuario, al realizar la descarga de un contenido, deberá automáticamente darle una puntuación. Esta información, 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 administración de los datos. A su vez, esta tabla le permitirá validar al sistema, el número de veces que el usuario califica un contenido (debe ser 1 vez y sólo a los contenidos descargados), la fecha de descarga, y la calificación en sí que le dio el usuario al contenido.
De igual manera, los usuarios podrán regalar contenidos (música, imágenes, 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 código del regalo (IDRegalo) para su posterior descarga; sin embargo, también puede rechazar el regalo (Estado_Regalo).
El Usuario Administrador será el único capaz de asignar las promociones a los contenidos, así como también aplicarle el 20% de descuento a los Usuarios q les corresponda
Los contenidos almacenados en la base de datos, contarán con varias características, entre las que están las principales que aparecerán en pantalla para una mejor
16
descripción hacia el usuario, como el autor, nombre, precio, categoría, estado y puntuación promedio; sin embargo, hay otras que son necesarias para una mejor administración de la información, como el ID de la promoción a la cual está sujeto el contenido, árbol de categorías, tamaño, URL, secuencia en bytes, número de descargas, y algunos de estos datos, son extraídos de otras tablas presentes en la relación, como Categoría, Tipo de Archivo y Promoción.
Al ingresar a la Página de descargas, se visualizaran dos rankings, para lo cual se está integrando una tabla ranking la cual guardara dichos datos, los cuales brindaran información de los 10 contenidos más descargados en la semana anterior y otro de los 10 contenidos más votados en la semana anterior.
CARDINALIDAD
1 a 1: No hay ninguna relación 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 categoría abarca muchos contenidos. Un contenido no puede ser parte de diferentes categorías.
o USUARIO a PROMOCIONES.-.- Un determinado Usuario (Administrador) puede establecer muchas promociones a uno o varios contenidos.
o CONTENIDO a PROMOCIONES.- Una misma promoción puede incluir muchos contenidos. Según los requisitos del trabajo, un contenido sólo puede tener una promoción asociada en el momento.
o TIPO_ARCHIVO a CONTENIDO.- Un determinado tipo de archivo puede ser para muchos contenidos. Un contenido sólo tiene un único tipo de archivo.
MUCHOS a MUCHOS: No hay ninguna relación de este tipo.
DICCIONARIO DE DATOS
Un diccionario de datos es un conjunto de metadatos que contiene las características lógicas y puntuales de los datos que se van a utilizar en el sistema que se programa, incluyendo nombre, descripción, alias, contenido y organización.
Identifica los procesos donde se emplean los datos y los sitios donde se necesita el acceso inmediato a la información, se desarrolla durante el análisis de flujo de datos y auxilia a los analistas que participan en la determinación de los requerimientos del sistema, su contenido también se emplea durante el diseño.
17
18
19
CÓDIGO SQL PARA CADA UNA DE LAS CONSULTAS
CONSULTA 1: − Número 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 días. 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: − Número de descargas que se han efectuado desde la cuenta del cliente
con id X (ya sean propias o regalos a X) en el último año.
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 extensión del contenido más descargado
en los últimos 30 días. 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 extensión del contenido más descargado
en el último año 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 extensión 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 extensión 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, descripción, precio, extensión de archivo y la categoría a
la que pertenece (la más baja en el árbol de categorías) 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 número de
descargas efectuadas (ya sean propias o por regalos) en los últimos 6 meses (de más 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
categoría raíz del árbol de categorías, junto con el nombre de la categoría− 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 promoción 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 promoción 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), @Contraseña 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, @Contraseña, @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','[email protected]',@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 '[email protected]',@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 número 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 '[email protected]','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 '[email protected]','[email protected]','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
información 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, @Tamaño 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,@Tamaño,@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','N´SAMBLE','true',5.00,'3000kb',NULL,1,1,'MUSIC','.mp3','WINDOWS MEDIA',@msg OUTPUT SELECT @msg AS msg SELECT * FROM CONTENIDO
Ingresar Promoción: o Para asignar una promoción a un contenido el administrador de la BD
registra la información 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
depósito de dinero; una vez realizado el depósito 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 Categoría: o Para crear una categoría el administrador de la Base de datos asigna la
información 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 Contraseña ='" + tbContraseña.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 = ""; tbContraseña.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 pestaña 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
Contraseña
Confirmar contraseña
b. La funcionalidad para registrar en la BD de datos es la siguiente:
Se hace la conexión con la base de datos, almacenamos los valores
introducidos por el Usuario en variables string las cuales son
enviadas al procedimiento con los parámetros 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 contraseña = txtContraseña.Text.ToString(); string confirmar = txtConfirmar.Text.ToString(); //string mensaje = string.Empty; if (contraseña.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("@Contraseña", contraseña); cn.Open(); cm.ExecuteNonQuery(); cn.Close(); txtNom.Text = ""; txtApellP.Text = ""; txtApellM.Text = ""; txtCorreo.Text=""; txtContraseña.Text=""; txtConfirmar.Text=""; band = false; } else { lblMensaje.Text = "CONTRASEÑA 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 pestaña Tienda en el cual el usuario realiza las descargas
deseadas mediante la búsqueda del contenido, los campos
correspondientes a tienda son:
Ingresar(El producto)
Buscar por(Nombre, Tipo, Autor, Precio)
Botón Buscar
Usuario
Nota
Boton Descargar
b. La funcionalidad de la pestaña Tienda es la siguiente:
Cuando llamamos al botón Buscar, se hace la conexión a la BD y
se asignan los valores ingresados a las variables
correspondientes, una vez que las variables están con sus
respectivos valores se los envía 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 pestaña 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 envían las variables al procedimiento de inserción.
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 tamaño = txtTamaño.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("@Tamaño", tamaño); 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 modificación 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 parámetros 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 tamaño = txtTamaño.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("@Tamaño", tamaño); 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 = ""; txtTamaño.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, también
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 Electrónico Monto
El correo electrónico es el que identifica a que usuario se le va a recargar el dinero guardando el valor en una variable y enviándolo 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 electrónico 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 página web con el propósito de brindar a los usuarios productos
multimedia tales como música, video e imágenes, orientados a la descarga de
dichos productos para facilitar la demanda de los usuarios.
REQUERIMIENTOS DEL SISTEMA
Para poder utilizar esta página deberá contar, como mínimo 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 APLICACIÓN
Una vez ingresado a la aplicación nos mostrara un resumen de los contenidos más descargados y los contenidos más votados, realizados por los clientes.
50
LOGIN ADMINISTRADOR
Cuando un administrador se logea debe de enviarlo al módulo de administración,
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 información
necesaria para realizar: Sus descargas, regalos realizados, sus regalos, editar
información, regalar, etc.
1. PESTAÑA REGISTRAR
En la pestaña de REGISTRAR nos muestra los campos que se utilizan para crear
un Usuario.
52
2. PESTAÑA TIENDA
En la pestaña 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 búsqueda nos muestra en una tabla los resultados de
dicha búsqueda y al mismo tiempo un botón de descarga el cual nos permitirá
descargar una vez seleccionado el producto.
53
3. PESTAÑA ADMINISTRACION
En la pestaña de ADMINISTRACION se encuentra nuestro módulo de
administración que contiene como índices principales los siguiente:
En esta pestaña nosotros realizamos la parte de mantenimiento de los artículos
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 modificación.
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 categoría a modificar, una vez seleccionada la
categoría se accede a sus datos para poder hacer la modificación.
57
o ELIMINAR
Mostramos la tabla Categoría 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
Promoción.
59
o MODIFICAR
Seleccionamos la promoción a modificar, una vez seleccionada la
promoción se accede a sus datos para poder hacer la modificación.
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 relación, a partir de este se realizó el modelo relacional que
permite almacenar la información del sistema de descarga, además de ellos
se realizó la normalización usando la metodología de la transformación de
los 8 pasos del modelo entidad relación 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 Administración de datos y la Información 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 Colección de conceptos que describen la estructura de una Base de
Datos.
Estructura de Base de Datos
o Tipos de datos, vínculos y restricciones.
o Modelo relacional: Representa la Base de datos como una colección de
relaciones.
Normalización
o Proceso de conversión de una relación en una forma estándar, con el fin
de eliminar la redundancia de datos.
Procedimientos almacenados
o Secuencia ordenada de instrucciones T-SQL, que pueden recibir y
proporcionar parámetros 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 aplicación.
Bibliografía
Paginas:
• “Crear un procedimiento almacenado”
http://msdn.microsoft.com/es-es/library/ms345415.aspx
• “Procedimientos almacenados (parámetros 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/