martes, 28 de mayo de 2013

INSERTAR EN BASE DE DATOS (ORDEN DE LAS INSERCIONES)

insert into Tipo_Estadistica(Nombre) values ('la que sea')
insert into Sede(Nombre) values ('Fello meza')

insert into Campeonato(Fecha_Inicio,Fecha_Fin) values ('12/06/2012','12/12/2012')
insert into Calendario(FechaInicio,FechaFin,FK_Campeonato) values ('12/07/2013','12/09/2013',1)

insert into Equipo(Nombre,FK_Sede) values ('Liga',1)
insert into EquiposXcampeonato(FK_Campeonato,FK_Equipo) values (1,1)
insert into EstadisticasXequipo(FK_Equipo,Tipo_Estadistica) values (1,1)

insert into Partido(FK_Casa,FK_Visita) values (1,1)
insert into PartidosXcalendario(FK_Calendario,FK_Partido) values (1,1)
insert into EstadisticasXjuego(FK_Partido,HoraInicio,Duracion) values (1,'3:00:00','2:00')

insert into Jugador(Nombre) values ('Juan rodriguez')
insert into JugadoresXequipo(FK_Equipo,FK_Jugador) values (1,1)
insert into EstadisticasXjugador(FK_Jugador,Minuto,Tipo_Estadistica) values (1,'50',1)

martes, 21 de mayo de 2013

Proyecto 2


ITCR - Escuela de Ing. en Computacion - Bases de datos - Prof. fquiros 
- Mayo 2013
Segunda tarea programada 

EstadIsticas de campeonato de futbol

1) Objetivos 
A partir de la descripciOn de un problema y un modelo conceptual, 
contruir: 
+ Una base de datos fisica 
+ Scripts de llenado de datos bAsicos 
+ Scripts de migraciOn de datos para pruebas 
+ Scripts para la creaciOn de los store procedures 
+ Una aplicacion que utilice la base de datos 

2) DescripciOn del problema 
Consiste en llevar el registro de equipos y jugadores, histOrico y actual de los campeonatos de futbol en Costa Rica.

Un campeonato tiene fecha de inicio y fecha de fin, (se ignoran las vueltas y las rondas finales), al inicio de cada campeonato se registra los equipos que participan en el, asI como los jugadores de cada equipo. Los jugadores y su pertenencia a equipos puede variar de campeonato en campeonato.
Se ingresa un calendario de partidos, cada partido se realiza en un estadio que es la sede de un equipo, considerado equipo casa, que juega contra un equipo visitante. Conforme se realizan los partidos, se ingresan al sistema estadisticas que son del jugador, y estadisticas que son del juego. EstadIsticas del jugador: minuto de entrada al partido, minuto de salida, minuto de tarjeta amarilla, minuto de tarjeta roja, minuto de gol, minuto de falta recibida, minuto de falta cometida, minuto de tiro libre, minuto de penal y minuto de tiro de esquina. EstadIsticas del juego: duraciOn de juego, hora de inicio. Hay estadisticas del juego o del equipo que son la suma de estadisticas de jugador: por ejemplo, cantidad de goles (anotados o recibidos), cantidad faltas recibidas, cantidad de faltas cometidas, etc. 

Las estadisticas se pueden consultar de manera acumulada para el campeonato actual; o de manera histOrica, ya sea para un rango de fechas o para toda la historia. 

Consultas: 
+La tabla de posiciones para una fecha cualquiera, en orden descendente de puntos. La tabla contiene: nombre del equipo, numero de juegos jugados, cantidad de ganados, cantidad de empatados, cantidad de juegos perdidos, cantidad de goles a favor, cantidad de goles en contra, y puntos. Los puntos se calculan asi: 3 puntos por juego ganado, 1 por juego empatado, 0 por juego perdido. Si dos equipos tienen la misma cantidad de puntos, tiene mejor posiciOn el que tiene la menor cantidad de partidos jugados, si tuvieran la misma cantidad de partidos jugados, el que tenga mejor gol diferencia (goles anotados - goles recibidos). Esta consulta debe mostrarse a travEs de una aplicaciOn web.
+ Las estadIsticas de un partido
+ La estadIsticas de un equipo en un campeonado o entre un rango de fechas, o histOrico total, 
+ Las estadIsticas de un jugador en un equipo histOrico total, la estadIsticas de un jugador acumuladas en el campeonato actual, o dentro de un rango de fechas o histOrico total. 
+ Las estadIsticas de un equipo versus otro equipo histOrico total.
3) Se pide: 
+ Un Modelo conceptual completo, basado en el construido por el 
profesor, pero adaptado a la soluciOn que cada grupo de trabajo provea 
para este proyecto. 
+ Un Modelo fIsico completo 
+ La bitacora.
+ Scripts de creacioOn de la bd, de llenado de datos bAsicos 
+ Scripts de migraciOn de la bd que contendra los datos de prueba (BD no normalizada), la cual proveera, al menos 3 campeonatos (uno de ellos en ejecucion), 8 equipos, al menos 20 jugadores por equipo, 64 partidos de todos con todos, y estadisticas de todos los tipos. 
+ El cOdigo creado 
+ DemostraciOn del cOdigo corriendo.
4) Condiciones de entrega 
+ Grupos de dos personas 
+ Fecha de entrega: 4 de Junio, 2013

lunes, 6 de mayo de 2013

Resúmen final

+Total de horas en general
Total de horas de trabajo: 21 horas y 15 minutos aproximadamente.


+Total de horas por persona
Juan Rodríguez: 12 horas aprox.
Albin Arias: 8 horas y 15 min aprox.


Análisis de resultados.
El trabajo final cumple con todos los puntos requeridos por el profesor. Durante la realización todo transcurrió de manera normal y sin problemas, exceptuando el de la migración de la base de datos brindada a la creada por nosotros, ya que la base de datos brindada fué creada en el motor de base de datos: MySQL, el cual es diferente al motor utilizado por nosotros: MSSQL. Luego de haber logrado la migración de la base de datos brindada gracias a programas gratuitos encontrados en internet, lo demás fué sencillo: realizar pruebas con los datos nuevos.

En resúmen:
Primero nos encargamos de informarnos sobre ciertos temas desconocidos, además de practicar lo que es el lenguaje de programación C#, ya que ninguno había utilizado este lenguaje con anterioridad. Una vez dominado el lenguaje, nos dedicamos a la investigación de la creación de interfaz gráfica y aplicaciones Web utilizando como lenguaje web ASP.NET y C# en VisualStudio 2008. Terminado esto, nos dimos a la tarea del modelado y diseño de la base de datos. Fue un proceso de largas horas en el cual debimos ponernos deacuerdo con respecto a las diferentes relaciones entre las tablas en nuestra base para lograr una correcta normalización. Con esto, el siguiente reto fué conectar la base de datos a nuestra aplicación Web, lo cual se logró gracias a diferentes tutoriales y videos de YouTube (los cuales se encuentran en anteriores entradas de este blog). Cuando se logró la conexión entre las diferentes capas, realizamos consultas sencillas para acostumbrarnos al comportamiento de la base de datos en MSSQL. Una vez acostumbrados al comportamiento de MSSQL, nos dimos a la tarea de realizar todos los storeprocedures correspondientes para cada una de las funciones solicitadas por el profesor. Y finalmente, se dió la migración de la base de datos brindada a la propia.

Juan Rodríguez
Albin Arias
Bases de Datos I
2013

lunes, 8 de abril de 2013

Migración


Para la migración de la base de datos brindada por el profesor, se utilizaron los siguientes programas:

  • Microsoft SQL Server Migration Assistant for MySQL v5.2
  • Connector/ODBC
Ambos encontrados en Internet y gratuitos.


+Duración: 1 hora y 45 minutos aprox.

domingo, 7 de abril de 2013

Sp


ALTER PROCEDURE Insertar_Cine(@nombre as varchar(50))
AS
begin
 insert into Cine(Nombre) values(@nombre)
end

ALTER PROCEDURE Insertar_Sala(@cine as int,@tipo as varchar(50),@cant_asientos as int)
AS
declare @error as int
BEGIN
BEGIN TRY
if not exists(SELECT ID_Cine from Cine
WHERE ID_Cine = @cine)
begin
print 'No existe la sala'
return -100002
end
else
BEGIN TRANSACTION
insert into Sala(ID_Cine,Tipo, Asientos) values(@cine,@tipo , @cant_asientos)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SET @error=@@error
if(@error > 0)
ROLLBACK TRANSACTION
return @error * -1
END CATCH
return 1
END

ALTER PROCEDURE Insertar_Tiquete(@tanda as int,@cliente as int,@sala as int,@asiento as int ,@pelicula as int,@fecha as datetime ,@pago as varchar)
AS
declare @error as int
BEGIN
--Validaciones
BEGIN TRY
if not exists(SELECT ID_Tanda from Tanda
 WHERE ID_Tanda = @tanda)
 begin
 print 'No existe la tanda'
 return -100001
 end
else
if not exists(SELECT ID_Sala from Sala
 WHERE ID_Sala = @sala)
 begin
 print 'No existe la sala'
 return -100002
 end
else
if not exists(SELECT ID_Cliente from Cliente
 WHERE ID_Cliente = @cliente)
 begin
 print 'No existe cliente'
 return -100003
 end
else
  if not exists(SELECT ID_Pelicula from Pelicula
 WHERE ID_Pelicula = @pelicula)
 begin
 print 'No existe la pelicula'
 return -100004
 end
else
if ((SELECT Asientos from Sala
 WHERE ID_Sala = @sala) < @asiento)
 begin
 print 'El asiento no existe'
 return -100005
 end
else
if exists(SELECT ID_Asiento from Asiento
 WHERE ID_Asiento = @asiento and ID_Tanda = @tanda)
 begin
 print 'Asiento ocupado'
 return -100005
  end
else
--Insertamos el asiento en la lista de asientos ocupados y el tiquete
BEGIN TRANSACTION
insert into Tiquete(ID_Tanda,ID_Cliente,ID_Sala,ID_Asiento,ID_Pelicula,Fecha,TipoPago) values(@tanda, @cliente, @sala,@asiento,@pelicula,@fecha,@pago)
insert into Asiento(ID_Asiento,ID_Tanda, Estado) values (@asiento, @tanda , 3)
COMMIT TRANSACTION
END TRY
    BEGIN CATCH
SET @error=@@error
if(@error > 0)
ROLLBACK TRANSACTION
return @error * -1
    END CATCH
return 1
END


ALTER PROCEDURE Insertar_Tanda( @sala as int, @pelicula as int,@fecha as datetime, @inicio as datetime, @fin as datetime )
AS
declare @error as int
BEGIN
BEGIN TRY
if not exists(SELECT ID_Sala from Sala
 WHERE ID_Sala = @sala)
 begin
 print 'No existe la sala'
 return -100001
 end
else
if not exists(SELECT ID_Pelicula from Pelicula
 WHERE ID_Pelicula = @pelicula)
 begin
 print 'No existe la pelicula'
 return -100004
 end
else
BEGIN TRANSACTION
insert into Tanda(ID_Sala,ID_Pelicula,Fecha,Inicio,Fin) values( @sala, @pelicula,@fecha,@inicio,@fin)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SET @error=@@error
if(@error > 0)
ROLLBACK TRANSACTION
return @error * -1
END CATCH
END




ALTER PROCEDURE SPcartelera
AS
BEGIN
SELECT tanda.ID_Sala 'Sala',
  CONVERT(VARCHAR(100),tanda.fecha, 101)  'Fecha',
  CONVERT(VARCHAR(100),tanda.inicio, 108) 'Hora de inicio',
  CONVERT(VARCHAR(100),tanda.fin, 108) 'Hora de finalización',
  pelicula.nombre
FROM tanda
INNER JOIN pelicula ON tanda.ID_Pelicula = pelicula.ID_Pelicula
END



+Duración: 3 horas aprox.

Consultas combinadas. JOINS




http://www.devjoker.com/contenidos/catss/17/Consultas-combinadas-JOINS.aspx

SELECT tCoches.matricula, 
              tMarcas.marca, 
              tCoches.modelo, 
              tCoches.color, 
              tCoches.numero_kilometros, 
              tCoches.num_plazas 
FROM tCoches, tMarcas 
WHERE tCoches.marca = tMarcas.codigo 

+Duración: 1 hora aprox.

martes, 2 de abril de 2013

Diseño de la página web

Se inicia el diseño de la página web en Visual Studio 2012, usando CSS3, ASP.NET y HTML5, además de plantillas CSS y programas de diseño Web como Adobe Dreamweaver CS6 y de diseño gráfico como Photoshop CS6 y Illustrator CS6.

+Duración: 3 horas y 30 minutos aprox.

miércoles, 27 de marzo de 2013

Conexión de base de datos desde witio web


    private void cargar()
    {
        con.Open();
        DataTable tabla = new DataTable();

        SqlDataAdapter daCines = new SqlDataAdapter("Consultar_Cine",con);
        DataSet dsCine = new DataSet();


        daCines.Fill(dsCine,"Cine");

        tabla = dsCine.Tables["Cine"];
        GridView1.DataSource = tabla;
        GridView1.DataBind();
        con.Close();
    }

+Duración: 40 minutos aprox.

martes, 26 de marzo de 2013

Propuesta para elaborar

Mostar tabla en un data view

http://www.youtube.com/watch?v=O1-QiA1PCbA

+Duración: 30 minutos aprox.

lunes, 25 de marzo de 2013

Store procedure - c#

Creación de store procedure con parámetros

CREATE PROCEDURE Insertar7(@var1 as char(2),  @var2 as char(2))
AS
begin
set nocount on
insert into prueba2(uno) values(@var1)
insert into prueba2(uno) values(@var2)
set nocount off
end


Llamada del procedimiento
Insertar7 'SA','TY'


Material consultado (25/03/2013)

store procedure en sql
http://www.youtube.com/watch?v=bRiS5t5E100


llama un store procedure desde c#
http://www.youtube.com/watch?v=S_6HgHd6Z6c&feature=fvwp&NR=1


Procedimientos Almacenados o Stored Procedure en SQL Server 2008

http://www.youtube.com/watch?v=bRiS5t5E100


Creating a stored procedure with parameters
http://www.youtube.com/watch?v=VfDbaW17JRo


Usar y crear procedimientos
http://www.youtube.com/watch?v=hdavbiahCtU

+Duración: 1 hora aprox.

domingo, 24 de marzo de 2013

Reporte de trabajo

Se logro conectar la base de datos desde VS 2008 junto c#, por medio de capas (BD,UI,BLL)
además una propuesta muy básica de la estructura para el proyecto




+Duración: 4 horas aprox.

Inicio de proyecto en C#

Se inicia el diseño de la aplicación Web usando C# en Visual Studio 2008.


Se empezó la creación de la interfaz gráfica HTML de la Tarea Programada.

Lectura de artículos y documentos de PHP para conexión de HTML con Base de Datos en los siguientes links:

http://www.codigofuenteya.com.ar/detalleconcepto.php?cod=32

PHP PDF

+Duración: 2 horas y 20 minutos aprox.

Material Consultado (24/03/2013)

Normalización de una base de datos

http://www.youtube.com/watch?v=8XVjTSHk1ig

Insertar datos en sql server

http://www.youtube.com/watch?v=uhkvlWskv-M

Curso Fundamentos de bases de datos UNED

http://www.filecrop.com/search.php?w=Fundamentos%20de%20Bases%20de%20Datos%20uned&pos=1&opt_t=1&opt_d=0&c=30&m=0&size_i=0&size_f=100000000&engine_r=0&engine_m=1&engine_h=1&engine_d=1&engine_e=1&engine_4=1&mod=dec&order=size

+Duración: 40 minutos aprox.

Análisis del problema

En esta entrada se espera ir poniendo todas las dudas surgidas directamente propuestas en la creación de la base de datos.


Enunciado de la tarea programada

ITCR - Ing. en Computacion - Bases de datos - Prof F quiros - Marzo 2013
Primera tarea programada

1) Objetivos. Construir una aplicaciOn que se conecte a una base de datos para la realizaciOn de matenimientos, consultas y transacciones.  Realizar una migraciOn de datos, mediante un script. Escribir procedimientos almacenados para realizar operaciones de mantenimiento, consulta y transacciones.

2) DescripciOn de modelo conceptual de la base de datos.
Es modelo para la administración de la venta de tiquetes en una mall. El mall tiene al menos 4 salas de cine, algunas de ellas son de lujo otras normales, el precio de los tiquetes es mayor en las salas de lujo. Semanalmente, los martes,  el administrador hace la planeación de las películas que se muestran en cada sala, tomando en cuenta la duración de las películas, la cantidad de asientos en cada sala y una estimación de la demanda; el administrador hace un horario de películas para cada sala para la semana que comienza.
La venta de tiquetes puede ser para cualquier película en cualquier sala en cualquier dia antes del fin de lunes. Para las películas del que se emiten en el dia de actual (el dia de hoy), un monitor publico muestra para  cada tanda la cantidad de asientos de la sala y la cantidad de asientos disponible.
Se pueden vender tiquetes por internet, que se pagan mediante tarjeta de crédito o debito. Hay una taquilla especial, donde para los clientes que compraron por internet, se imprime el tiquete. Se pueden hacer reservas  de tiquetes por teléfono, pero la reserva se mantiene hasta 30 minutos antes del inicio de la película, o si si el cliente no se presenta a pagar los tiquetes reservados antes de esos 30 minutos, la reserva se cancela. Existen pases de cortesía, que se pueden cambiar por tiquetes, pero solo tandas entre lunes y jueves. El cliente con el pase de cortesía, se presenta a la taquilla, y cambia el pase de cortesía por un tiquete. Un tiquete puede ser pagado en efectivo o mediante tarjeta de crédito o de debito.

4) El profesor provee:

+ Una base de datos adicional con anticipación que contiene los datos de prueba. Esta base de datos puede ser NO- normalizada, contiene de Salas, películas y tandas para 12 semanas. Tambien contiene los datos para simular la compra de tiquetes de la ultima semana.

5) Que se pide:

  1. Creacion de la BD.
  2. Script de llenado de datos básicos o Catálagos
  3. Script de migracion de la bd con datos de prueba a la BD del proyecto.
  4. Una aplicaciOn por web, donde se puede consultar la cartelera de la presente semana (o de alguna semana anterior). Se muestra, la pelicula, descripcion, dia hora, y precio.
  5. Una aplicacion de web  donde ingresa un funcionario (debe hacer validacion de usuario), y puede agregar, eliminar o cambiar valores respecto de una pelIcula o una tanda.
  6. Un punto de venta de tiquetes, en la cual se selecciona una tanda, una cantidad de tiquetes, los asientos para el tiquete y se simula la compra de tales tiquetes. Se debe validar toda informaciOn de entrada.
  7. Escribir 2 store procedures para la ejecucion de consultas, los cuales se especificaran posteriormente.
  8. Construir un script que lee los datos para la compra de tiquetes en la BD de datos de prueba, y simula la compra masiva de tiquetes en la BD del proyecto.

Documentación, una bitácora escrita en un blog en el cual dia a dia, se indica la cantidad de horas trabajadas por el equipo de trabajo, se hace un relato de los avances,   acerca de los problemas encontrados, como fueron resueltos; dudas, divergencias de criterio,  forma en que trabajó el equipo de trabajo, problemas con la inslacion del software, problemas de aprendizaje del framework, investigaciones, pruebas de concepto, experiencias, moralejas, ayuda recibida, consejos a dar, buenas practicas descubiertas, etc; que describa el proceso de solución de la tarea programada; una descripcion sincera y detallada sera muy apreciada.  Incluya referencia externas a recursos utilizados en internet para solventar dudas o resolver problemas, puede incluir los mensajes de error y como fueron resueltos. La Ultima entrada del blog es un resumen que indique la cantidad de horas total de trabajo, por persona, asi como un análisis de resultados de los que se esta entregado
.
Debe ser exhaustivo.

5) Grupos de 2 personas. Motor de base de datos: MS SQL 2008 o 2012. Fecha de entrega, 23 de Abril. Los accesos a la BD debe hacerse solo mediante Store Procedure.

Elección de motor de bases de datos - otros

Elegimos en conjunto y consultamos la manera de como instalar  SQL server 2012, no hubo ninguna complicación.

Video consultado
http://julycastiblanco.blogspot.com/2012/03/instalacion-de-sql-server-2012-sobre.html

 Página consultada para la instalción de SQL server 2012

Decidimos ligarlo con c# y utilizar sea VS 2010 o 2008 para el conexión de la DB y BLL

+Duración: 1 hora y 30 minutos aprox.