Nombre Proyecto: Cinema Objetivo del Proyecto: Realizar una aplicación que administre las acciones básicas de un cinema
Nombre del Equipo: Pokemon Esmeralda
Integrantes del Equipo:
Nombre: Picazo
Nombre: Analco
Nombre: Diaz Cortes
Nombre: Rojas
Rol: Programador y analista
Rol: DBA
Rol: Analista
Rol: Programador
Martínez Cristian Uriel
Sánchez Edwin Elias
Josue
Carreón Francisco Sinair
Descripción del proyecto: Es una aplicación que permite la compra de películas en distintos formatos, tiene gran variedad en productos y da la confiabilidad al usuario de que sus compras realizadas
estarán seguras y serán realizadas cómodamente.
Alcance: Nivel nacional Presupuesto: 50000 por la elaboración de todo el sistema Cronograma/Duración: 3 meses Grupo:IC:32
Periodo: Agosto-Noviembre 2016
Problemática El cinema tiende a confundir su información le es difícil el control y manejo de su información, otro de las dificultades es que los clientes deben acudir al cinema para recibir pagar y recibir después su producto, la promoción de sus productos es vana, de alto coste y deficiente.
Solución Generar una aplicación que le permita al cliente consultar la información de los productos deseados y hacer sus compras sin tener que acudir a la tienda y permitirá al administrador el control de la información de la tienda en una aspecto organizado y amigable.
Diagrama de casos de uso General:
Modelo Lรณgico:
Modelo Relacional:
Diccionario de datos
Tabla: COMPRA Definición nombre columna Definición
PK Fk obligatorio (NN) tipo de dato Tipo de campo Rango Dominio Valor prederteminado ejemplos
tabla que almacena los datos de la compra Idcompra fecha total identificador unico de la compra
fecha de la compra
otal de la compra
Correo
idSucursal
correo del cliente
identificador unico de la sucursal
√ √
√
√
numérico number (8) 1-9999999 0-9
date
numérico number(8,2 ) 0.5099999.50 99999999.00-
1
29/11/16
1000
√ √ Cadena Varchar(30)
elias@hotmail.c om
√ √ numerico Number(8) 1-9999999 0-9 1
Diccionario de datos Tabla: CLIENTE Definición nombre columna
tabla que guarda los datos del cliente Correo Contraseña nombr e
Definición
correo del cliente
PK FK obligatorio tipo(NN) de dato Tipo de campo
contrase ña del cliente
direccion
cp
tarjeta
apelli dos del client e
Direccion del cliente
cdigo postal del cliente
tarjeta del cliente
telefono telefono del cilente
√ √
√
√
cadena
cadena
cadena
Varchar (50)
varchar (50)
Rango Dominio Valor prederteminad ejemplos o
contras eña del cliente
Apelli dos
Varcha r(50)
√ Cadena Varch ar(50 )
√
√
√
√
Cadena
numerico
Numerico
numerico
Varchar(10 0)
numbe r(8)
number(16)
number(10)
999999 99
99999999999 99999
9-999999999
0.5099999. 50 99999.00set@gm ail.com
1234
Josua
Vazquez
Bondojito
26700
1537101327547 831
57927420
Diccionario de datos Tabla: TIPO Definición nombre columna Definición
PK FK obligatorio tipo(NN) de dato Tipo de campo Rango Dominio Valor prederteminad ejemplos o
tabla que almacena los datos del tipo de disco Id_tipo nombre nombre del tipo de identificador unico del tipo
disco
√ √
√
numérico number (8) 9999999 0-9
cadena varchar (50)
2
DVD
Diccionario de datos Tabla: SUCURSAL Definición nombre columna Definición
PK FK obligatorio tipo(NN) de dato Tipo de campo Rango Dominio Valor prederteminad ejemplos o
Tabla que almacena los datos de las sucrsales Id_sucursal Nombre_sucursal horario horario de la sucursal identificador unico de la sucursal
nombre de la sucursal
√ √
√
numérico number (8) 1-9999999 0-9
Cadena varchar (50)
234
Cinema neza
√ Cadena Varchar(50)
6:00 am a 6:00 pm
Diccionario de datos Tabla: CATEGORIA Definición nombre columna
tabla que almacena los datos de la categoria Id_categoria identificador unico del estado
Nombre nombre de la categoria
Definición
PK FK obligatorio tipo(NN) de dato Tipo de campo Rango Dominio Valor prederteminad ejemplos o
√ √
√
numérico number (8) 99999999 0-9
cadena varchar (50)
3
Horror
Diccionario de datos Tabla: PELICULA Definición nombre columna Definición
PK FK
abla que almacena los datos de la pelicula Id_pelicula nombre precio identificador unico de la pelicula
Nombre de la pelicula
precio de la pelicula
Descripcion descripcion de la pelicula
Imagen Imagen de la pelicula
√ √
obligatorio tipo(NN) de dato
numérico
Tipo de campo
number (8)
Rango Dominio Valor prederteminad ejemplos o
9-9999999 0-9 1
√ cadena varchar (50)
√
√
√
numérico
cadena
cadena
number(8)
Varchar(100)
Varchar(120)
9-9999999 0-9 saw
50
Un gran juego del miedo
Saw,jpg
Diccionario de datos. Tabla: Empleado. Definicion
Nombre columna
tabla que almacena los datos de los empleados Id_Empleado
nombre
apellid os
correo
sueldo
direccion
codigoPos tal
Nombre del emplead o
apellid o del emple ado
correo del emple ado
sueldo del empleado
direccion del empleado
codigo postal del empleado
Numero _telefoni co telefono del emplead o
puesto
contraseñ a
Sucursal_I dsucursal
puesto del empleado
contrseña del empleado
identificad or unico de la sucursal
Municipio_ idmunicipi o identificad or unico del municipio
definicion
Identificador del empleado
PK FK OBLIGATORI O (NN) Tipo de dato
√ √
√
√
√
√
√
√
√
√
√
√ √
√ √
numerico
cadena
cadena
numerico
cadena
numerico
numerico
varchar (50)
varchar (100)
varchar (50)
number (8) 1-99999
Number(8)
199999999999
number (5) 1-9999
varchar (50)
Rango
number (8,2) 0.5099999.50
numeric o number (10) 1-99999
cadena
number (8)
caden a varcha r (50)
numerico
Tipo de campo
caden a varcha r (50)
Dominio
0-9
99999.00-
0-9
0-9
0-9
0-9
Valor Ejemplos
1
55700
4464055 7
3
5
Raul
Varga s
va@g mail.co m
3500
Av. lopez
gerente
223
1-9999999
Diccionario de datos Tabla: Municipio Definición nombre columna Definición
PK FK obligatorio tipo(NN) de dato Tipo de campo Rango Dominio Valor prederteminad ejemplos o
Catalogo de Municipios IdMunicipio
Nombre Nombre del municipio
idEstado identificador unico del estado
identificador unico del municipio
√ √ √
√
√
numérico number (8) 1-9999999 0-9
cadena varchar (50)
numerico Number(8) 1-9999999 0-9
3
Nezahualcoyotl
7
Diccionario de datos Tabla: Estado Definición nombre columna
Catalogo de Estado IdEstado identificador unico del estado
Nombre Nombre del Estado
Definición
PK FK obligatorio tipo(NN) de dato Tipo de campo Rango Dominio Valor prederteminad ejemplos o
√ √
√
numérico number (8) 1-9999999 0-9
cadena varchar (25)
1
Estado de Mexico
Diccionario de datos Tabla: Detalle_Compra (Rompimiento). Definición nombre columna Definición
PK FK
detalle de la compra realizada idcompra Idsucursal Idpelicula identificador unico dentificador de la compra unico de la Clave pelicula unica de sucursal
√ √
obligatorio tipo(NN) de dato
numérico
Tipo de campo
number (8)
Rango Dominio Valor prederteminad ejemplos o
√ √ numérico
√ √
cantidad
precio
cantidad de las peliculas
precio de la peliculas
√
√
numérico
numérico
number (8)
number (8)
number (8)
number(8)
1-9999999 0-9
1-9999999 0-9
1-9999999 0-9
19999999 0-9
1-9999999 0-9
1
1
1
1
numérico
60
idTipo tipo del disco
√ numérico number(8) v 0-9 543
Diccionario de datos Tabla: Peli_sucursal (Rompimiento). Definición nombre columna Definición
PK FK
detalle de las peliculas y la sucursal idsucursal idPelicula idtipo identificador unico de la sucursal
identificado r unico de la pelicula
identificador del tipo
Stock cantidad del producto en cada sucursal
√ √
√ √
√ √
√ √
obligatorio tipo(NN) de dato
numérico
Tipo de campo
number (8)
number (8)
number (8)
number (8)
Rango Dominio Valor prederteminad ejemplos o
1-9999 0-9
1-9999 0-9
1-9999 0-9
1-9999 0-9
23
2
numérico
numérico
2
numérico
1
Diccionario de datos Tabla: Tipo_Pelicula Definición nombre columna Definición
PK FK obligatorio (NN) tipo de dato Tipo de campo Rango Dominio Valor prederteminado ejemplos
Rompimiento entre tablas tipo y pelicula. idtipo idpelicula identificador unico del identificador unico tipo de la pelicula
√ √ numérico number (8) 1-9999 0-9 1
√ √ numérico number (8) 1-9999 0-9 1
Precio Precio de la pelicula
√ numérico number(8) 1-99999 0-9 40
Diccionario de datos Tabla: Pelicula_Categoria Definición nombre columna Definición
PK FK obligatorio tipo(NN) de dato Tipo de campo Rango Dominio Valor prederteminad ejemplos o
Rompimiento entre las tablas pelicula y tipo. idpelicula
idCategoria identificador de la categoria
dentificador unico de la pelicula
√ √
√ √
numérico number (8) 99999 0-9
numérico number (8) 99999 0-9
1
3
SQL CREATE TABLE TIPO( IDTIPO
NUMBER(8)
NOT NULL,
NOMBRE
VARCHAR2(100) NOT NULL,
TIPO_IDTIPO_PK
PRIMARY KEY(IDTIPO),
);
--------------------------------CATEGORIA----------------------------------------------------------------------------------
CREATE TABLE CATEGORIA( IDCATEGORIA
NUMBER(8)
NOMBRE
NOT NULL,
VARCHAR2(50)
CATEGORIA_IDCATEGORIA_PK
NOT NULL,
PRIMARY KEY(IDCATEGORIA)
);
------------------------------------PELICULA CATEGORIA-----------------------------------------------------------------------
CREATE TABLE PELICULA_CATEGORIA( IDPELICULA
NUMBER(8)
NOT NULL,
IDCATEGORIA
NUMBER(8)
NOT NULL,
PC_IDPELICULA_IDCATEGORIA_PK
PRIMARY KEY(IDPELICULA,IDCATEGORIA),
PC_IDPELICULA_FK
FOREIGN KEY(IDPELICULA) REFERENCES PELICULA(IDPELICULA),
PC_IDCATEGORIA_FK
FOREIGN KEY(IDCATEGORIA) REFERENCES CATEGORIA(IDCATEGORIA),
);
-----------------------------------TIPO PELICULA---------------------------------------------------------------------------------
CREATE TABLE TIPO_PELICULA( IDTIPO
NUMBER(8)
NOT NULL,
IDPELICULA
NUMBER(8)
NOT NULL,
PRECIO
NUMBER(6,2)
NOT NULL,
TP_IDTIPO_IDPELICULA_PK TP_IDTIPO_FK
PRIMARY KEY(IDTIPO,IDPELICULA), FOREIGN KEY(IDTIPO) REFERENCES TIPO(IDTIPO),
TP_IDPELICULA_FK TP_PRECIO_CH
FOREIGN KEY(IDPELICULA) REFERENCES PELICULA(IDPELICULA), CHECK(PRECIO>0),
);
----------------------------------PELICULA SUCURSAL--------------------------------------------------------------------------
CREATE TABLE PELI_SUCURSAL( IDSUCURSAL
NUMBER(8)
NOT NULL,
IDPELICULA
NUMBER(8)
NOT NULL,
IDTIPO
NUMBER(8)
NOT NULL,
STOCK
NUMBER(8)
NOT NULL,
PS_IDSUCURSAL_IDPELICULA_PK PRIMARY KEY(IDSUCURSAL,IDPELICULA), PS_IDSUCURSAL_FK
FOREIGN KEY(IDSUCURSAL) REFERENCES SUCURSAL(IDSUCURSAL),
PS_IDPELICULA_FK
FOREIGN KEY(IDPELICULA) REFERENCES PELICULA(IDPELICULA),
PS_IDTIPO_FK
FOREIGN KEY(IDTIPO) REFERENCES TIPO(IDTIPO)
PS_STOCK_CH
CHECK(STOCK>0)
);
-----------------DETALLE COMPRA------------------------------------------------------------------------------------------------CREATE TABLE DETALLE_COMPRA( IDCOMPRA
NUMBER(8)
NOT NULL,
IDSUCURSAL
NUMBER(8)
NOT NULL,
IDPELICULA
NUMBER(8)
NOT NULL,
CANTIDAD
NUMBER(8)
NOT NULL,
PRECIO
NUMBER(6,2)
NOT NULL,
DC_IDCOMPRA_IDSUCURSAL_PK PRIMARY KEY(IDCOMPRA,IDSUCURSAL), DC_IDCOMPRA_FK
FOREIGN KEY(IDCOMPRA) REFERENCES COMPRA(IDCOMPRA),
DC_IDSUCURSAL_FK
FOREIGN KEY(IDSUCURSAL) REFERENCES PELI_SUCURSAL(IDSUCURSAL),
DC_IDPELICULA_FK
FOREIGN KEY(IDPELICULA) REFERENCES PELI_SUCURSAL(IDPELICULA),
DC_CANTIDAD_CH
CHECK(CANTIDAD>0),
DC_PRECIO_CH
CHECK(PRECIO>0),
); ----------------------------------------ESTADO-----------------------------------------------------------------
CREATE TABLE ESTADO( IDESTADO
NUMBER(8)
NOT NULL,
NOMBRE
VARCHAR2(50)
NOT NULL,
EST_IDESTADO_PK
PRIMARY KEY(IDESTADO)
);
-----------------TABLA MUNICIPIO----------------------------------------------------------------------
CREATE TABLE MUNICIPIO( IDMUNICIPIO
NUMBER(8)
NOMBRE IDESTADO
NOT NULL,
VARCHAR2(50) NUMBER(8)
NOT NULL,
NOT NULL,
MUN_IDMUNICIPIO_IDESTADO_PK PRIMARY KEY(IDMUNICIPIO,IDESTADO), MUN_IDESTADO_FK );
FOREIGN KEY(IDESTADO) REFERENCES ESTADO(IDESTADO),
INDICES 1.- CREATE UNIQUE INDEX DAT_EMP
ON EMPLEADO(NOMBRE, APELLIDOS, SUELDO);
2.- CREATE UNIQUE INDEX DAT_CLI ON CLIENTE (CORREO, NOMBRE, CP);
3.- CREATE UNIQUE INDEX DAT_COMPRA ON COMPRA(FECHA, TOTAL, CORREO);
4.- CREATE UNIQUE INDEX NOM_CAT ON CATEGORIA(NOMBRE);
INNER JOIN TABLA PADRE SUCURSAL
TABLA HIJO EMPLEADO
SQL SELECT S.IDSUCURSAL, EMP.IDEMPLEADO FROM SUCURSAL S, EMPLEADO EMP WHERE S.IDSUCURSAL=EMP.IDSUCURSAL;
CLIENTE
COMPRA
SELECT CORREO,IDCOMPRA FROM CLIENTE C, COMPRA, CP WHERE C.CORREO= CP.CORREO;
SUSCURSAL
COMPRA
SELECT IDSUCURSAL, IDCOMPRA FROM SUCURSAL S, COMPRA C WHERE S.IDSUCURSAL=C.IDCOMPRA;
SALIDA
ESTADO
MUNICIPIO
SELECT ES.IDESTADO, MU.IDMUNICIPIO FROM ESTADO ES, MUNICIPIO MU WHERE ES.IDESTADO=MU.IDMUNICIPIO;
SUCURSAL
PELI_SUCURSAL
SELECT SC.IDSUCURSAL, PS.IDPELICULA FROM SUCURSAL SC, PELI_SUCURSAL PS WHERE SC.IDSUCURSAL=PS.IDSUCURSAL;
COMPRA
DETALLE_COMPRA
SELECT CP.IDCOMPRA,DC.IDPELICULA,DC.CANTIDA D FROM COMPRA CP, DETALLE_COMPRA DC WHERE CP.IDCOMPRA=DC.IDCOMPRA;
PELI_SUCURSA L
DETALLE_COMPRA
SELECT PS.IDPELICULA, PS.STOCK, DC.IDPELICULA, DC.CANTIDAD, DC.CANTIDAD FROM PELI_SUCURSAL PS, DETALLE_COMPRA DC WHERE PS.IDPELICULA=DC.IDPELICULA;
TIPO_PELICUL A
PELI_SUCURSAL
SELECT TP.IDTIPO, PS.IDSUCURSAL, PS.STOCK FROM TIPO_PELICULA TP, PELI_SUCURSAL PS WHERE TP.IDTIPO=PS.IDTIPO;
TIPO
TIPO_PELICULA
SELECT TI.IDTIPO, TI.NOMBRE, TP.IDPELICULA, TP.PRECIO FROM TIPO TI, TIPO_PELICULA TP WHERE TI.IDTIPO=TP.IDTIPO;
PELICULA
PELI_SUCURSAL
SELECT PL.IDPELICULA, PL.NOMBRE, PS.IDSUCURSAL, PS.IDTIPO, PS.STOCK FROM PELICULA PL, PELI_SUCURSAL PS WHERE PL.IDPELICULA=PS.IDPELICULA;
PELICULA
TIPO_PELICULA
SELECT PL.IDPELICULA, TP.IDTIPO, PL.NOMBRE, TP.PRECIO FROM PELICULA PL, TIPO_PELICULA TP WHERE PL.IDPELICULA=TP.IDPELICULA;
PELICULA
PELICULA_CATEGORI A
SELECT PL.IDPELICULA,PC.IDCATEGORIA,PL.NOMBR E FROM PELICULA PL, PELICULA_CATEGORIA PC WHERE PL.IDPELICULA=PC.IDPELICULA;
CATEGORIA
PELICULA_CATEGORI A
SELECT CG.IDCATEGORIA,CG.NOMBRE,PC.IDPELICU LA FROM CATEGORIA CG, PELICULA_CATEGORIA PC WHERE CG.IDCATEGORIA=PC.IDCATEGORIA;
VISTAS
VISTA SQL CREATE OR REPLACE VIEW DETALLE AS SELECT S.IDSUCURSAL, S.NOMBRE, P.IDPELICULA, PS.IDTIPO, PS.STOCK FROM SUCURSAL S, PELICULA P, PELI_SUCURSAL PS WHERE S.IDSUCURSAL=PS.IDSUCURSAL AND P.IDPELICULA=PS.IDPELICULA ORDER BY IDSUCURSAL; CREATE OR REPLACE VIEW MES_SALARIO AS SELECT COUNT(IDEMPLEADO) ID_EMP, SUM(SUELDO) SUELDO, SUM(SUELDO*2) SUEL_MEN FROM EMPLEADO GROUP BY IDEMPLEADO; CREATE OR REPLACE VIEW SUCURSAL_EMPLEADO AS SELECT S.IDSUCURSAL, S.NOMBRE,E.IDEMPLEADO,E.APELLIDOS, E.CP, E.DIRECCION FROM SUCURSAL S, EMPLEADO E WHERE S.IDSUCURSAL= E.IDSUCURSAL ORDER BY S.IDSUCURSAL, E.APELLIDOS ASC; CREATE OR REPLACE VIEW VISTA_CAT AS SELECT IDPELICULA,NOMBRE, DESCRIPCION,PRECIO FROM PELICULA WHERE IDPELICULA=(SELECT IDPELICULA FROM PELI_SUCURSAL WHERE IDTIPO=2 );
SALIDA
PROGRAMACION
PROCEDIMIENTO DE REPORTE: create or replace PROCEDURE REPORTE(VL_IDSUCURSAL NUMBER) AS CURSOR C_REPORTE IS SELECT PS.IDSUCURSAL IDS, P.IDPELICULA IP, PS. IDTIPO IT, PS.STOCK ST, P.NOMBRE NB, P.PRECIO PC FROM PELICULA P, PELI_SUCURSAL PS WHERE P.IDPELICULA=PS.IDPELICULA AND IDSUCURSAL=VL_IDSUCURSAL; PELICULAS NUMBER(5); BEGIN DBMS_OUTPUT.PUT_LINE('REPORTE DE LA PELICULA'); FOR PEL IN C_REPORTE LOOP DBMS_OUTPUT.PUT_LINE('IDENTIFICADOR DE LA SUCURSAL: '|| PEL.IDS); DBMS_OUTPUT.PUT_LINE('IDENTIFICADOR DE LA PELICULA: '|| PEL.IP); DBMS_OUTPUT.PUT_LINE('TIPO DE DISCO: '|| PEL.IT); DBMS_OUTPUT.PUT_LINE('NOMBRE DE LA PELICULA: ' || PEL.NB); DBMS_OUTPUT.PUT_LINE('PRECIO DE LA PELICULA: ' || PEL.PC); DBMS_OUTPUT.PUT_LINE('CANTIDAD DISPONIBLE: ' || PEL.ST); PELICULAS:= PELICULAS+1; END LOOP; DBMS_OUTPUT.PUT_LINE('TOTAL DE REGISTROS: ' || PELICULAS); END REPORTE; SALIDA
PROCEDIMIENTO DEL TICKET: create or replace PROCEDURE TICKET(VL_IDCOMPRA NUMBER) AS CURSOR C_TICK IS SELECT IDCOMPRA IC, FECHA FC, TOTAL TT, CORREO CR, IDSUCURSAL IDS FROM COMPRA WHERE IDCOMPRA=VL_IDCOMPRA; BEGIN DBMS_OUTPUT.PUT_LINE('TICKET DE COMPRA'); FOR COMP IN C_TICK LOOP DBMS_OUTPUT.PUT_LINE('IDENTIFICADOR DE LA COMPRA: '|| COMP.IC); DBMS_OUTPUT.PUT_LINE('FECHA DE LA COMPRA: '|| COMP.FC); DBMS_OUTPUT.PUT_LINE('TOTAL DE LA COMPRA: ' || COMP.TT); DBMS_OUTPUT.PUT_LINE('CORREO DEL CLIENTE: '|| COMP.CR); DBMS_OUTPUT.PUT_LINE('IDENTIFICADOR DE LA SUCURSAL: '|| COMP.IDS); END LOOP; END TICKET; SALIDA:
PROCEDIMIENTO DE REPORTE VENTA: create or replace PROCEDURE REPORTE_VENTAS (VL_MESD VARCHAR2, VL_MESA VARCHAR2 ) AS CURSOR C_VENT IS SELECT IDCOMPRA IC, FECHA FC, TOTAL TT, CORREO CC, IDSUCURSAL IDS FROM COMPRA WHERE FECHA>=VL_MESD AND FECHA<= VL_MESA; BEGIN DBMS_OUTPUT.PUT_LINE('REPORTE DE COMPRA POR MES'); FOR COMP IN C_VENT LOOP DBMS_OUTPUT.PUT_LINE('IDENTIFICADOR DE LA COMPRA: '|| COMP.IC); DBMS_OUTPUT.PUT_LINE('FECHA DE LA COMPRA: '|| COMP.FC); DBMS_OUTPUT.PUT_LINE('TOTAL DE LA COMPRA: ' || COMP.TT); DBMS_OUTPUT.PUT_LINE('CORREO DEL CLIENTE: '|| COMP.CC); DBMS_OUTPUT.PUT_LINE('IDENTIFICADOR DE LA SUCURSAL: || COMP.IDS'); END LOOP; END REPORTE_VENTAS; Salida
TECNOLOGIAS UTILIZADAS
JAVA SERVER FACES. ORACLE JDBC. HTML 5 SQL XHTML PRIMEFACES BOOTSTRAP JAVA