miércoles, 26 de noviembre de 2014

Última entrada

Análisis de resultados:
En general el proyecto resulta satisfactorio en cuanto a lo requerido en la especificación se refiere. No pudo probarse con totalidad los stored procedure # 6  y  #8. La #6 teniendo errores al hacer el top 10 de los elementos, los cuales si hace por separado. El #8 no pudo ser testeado por lo que el resultado podría no ser el esperado.

Moralejas:
Utilizar código limpio
Utilizar Estándares para los procedures
Entre más complejo sea el diseño, más complicado será programar los procedures
Comunicación entre los miembros del equipo

Problema de aprendizaje: El uso de group by, order by, diferenciar entre where y having, left joins y tomar en cuenta el uso google y sus aliados.
 se reiteró en los mismos errores

Ayuda recibida


Edward Ovares: 28.15
Luis Diego Flores: 26 Horas


Total de horas: 33.15

Procedure: Problema 7 y Problema 8 Luis



DESCRIPCION:

7) Los nombres de los clientes que compraron tiquetes al menos una
vez, y que no regresaron a comprar, en un periodo de fechas.
Entradas: fecha inicio, fecha fin
Salidas: Nombre del cliente, fecha de la compra; en orden alfabetico del nombre del cliente

8) Los eventos, a los que a los clientes asistieron a funciones mas de una vez, en un rango de fechas
Entrada: Fecha inicio, fecha fin
Salida
Para cada evento: Nombre del evento, numero de personas que asistieron a 2 funciones, numero de personas que asistieron a 3 funciones, numero de personas que asistieron a mas de 3 funciones.

PROBLEMAS:
Error: Msg 8152 Conflicto con tamaño de variables a la hora de programar el SP.
Con los archivos de prueba proporcionados no era posible probarse en su totalidad  el SP, debido a que cada cliente (al ser tan pocos) tenía a su nombre cientos de tiquetes


CODIGO:




----------------------------------------------------------------------------------------------------------------------
-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_Clientes_Abandono', N'P' ) IS NOT NULL 
    DROP PROCEDURE BT_SP_Clientes_Abandono;
GO

/*
7) Los nombres de los clientes que compraron tiquetes al menos una
vez, y que no regresaron a comprar, en un periodo de fechas.
Entradas: fecha inicio, fecha fin
Salidas: Nombre del cliente, fecha de la compra; en orden alfabetico del nombre del cliente
*/
Create Procedure BT_SP_Clientes_Abandono
@FechaIni datetime,
@FechaFin datetime
As
Begin
 BEGIN TRY
  BEGIN TRANSACTION 
   Select nombre From BT_Usuario
   inner join BT_Tiquete on BT_Usuario.Id = BT_Tiquete.FK_Usuario
   inner join BT_AsientoXTanda on BT_Tiquete.FK_AsientoXTanda = BT_AsientoXTanda.Id
   inner join BT_Tanda on BT_Tanda.Id = BT_AsientoXTanda.FK_Tanda
   Where (select count (*) From BT_Tiquete)=1
   and FechaHora between @FechaIni and @FechaFin
  
  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo;
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO
-- exec BT_SP_Clientes_Abandono '2014-11-21 00:00:00.000', '2015-07-13 00:00:00.000'




Horas Trabajadas: 3,15 hora
Autor: Luis Diego Flores

martes, 25 de noviembre de 2014

Procedure: Problema 5 y Problema 6 Edward



DESCRIPCION:

5) Idem 4) pero referido a secciones del teatro.

6) Por tipo de evento, de manera historica, los 10 asientos menos preferidos.
Entrada: Ninguna
Salidas: Para cada tipo de evento, se listan los 10 asientos que nunca fueron reservados, o que tienen la menor cantidad de compras.

PROBLEMAS:


CODIGO:



----------------------------------------------------------------------------------------------------------------------

-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_ASIENTOS_PREFE_SECCION', N'P' ) IS NOT NULL 
    DROP PROCEDURE BT_SP_ASIENTOS_PREFE_SECCION;
GO

/*  
5) Idem 4) pero referido a secciones del teatro.
*/
CREATE PROCEDURE BT_SP_ASIENTOS_PREFE_SECCION
@FechaIni datetime,
@FechaFin datetime
AS
BEGIN
 BEGIN TRY
  DECLARE @TableA TABLE(
   Id_Tiquete int, 
   FK_Asiento int,
   FK_Tanda int,
   FK_Localidad int,
   NumeroAsiento int,
   NombreLocalidad varchar(50),
   FechaHora datetime,
   NombreEvento varchar(150),
   NombreTipoEvento varchar(150)
  );

  DECLARE @TablaAux TABLE(
    NumeroCompras int,
    NumeroAsiento int,
    NombreLocalidad varchar(50)
  );

  BEGIN TRANSACTION 
   INSERT @TableA
   (Id_Tiquete,FK_Asiento,FK_Tanda,FK_Localidad,NumeroAsiento,NombreLocalidad,FechaHora,NombreEvento,NombreTipoEvento)
     SELECT X.ID,AT.FK_Asiento,AT.FK_Tanda,A.FK_Localidad,A.Numero,L.Nombre,T.FechaHora,E.Nombre,TE.Nombre
   FROM BoleteriaTeatroDB.dbo.BT_Tiquete X
   INNER JOIN  BoleteriaTeatroDB.dbo.BT_AsientoXTanda AT ON AT.Id = X.FK_AsientoXTanda
   INNER JOIN  BoleteriaTeatroDB.dbo.BT_Tanda T ON T.Id = AT.FK_Tanda
   INNER JOIN BoleteriaTeatroDB.dbo.BT_Evento E ON E.Id = T.FK_Evento
   INNER JOIN  BoleteriaTeatroDB.dbo.BT_TipoEvento TE ON TE.Id = E.FK_TipoEvento
   INNER JOIN  BoleteriaTeatroDB.dbo.BT_Asiento A ON A.Id = AT.FK_Asiento
   INNER JOIN  BoleteriaTeatroDB.dbo.BT_Localidad L ON L.Id = A.FK_Localidad
   WHERE /*TE.Nombre = 'Opera' AND*/ (T.FechaHora BETWEEN @FechaIni AND @FechaFin)

   INSERT @TablaAux
   (NumeroCompras,NumeroAsiento,NombreLocalidad)
   SELECT COUNT(NumeroAsiento) AS NumeroCompras,NumeroAsiento,NombreLocalidad 
   FROM @TableA GROUP BY NumeroAsiento,NombreLocalidad

   SELECT NumeroCompras,NumeroAsiento,NombreLocalidad FROM @TablaAux ORDER BY NumeroCompras DESC

  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo;
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO

--EXEC BT_SP_ASIENTOS_PREFE_SECCION '2014-11-21 00:00:00.000', '2015-11-20 00:00:00.000'


----------------------------------------------------------------------------------------------------------------------

-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_ASIENTOS_MENOS_PREFE', N'P' ) IS NOT NULL 
    DROP PROCEDURE BT_SP_ASIENTOS_MENOS_PREFE;
GO

/*  
6) Por tipo de evento, de manera historica, los 10 asientos menos preferidos.
Entrada: Ninguna
Salidas: Para cada tipo de evento, se listan los 10 asientos que nunca fueron reservados, o que tienen la menor cantidad de compras.

*/
CREATE PROCEDURE BT_SP_ASIENTOS_MENOS_PREFE
AS
BEGIN
 BEGIN TRY
  DECLARE @TableA TABLE(
   Id_Tiquete int, 
   FK_Asiento int,
   FK_Tanda int,
   NumeroAsiento int,
   FechaHora datetime,
   NombreEvento varchar(150),
   NombreTipoEvento varchar(150)
  );

  DECLARE @TableAux TABLE(
   TotalComprado int,
   NumeroAsiento int,
   NombreTipoEvento varchar(150)
  );

  BEGIN TRANSACTION 
   INSERT @TableA
   (Id_Tiquete,FK_Asiento,FK_Tanda,NumeroAsiento,FechaHora,NombreEvento,NombreTipoEvento)
     SELECT X.ID,AT.FK_Asiento,AT.FK_Tanda,A.Numero,T.FechaHora,E.Nombre,TE.Nombre
   FROM BoleteriaTeatroDB.dbo.BT_Tiquete X
   INNER JOIN  BoleteriaTeatroDB.dbo.BT_AsientoXTanda AT ON AT.Id = X.FK_AsientoXTanda
   INNER JOIN  BoleteriaTeatroDB.dbo.BT_Tanda T ON T.Id = AT.FK_Tanda
   INNER JOIN BoleteriaTeatroDB.dbo.BT_Evento E ON E.Id = T.FK_Evento
   INNER JOIN  BoleteriaTeatroDB.dbo.BT_TipoEvento TE ON TE.Id = E.FK_TipoEvento
   INNER JOIN  BoleteriaTeatroDB.dbo.BT_Asiento A ON A.Id = AT.FK_Asiento

   INSERT @TableAux
   (TotalComprado,NumeroAsiento,NombreTipoEvento)
   SELECT COUNT(NumeroAsiento) AS TotalComprado,NumeroAsiento,NombreTipoEvento FROM @TableA 
   GROUP BY NumeroAsiento,NombreTipoEvento

   SELECT * FROM @TableAux ta
   /*SELECT TOP 10 TotalComprado,NumeroAsiento,NombreTipoEvento
   FROM @TableAux 
   GROUP BY NombreTipoEvento*/
   --ORDER BY TotalComprado,NombreTipoEvento DESC
   /*
   SELECT TOP 10 TotalComprado,NumeroAsiento FROM @TableAux ORDER BY TotalComprado DESC*/
 
  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo;
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO

EXEC BT_SP_ASIENTOS_MENOS_PREFE



Horas Trabajadas: 2.5 hora
Autor: Edward Ovares Villegas

Procedure: Problema 3 y Problema 4 Luis



DESCRIPCION:

3) Para un rango de fechas, Los 5 eventos que han atraido la mayor cantidad de asistentes.
Entradas: fecha inicio, fecha fin
Salidas: Los 5 eventos, en orden descendente de cantidad de asistentes.
Para cada evento mostrar: Nombre del evento, fecha inicio, fecha fin, cantidad de asistentes.

4) Los 10 asientos preferidos para eventos tipo Opera, en un rango de fechas.
Entradas: fecha inicio, fecha fin Salidas: Numero de asiento, cantidad de veces comprado. En orden
descesdente de la cantidad de veces.


PROBLEMAS:
Error: Msg 8120
No era posible poner todos los atributos requeridos debido que al aplicar una función count, avg o sum Sql server no lo permitía, por lo que se debió usar tablas variables.

Error: Msg 147
Usar where cuando lo que debía usarse having, esto sucedió en diversas ocasiones

CODIGO:



-----------------------------------------------------------------------------------------------------------------------

-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_CANTIDAD_ASISTENTES_EVENTO', N'P' ) IS NOT NULL 
    DROP PROCEDURE BT_SP_CANTIDAD_ASISTENTES_EVENTO;
GO

/*  
3) Para un rango de fechas, Los 5 eventos que han atraido la mayor cantidad de asistentes.
Entradas: fecha inicio, fecha fin
Salidas: Los 5 eventos, en orden descendente de canditad de asistentes.
Para cada evento mostrar: Nombre del evento, fecha inicio, fecha fin, cantidad de asistentes.
*/
CREATE PROCEDURE BT_SP_CANTIDAD_ASISTENTES_EVENTO
@FechaInicio datetime,
@FechaFin datetime
AS
BEGIN
 BEGIN TRY
  Declare @temporal Table(NombreEvento varchar(150), IDTiquete int );
  Declare @CantidadXEvento Table (Nombre varchar(150), Id int);

  BEGIN TRANSACTION 
     Insert into @temporal(NombreEvento,IDTiquete)
   (SELECT BT_Evento.Nombre, BT_Tiquete.Id
   from BT_Tiquete
   inner join BT_AsientoXTanda on BT_Tiquete.FK_AsientoXTanda = BT_AsientoXTanda.Id
   inner join BT_Tanda on BT_AsientoXTanda.FK_Tanda = BT_Tanda.Id
   inner join BT_Evento on BT_Tanda.FK_Evento = BT_Evento.Id
   where FechaHora between @FechaInicio and @FechaFin)
   
   insert into @CantidadXEvento(Nombre,Id)
   select NombreEvento,count(distinct IDTiquete) as Cantidad  from @temporal
   group by NombreEvento --order by Cantidad desc
   
   select top 5 Nombre,Id  from @CantidadXEvento order by ID 

  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo;
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO

--EXEC BT_SP_CANTIDAD_ASISTENTES_EVENTO '2014-11-21 00:00:00.000', '2015-07-13 00:00:00.000'


----------------------------------------------------------------------------------------------------------------------

-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_ASIENTOS_PREFE_OPERA', N'P' ) IS NOT NULL 
    DROP PROCEDURE BT_SP_ASIENTOS_PREFE_OPERA;
GO

/*  
4) Los 10 asientos preferidos para eventos tipo Opera, en un rango de fechas.
Entradas: fecha inicio, fecha fin 
Salidas: Numero de asiento, cantidad de veces comprado. En orden
descesdente de la cantidad de veces.
*/
CREATE PROCEDURE BT_SP_ASIENTOS_PREFE_OPERA
@FechaIni datetime,
@FechaFin datetime
AS
BEGIN
 BEGIN TRY
  DECLARE @TableA TABLE(
   Id_Tiquete int, 
   FK_Asiento int,
   FK_Tanda int,
   NumeroAsiento int,
   FechaHora datetime,
   NombreEvento varchar(150),
   NombreTipoEvento varchar(150)
  );

  DECLARE @TableAux TABLE(
   TotalComprado int,
   NumeroAsiento int
  );

  BEGIN TRANSACTION 
   INSERT @TableA
   (Id_Tiquete,FK_Asiento,FK_Tanda,NumeroAsiento,FechaHora,NombreEvento,NombreTipoEvento)
     SELECT X.ID,AT.FK_Asiento,AT.FK_Tanda,A.Numero,T.FechaHora,E.Nombre,TE.Nombre
   FROM BoleteriaTeatroDB.dbo.BT_Tiquete X
   INNER JOIN  BoleteriaTeatroDB.dbo.BT_AsientoXTanda AT ON AT.Id = X.FK_AsientoXTanda
   INNER JOIN  BoleteriaTeatroDB.dbo.BT_Tanda T ON T.Id = AT.FK_Tanda
   INNER JOIN BoleteriaTeatroDB.dbo.BT_Evento E ON E.Id = T.FK_Evento
   INNER JOIN  BoleteriaTeatroDB.dbo.BT_TipoEvento TE ON TE.Id = E.FK_TipoEvento
   INNER JOIN  BoleteriaTeatroDB.dbo.BT_Asiento A ON A.Id = AT.FK_Asiento
   WHERE TE.Nombre = 'Opera' AND (T.FechaHora BETWEEN @FechaIni AND @FechaFin)

   INSERT @TableAux
   (TotalComprado,NumeroAsiento)
   SELECT COUNT(NumeroAsiento) AS TotalComprado,NumeroAsiento FROM @TableA 
   GROUP BY NumeroAsiento

   SELECT TOP 10 TotalComprado,NumeroAsiento FROM @TableAux ORDER BY TotalComprado DESC

  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo;
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO
--EXEC BT_SP_ASIENTOS_PREFE_OPERA '2014-11-21 00:00:00.000', '2015-11-20 00:00:00.000'




Horas Trabajadas: 3 hora
Autor: Luis Diego Flores

Procedure: problema 1 y problema 2 Edward



DESCRIPCION:

1) Los 3 número de semana del año (un valor entre 1 y 52), que en promedio (considerando todos los años de historia) asisten mas personas al teatro nacional.
Entradas: Ninguna.
Salidas: Numero de semana, Cantidad de asistentes promedio. En orden descendente de la cantidad.

2) Idem 1), pero no referido a la cantidad de personas, sino al ingreso total de la taquilla.

PROBLEMAS:

En este metodo se encontraron muchos problemas, en general por errores al insertar asientoXtanda ya que los fk los teniamos intercambiados y lo cual generaba muchos errores.

Otro problema es que estaba insertando los usuarios repetidos en la base de datos.

Entre los errores estaban que se intentaba llamar un querry dentro de otro generando errores.



El codigo de este procedimiento es el siguiente:



-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_ASISTENCIAS_SEMANAS_ANNO', N'P' ) IS NOT NULL 
    DROP PROCEDURE BT_SP_ASISTENCIAS_SEMANAS_ANNO;
GO

/* Los 3 número de semana del año (un valor entre 1 y 52), que en promedio 
(considerando todos los años de historia) asisten mas personas al teatro nacional.
Entradas: Ninguna.
Salidas: Numero de semana, Cantidad de asistentes promedio. En orden descendente de la cantidad.
*/
CREATE PROCEDURE BT_SP_ASISTENCIAS_SEMANAS_ANNO
AS
BEGIN
 BEGIN TRY
 
  DECLARE @Tabla TABLE (
   id int,
   Fecha datetime,
   NumSemana int
  );

  DECLARE @TablaSem TABLE(
   TotalAsist int,
   NumSemana int
  );

  DECLARE @TablaProm TABLE(
   NumSemana int,
   Promedio float
  );

  BEGIN TRANSACTION 
  
   INSERT @Tabla
   (id,Fecha,NumSemana)
   SELECT X.ID,T.FechaHora,DATEPART(week,T.FechaHora) AS Semana
   FROM BoleteriaTeatroDB.dbo.BT_Tiquete X
   INNER JOIN  BoleteriaTeatroDB.dbo.BT_AsientoXTanda AT ON AT.Id = X.FK_AsientoXTanda
   INNER JOIN  BoleteriaTeatroDB.dbo.BT_Tanda T ON T.Id = AT.FK_Tanda
   ORDER BY T.FechaHora ASC

   INSERT @TablaSem
   (TotalAsist,NumSemana)
   SELECT COUNT(NumSemana) AS TotalAsist,NumSemana FROM @Tabla GROUP BY NumSemana

   INSERT @TablaProm
   (NumSemana,Promedio)
   SELECT NumSemana,AVG(TotalAsist) AS Promedio 
   FROM @TablaSem  T GROUP BY TotalAsist,NumSemana

   SELECT TOP 3 * FROM @TablaProm tp ORDER BY Promedio DESC

  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo;
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO
--EXEC BT_SP_ASISTENCIAS_SEMANAS_ANNO

-----------------------------------------------------------------------------------------------------------------------

-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_IGRESOS_SEMANAS_ANNO', N'P' ) IS NOT NULL 
    DROP PROCEDURE BT_SP_IGRESOS_SEMANAS_ANNO;
GO

/*  
Idem 1), pero no referido a la cantidad de personas, sino al ingreso total de la taquilla.
*/
CREATE PROCEDURE BT_SP_IGRESOS_SEMANAS_ANNO
AS
BEGIN
 BEGIN TRY
 
  DECLARE @Tabla TABLE (
   id int,
   Fecha datetime,
   NumSemana int,
   Precio money
  );

  DECLARE @TablaSem TABLE(
   TotalDinero money,
   NumSemana int
  );

  DECLARE @TablaProm TABLE(
   NumSemana int,
   PromedioDinero money
  );

  BEGIN TRANSACTION 
  
   INSERT @Tabla
   (id,Fecha,NumSemana,Precio)
   SELECT X.ID,T.FechaHora,DATEPART(week,T.FechaHora) AS Semana,X.PrecioTotal
   FROM BoleteriaTeatroDB.dbo.BT_Tiquete X
   INNER JOIN  BoleteriaTeatroDB.dbo.BT_AsientoXTanda AT ON AT.Id = X.FK_AsientoXTanda
   INNER JOIN  BoleteriaTeatroDB.dbo.BT_Tanda T ON T.Id = AT.FK_Tanda
   ORDER BY T.FechaHora ASC

   INSERT @TablaSem
   (TotalDinero,NumSemana)
   SELECT SUM(Precio) AS TotalDinero,NumSemana FROM @Tabla GROUP BY NumSemana

   INSERT @TablaProm
   (NumSemana,PromedioDinero)
   SELECT NumSemana,AVG(TotalDinero) AS Promedio 
   FROM @TablaSem  T GROUP BY TotalDinero,NumSemana

   SELECT TOP 3 * FROM @TablaProm tp ORDER BY PromedioDinero DESC

  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo;
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO
--EXEC BT_SP_IGRESOS_SEMANAS_ANNO


Horas Trabajadas: 3.5 hora
Autor: Edward Ovares Villegas

lunes, 24 de noviembre de 2014

Fin de la migración



Descripcion:

Lo que se trabajó en esta sección de la migración fue la parte del archivo de movimientos, que tuvo que ser adaptada al diagrama, puesto que no contenía información esencial
para la venta de los tiquetes del teatro.
Problemas:
El principal problema radica en que el precio de los tiquetes estaba calculado previamente y no daba lugar a los cálculos que éste requería para efecto de las inserciones, ya que
no tomaba en cuenta el precio de cada localidad del escenario ni el precio que varia dependiendo de cada evento.
También se tuvo problemas con los usuario extraídos por los archivos, ya que no contenían id que los asociaran con los tiquetes respectivos a las funciones




-----------------------------------------------------------------------------------------------------------------------

-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_AJUSTE', N'P' ) IS NOT NULL 
    DROP PROCEDURE BT_SP_AJUSTE;
GO

CREATE PROCEDURE BT_SP_AJUSTE
AS
BEGIN
 BEGIN TRY
  DECLARE @counter int,@max int; -- Contador del while y max
  DECLARE @ElementA nvarchar(MAX),@ElementB nvarchar(MAX);
  SET @counter = 1;
  SET @max = (SELECT COUNT(*) FROM [XMLBoleteriaTeatroDB].[dbo].[XMLMovimientos] xg)+1;
  --Inicio del ciclo de while
  WHILE @counter < @max
  BEGIN
    SET @ElementA = (SELECT NombreComprador FROM [XMLBoleteriaTeatroDB].[dbo].[XMLMovimientos] WHERE ID = @counter);

    SET @ElementB = (SELECT Id FROM [BoleteriaTeatroDB].dbo.BT_Usuario bu WHERE bu.Nombre = @ElementA);
  
    UPDATE [XMLBoleteriaTeatroDB].[dbo].[XMLMovimientos]
    SET
    NombreComprador = @ElementB
    WHERE Id = @counter

    SET @counter = @counter + 1;
  END
 RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo;
  RETURN @@ERROR*-1;
 END CATCH
END
GO

-----------------------------------------------------------------------------------------------------------------------

-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_INSERTAR_MOVIMIENTO', N'P' ) IS NOT NULL 
    DROP PROCEDURE BT_SP_INSERTAR_MOVIMIENTO;
GO

CREATE PROCEDURE BT_SP_INSERTAR_MOVIMIENTO
AS
BEGIN
 BEGIN TRY
  INSERT INTO [BoleteriaTeatroDB].[dbo].[BT_MedioPago]
  (Nombre)
  VALUES('Tarjeta de Credito')

  BEGIN TRANSACTION 
  
  -- Insert del Medio de Pago
  
  -- Insert AsientoXTanda
  INSERT INTO [BoleteriaTeatroDB].[dbo].[BT_AsientoXTanda]
  (FK_Tanda,FK_Asiento)
  SELECT FKTanda,FKAsiento FROM dbo.XMLMovimientos x
  WHERE X.TipoOperacion = 'insercionMovimientos';

  -- Insert Tiquetes
  INSERT INTO [BoleteriaTeatroDB].[dbo].[BT_Tiquete]
  (FK_AsientoXTanda,FK_MedioPago,FK_Usuario,FechaCompra,PrecioTotal,MontoCancelado)
  SELECT (L.Id),1 ,X.NombreComprador,X.FechaCompra,L.PrecioTotal,L.PrecioTotal
  FROM [XMLBoleteriaTeatroDB].[dbo].[XMLMovimientos] X
  INNER JOIN
  (SELECT AT.Id, AT.FK_Asiento, AT.FK_Tanda,(E.Precio+L.Precio) AS PrecioTotal
  FROM [BoleteriaTeatroDB].[dbo].[BT_AsientoXTanda] AT
  INNER JOIN [BoleteriaTeatroDB].[dbo].[BT_Tanda] T ON T.Id = AT.FK_Tanda
  INNER JOIN [BoleteriaTeatroDB].[dbo].[BT_Evento] E ON E.Id = T.FK_Evento
  INNER JOIN [BoleteriaTeatroDB].[dbo].[BT_Asiento] A ON A.Id = AT.FK_Asiento
  INNER JOIN [BoleteriaTeatroDB].[dbo].[BT_Localidad] L ON  L.Id = A.FK_Localidad)
  L ON L.Id = X.ID
  
  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  SELECT * FROM [BoleteriaTeatroDB].[dbo].[BT_AsientoXTanda]
  SELECT * FROM [BoleteriaTeatroDB].[dbo].[BT_Tiquete]

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo;
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO



Horas Trabajadas: 2.5 hora
Autores:
Edward Ovares Villegas
Luis Diego Flores

Migracion de Usuarios y Eventos



Descripcion:

Se dificultó la migración esencialmente por los pocos nombres proveídos por archivos de prueba, además que la información
era muy limitada al contar únicamente con un atributo nombre, por lo que no se podía registrar un usuario conforme se esperaba
en el diagrama elaborado previamente. Esto en vista que para efectos reales el teatro nacional, éste cuenta con usuarios registrados
para la compra de entradas a los eventos.


-----------------------------------------------------------------------------------------------------------------------

-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_INSERTAR_EVENTO', N'P' ) IS NOT NULL 
    DROP PROCEDURE BT_SP_INSERTAR_EVENTO;
GO

CREATE PROCEDURE BT_SP_INSERTAR_EVENTO
AS
BEGIN
 BEGIN TRY
  BEGIN TRANSACTION 
   -- Insert datos de Tipo Evento
   INSERT INTO [BoleteriaTeatroDB].[dbo].[BT_TipoEvento]
   (Nombre)
   SELECT Nombre FROM dbo.XMLDatosGenerales DG
   WHERE DG.TipoOperacion = 'insercionTipoShow' AND NOT EXISTS(
   (SELECT 1 FROM [BoleteriaTeatroDB].[dbo].[BT_TipoEvento] TE WHERE TE.Nombre = DG.Nombre))

   -- Insert datos de Evento
   INSERT INTO [BoleteriaTeatroDB].[dbo].[BT_Evento]
   (FK_TipoEvento,Nombre,Precio,Descripcion)
   SELECT FKTipoShow, Nombre, Precio, Descripcion FROM dbo.XMLDatosGenerales DG
   WHERE DG.TipoOperacion = 'insercionShow' AND NOT EXISTS(
   (SELECT 1 FROM [BoleteriaTeatroDB].[dbo].[BT_TipoEvento] TE WHERE TE.Nombre = DG.Nombre))

   -- Insert datos de Tanda
   INSERT INTO [BoleteriaTeatroDB].[dbo].[BT_Tanda]
   (FK_Evento,FechaHora,Duracion)
   SELECT FKTipoShow,Fecha,Hora FROM dbo.XMLDatosGenerales DG
   WHERE DG.TipoOperacion = 'insercionTandas' AND NOT EXISTS(
   (SELECT 1 FROM [BoleteriaTeatroDB].[dbo].[BT_Tanda] T 
   WHERE T.FK_Evento = DG.FKTipoShow AND T.FechaHora = DG.Fecha AND T.Duracion = DG.Hora))
  
  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  SELECT * FROM [BoleteriaTeatroDB].[dbo].[BT_TipoEvento]
  SELECT * FROM [BoleteriaTeatroDB].[dbo].[BT_Evento]
  SELECT * FROM [BoleteriaTeatroDB].[dbo].[BT_Tanda]

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo;
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO

-----------------------------------------------------------------------------------------------------------------------

-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_INSERTAR_USUARIO', N'P' ) IS NOT NULL 
    DROP PROCEDURE BT_SP_INSERTAR_USUARIO;
GO

CREATE PROCEDURE BT_SP_INSERTAR_USUARIO
AS
BEGIN
 BEGIN TRY
  BEGIN TRANSACTION 
   -- Insert datos de localidad
   INSERT INTO [BoleteriaTeatroDB].[dbo].[BT_Usuario]
   (Nombre,Contrasena)
   SELECT DISTINCT NombreComprador,NombreComprador FROM dbo.XMLMovimientos

  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  SELECT * FROM [BoleteriaTeatroDB].[dbo].[BT_Usuario]

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo;
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO

Horas Trabajadas: 2.5 hora
Autor: Edward Ovares Villegas

domingo, 23 de noviembre de 2014

Migracion de Localidades y Asiento



Descripción:

Migracion de los datos de las tablas de migrar a la de localidades y asientos

Problemas:

Dentro de los problemas encontrados estan:
* Las localidades proporcionadas en el archivo no incluyen precios, por lo tanto se tuvieron que insertar los precios de las localidades.
* Otro error muy grande es que venían numeros de asientos repetidos generando grandes problemas en las consultas futuras.




-----------------------------------------------------------------------------------------------------------------------

-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_INSERTAR_LOCALIDAD', N'P' ) IS NOT NULL 
    DROP PROCEDURE BT_SP_INSERTAR_LOCALIDAD;
GO

CREATE PROCEDURE BT_SP_INSERTAR_LOCALIDAD
AS
BEGIN
 BEGIN TRY
  BEGIN TRANSACTION 
   -- Insert datos de localidad
   INSERT INTO [BoleteriaTeatroDB].[dbo].[BT_Localidad]
   (Nombre,Precio)
   SELECT Nombre,Precio FROM dbo.XMLDatosGenerales DG
   WHERE DG.TipoOperacion = 'insercionLocalidad'AND NOT EXISTS(
   (SELECT 1 FROM [BoleteriaTeatroDB].[dbo].[BT_Localidad] LC WHERE LC.Nombre = DG.Nombre))
  
  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  SELECT * FROM [BoleteriaTeatroDB].[dbo].[BT_Localidad]

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo;
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO

-----------------------------------------------------------------------------------------------------------------------

-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_INSERTAR_ASIENTO', N'P' ) IS NOT NULL 
    DROP PROCEDURE BT_SP_INSERTAR_ASIENTO;
GO

CREATE PROCEDURE BT_SP_INSERTAR_ASIENTO
AS
BEGIN
 BEGIN TRY
  BEGIN TRANSACTION 
   -- Insert datos de asiento
   INSERT INTO [BoleteriaTeatroDB].[dbo].[BT_Asiento]
   (FK_Localidad,Numero)
   SELECT FKLocalidad,ID AS NumeroDeAsiento FROM dbo.XMLDatosGenerales DG
   WHERE DG.TipoOperacion = 'insercionAsiento'AND NOT EXISTS(
   (SELECT 1 FROM [BoleteriaTeatroDB].[dbo].[BT_Asiento] A 
   WHERE A.Numero = DG.numeroAsiento AND A.FK_Localidad = DG.FKLocalidad))
 
  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  SELECT * FROM [BoleteriaTeatroDB].[dbo].[BT_Asiento]

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo;
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO



Horas Trabajadas: 3 horas
Autor: Luis Diego Flores

Lectura de Archivos XML y Creacion de Tablas para la Migracion



Descripción:

Se inicio el proceso de llenar la base de datos con los archivos.

En esto no hubo mayor investigación ya que ambos estudiantes contabamos con los de los proyectos anteriores facilitando el trabajo y la busqueda en internet.

Problemas:

No se encontraron mayores problemas, nada mas de adaptación del codigo.



-----------------------------------------------------------------------------------------------------------------------

-- Verifica si la tabla existe, para eliminarla
IF OBJECT_ID('XMLDatosGenerales', 'U') IS NOT NULL
 DROP TABLE XMLDatosGenerales;
GO

-- Crea una nueva tabla
CREATE TABLE XMLDatosGenerales
(
 ID INT IDENTITY(1,1) PRIMARY KEY,
 TipoOperacion NVARCHAR(MAX) NOT NULL,
    Nombre NVARCHAR(MAX) NOT NULL,
    FKLocalidad NVARCHAR(MAX) NOT NULL,
    numeroAsiento NVARCHAR(MAX) NOT NULL,
    Fecha NVARCHAR(MAX) NOT NULL,
    Hora NVARCHAR(MAX) NOT NULL,
 FKTipoShow NVARCHAR(MAX) NOT NULL,
 Descripcion NVARCHAR(MAX) NOT NULL,
 Precio NVARCHAR(MAX) NOT NULL
)
GO

-----------------------------------------------------------------------------------------------------------------------

-- Verifica si la tabla existe, para eliminarla
IF OBJECT_ID('XMLMovimientos', 'U') IS NOT NULL
 DROP TABLE XMLMovimientos;
GO

-- Crea una nueva tabla
CREATE TABLE XMLMovimientos
(
 ID INT IDENTITY PRIMARY KEY,
 TipoOperacion NVARCHAR(MAX) NOT NULL,
    FKAsiento NVARCHAR(MAX) NOT NULL,
    FKTanda NVARCHAR(MAX) NOT NULL,
    PreciodelAsiento NVARCHAR(MAX) NOT NULL,
    FechaCompra NVARCHAR(MAX) NOT NULL,
    NombreComprador NVARCHAR(MAX) NOT NULL,
 MontoCancelado NVARCHAR(MAX) NOT NULL
)
GO

-----------------------------------------------------------------------------------------------------------------------

IF OBJECT_ID ( 'BT_SP_GetErrorInfo', 'P' ) IS NOT NULL
 DROP PROCEDURE BT_SP_GetErrorInfo;
GO
-- Create procedure to retrieve error information.
CREATE PROCEDURE BT_SP_GetErrorInfo
AS
 SELECT
  ERROR_NUMBER() AS ErrorNumber
  ,ERROR_SEVERITY() AS ErrorSeverity
  ,ERROR_STATE() AS ErrorState
  ,ERROR_PROCEDURE() AS ErrorProcedure
  ,ERROR_LINE() AS ErrorLine
  ,ERROR_MESSAGE() AS ErrorMessage;
GO

-----------------------------------------------------------------------------------------------------------------------

-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_READ_DATOSGENERAlES', N'P' ) IS NOT NULL 
    DROP PROCEDURE BT_SP_READ_DATOSGENERAlES;
GO

CREATE PROCEDURE BT_SP_READ_DATOSGENERAlES
AS
BEGIN
 BEGIN TRY
  -- Declaracion de variables
  DECLARE @XML xml 
  DECLARE @handle INT  
  DECLARE @PrepareXmlStatus INT  

  -- Lectura del archivo xml a una variable
  SELECT @XML= BulkColumn
  FROM  OPENROWSET(BULK 'C:\Users\Edward\SkyDrive\SQL\Proyecto_3_2014\DatosGenerales.xml', SINGLE_BLOB) x;

  EXEC @PrepareXmlStatus= sp_xml_preparedocument @handle OUTPUT, @XML

  BEGIN TRANSACTION 
  
  -- Insertar los datos del documento a una tabla
  INSERT XMLDatosGenerales
  SELECT  *
  FROM    OPENXML(@handle, '/Archivo/Fila', 2)  
   WITH (
   TipoOperacion NVARCHAR(MAX),
   Nombre NVARCHAR(MAX),
   FKLocalidad NVARCHAR(MAX),
   numeroAsiento NVARCHAR(MAX),
   Fecha NVARCHAR(MAX),
   Hora NVARCHAR(MAX),
   FKTipoShow NVARCHAR(MAX),
   Descripcion NVARCHAR(MAX),
   Precio NVARCHAR(MAX)
   )

  -- Quitar el documento
  EXEC sp_xml_removedocument @handle 

  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  SELECT * FROM XMLDatosGenerales xt;

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo;
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO

-----------------------------------------------------------------------------------------------------------------------

-- Verifica si el store procedure existe, para eliminarlo
IF OBJECT_ID ( N'BT_SP_READ_MOVIMIENTOS', N'P' ) IS NOT NULL 
    DROP PROCEDURE BT_SP_READ_MOVIMIENTOS;
GO

CREATE PROCEDURE BT_SP_READ_MOVIMIENTOS
AS
BEGIN
 BEGIN TRY
  -- Declaracion de variables
  DECLARE @XML xml 
  DECLARE @handle INT  
  DECLARE @PrepareXmlStatus INT  

  -- Lectura del archivo xml a una variable
  SELECT @XML= BulkColumn
  FROM  OPENROWSET(BULK 'C:\Users\Edward\SkyDrive\SQL\Proyecto_3_2014\Movimientos.xml', SINGLE_BLOB) x;

  EXEC @PrepareXmlStatus= sp_xml_preparedocument @handle OUTPUT, @XML

  BEGIN TRANSACTION

  -- Insertar los datos del documento a una tabla
  INSERT dbo.XMLMovimientos
  SELECT  *
  FROM    OPENXML(@handle, '/Archivo/Fila', 2)  
   WITH (
   TipoOperacion NVARCHAR(MAX),
   FKAsiento NVARCHAR(MAX),
   FKTanda NVARCHAR(MAX),
   PreciodelAsiento NVARCHAR(MAX),
   FechaCompra NVARCHAR(MAX),
   NombreComprador NVARCHAR(MAX),
   MontoCancelado NVARCHAR(MAX)
   )

  -- Quitar el documento
  EXEC sp_xml_removedocument @handle 

  IF @@TRANCOUNT > 0
   COMMIT TRANSACTION;

  SELECT * FROM dbo.XMLMovimientos xt;

  RETURN 1;
 END TRY
 BEGIN CATCH
  EXEC BT_SP_GetErrorInfo
  IF @@TRANCOUNT > 0
   ROLLBACK TRANSACTION;
  RETURN @@ERROR*-1;
 END CATCH
END
GO

Autores:
Edward Ovares Villegas 1.5 horas
Luis Diego Flores 1 hora

sábado, 22 de noviembre de 2014

Creación del Script de llenado de la base de datos y la modificación #3 del modelo fisico



Se modifico el diagrama físico de la base de datos y se creo el script de creacion de la base de datos.

Estos cambios se dieron en mayoría por el envió de los datos de llenado de la base de datos, ya que muchos de ellos
no eran compatibles con el diseño de la base de datos.

El diagrama que se pretende que sea el ultimo y definitivo es el siguiente:



El script de creación de la base de datos es el siguiente:




/*Drop database 
USE master
GO
-----------------------------------------------------------------------------------------------------------------------
IF EXISTS(select * from sys.databases where name='BoleteriaTeatroDB')
BEGIN
 ALTER DATABASE [BoleteriaTeatroDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
 DROP DATABASE [BoleteriaTeatroDB]
END
GO

CREATE DATABASE [BoleteriaTeatroDB]
GO
*/
USE [BoleteriaTeatroDB]
GO

-----------------------------------------------------------------------------------------------------------------------

CREATE TABLE [dbo].[BT_Usuario](
 [Id] [int] IDENTITY(1,1) NOT NULL,
 [Nombre] [varchar](50) NOT NULL,
 [Contrasena] [varchar](50) NOT NULL
 PRIMARY KEY(ID)
)

-----------------------------------------------------------------------------------------------------------------------

CREATE TABLE [dbo].[BT_Localidad](
 [Id] [int] IDENTITY(1,1) NOT NULL,
 [Nombre] [varchar](50) NOT NULL,
 [Precio] [money] NOT NULL
 PRIMARY KEY(ID)
)
-----------------------------------------------------------------------------------------------------------------------

CREATE TABLE [dbo].[BT_Asiento](
 [Id] [int] IDENTITY(1,1) NOT NULL,
 [FK_Localidad] [int] FOREIGN KEY REFERENCES [BT_Localidad](ID) NOT NULL,
 [Numero] [int] NOT NULL
 PRIMARY KEY(ID)
)


-----------------------------------------------------------------------------------------------------------------------

CREATE TABLE [dbo].[BT_TipoEvento](
 [Id] [int] IDENTITY(1,1) NOT NULL,
 [Nombre] [varchar](150) NOT NULL
 PRIMARY KEY(ID)
)
-----------------------------------------------------------------------------------------------------------------------

CREATE TABLE [dbo].[BT_Evento](
 [Id] [int] IDENTITY(1,1) NOT NULL,
 [FK_TipoEvento] [int] FOREIGN KEY REFERENCES [BT_TipoEvento](ID) NOT NULL,
 [Nombre] [varchar](150) NOT NULL,
 [Precio] [money] NOT NULL,
 [Descripcion] [varchar](150) NOT NULL
 PRIMARY KEY(ID)
)

-----------------------------------------------------------------------------------------------------------------------

CREATE TABLE [dbo].[BT_Tanda](
 [Id] [int] IDENTITY(1,1) NOT NULL,
 [FK_Evento] [int] FOREIGN KEY REFERENCES [BT_Evento] NOT NULL,
 [FechaHora] [datetime] NOT NULL,
 [Duracion] [varchar](50) NOT NULL
 PRIMARY KEY(ID)
)
-----------------------------------------------------------------------------------------------------------------------

CREATE TABLE [dbo].[BT_AsientoXTanda](
 [Id] [int] IDENTITY(1,1) NOT NULL,
 [FK_Asiento] [int] FOREIGN KEY REFERENCES [BT_Asiento](ID) NOT NULL,
 [FK_Tanda] [int] FOREIGN KEY REFERENCES [BT_Tanda](ID) NOT NULL
 PRIMARY KEY(ID)
)
-----------------------------------------------------------------------------------------------------------------------

CREATE TABLE [dbo].[BT_MedioPago](
 [Id] [int] IDENTITY(1,1) NOT NULL,
 [Nombre] [varchar](150) NOT NULL
 PRIMARY KEY(ID)
)
-----------------------------------------------------------------------------------------------------------------------

CREATE TABLE [dbo].[BT_Tiquete](
 [Id] [int] IDENTITY(1,1) NOT NULL,
 [FK_AsientoXTanda] [int] FOREIGN KEY REFERENCES [BT_AsientoXTanda](ID) NOT NULL,
 [FK_MedioPago] [int] FOREIGN KEY REFERENCES [BT_MedioPago](ID) NOT NULL,
 [FK_Usuario] [int] FOREIGN KEY REFERENCES [BT_Usuario](ID) NOT NULL,
 [FechaCompra] [datetime] NOT NULL,
 [PrecioTotal] [money] NOT NULL,
 [MontoCancelado] [money] NOT NULL
 PRIMARY KEY(ID)
)
-----------------------------------------------------------------------------------------------------------------------

CREATE TABLE [dbo].[BT_Reservacion](
 [Id] [int] IDENTITY(1,1) NOT NULL,
 [FK_AsientoXTanda] [int] FOREIGN KEY REFERENCES [BT_AsientoXTanda](ID) NOT NULL,
 [Fecha][datetime] NOT NULL,
 [FechaExpiracion][datetime] NOT NULL,
 [Codigo] [varchar](50) NOT NULL
 PRIMARY KEY(ID)
)




Autores:
Edward Ovares Villegas 1.5 horas
Luis Diego Flores 2.5 horas

jueves, 20 de noviembre de 2014

Corrección #2 al Diagrama Físico


Se envió un correo al profesor con el diagrama siguiente:



Dentro de la respuesta recibida por el profesor esta:


---------- Mensaje reenviado ----------
De: Franco Quiros
Fecha: 20 de noviembre de 2014, 19:24
Asunto: Re: Diagrama proyecto 3
Para: Luis Diego Flores


No veo el precio de las funciones, el precio x localidad.

Saludos

2014-11-20 16:59 GMT-08:00 Luis Diego Flores :
Buenas profe, por favor podría revisarnos éste diagrama?.
Gracias.


Para la solución u corrección del diagrama se agregaron nuevas tablas y se cambiaron el nombre a otras, también como muchos atributos fueron movidos a otras tablas.


En estos cambios se genero en nuevo diagrama:




Dentro de los cambios mas notorios están:
Se agrega Contraseña al usuario
Se agrega Fecha de compra a la tabla de tiquetes
Se agrega Precio total al tiquete
Se agrega monto cancelado a tiquete
Se elimina precio total de la tabla de asientos X tanda

Horas Trabajadas: 2 hora
Autor: Edward Ovares Villegas & Luis Diego Flores

Corrección #1 al Diagrama Físico


Corrección al diagrama de la base de datos por el motivo de que se encontraron que muchas tablas eran inconsistentes o no cumplian función alguna dentro de la base de datos.




Dentro de las diferencias con la primera version del diagrama se encuentran.
+ Se agrego Tanda
+ Se eliminaron atributos que no eran necesarios.
+ Se elimino la tabla de banco.
+ Se eliminaron los atributos FechaHora de Evento y se paso a Tanda
+ SE agrego la tabla Localidades

Horas Trabajadas: 1.5 hora
Autor: Edward Ovares Villegas & Luis Diego Flores

martes, 18 de noviembre de 2014

Creación del modelo físico de la base de datos


Se inicio el desarrollo de la creación del modelo de la base de datos.

En si se inicio el paso del modelo logico al modelo fisico.

Siendo el resultado el siguiente:



Dentro de la realización de este no hubieron problemas mayores con respecto a los datos y el diagrama, lo unico fue diferencias entre los miembros del grupo
de como se iba realizar o funcionar ciertas tablas dentro del diagrama como bancos.

Horas Trabajadas: 2 hora
Autor: Edward Ovares Villegas & Luis Diego Flores

lunes, 17 de noviembre de 2014

Diseño del modelo lógico de la base de datos

Se inicio el diseño lógico del modelo de base de datos, esto mediante el uso de papel y lápiz. Esto para luego ser pasado a el diagramador de SQL SERVER.



A la hora de realizar esta boceto no hubieron mayores complicaciones, la única mas grande fue la de la abstracción de información de la especificación del proyecto.

Horas Trabajadas: 1.5 hora
Autor: Edward Ovares Villegas & Luis Diego Flores

domingo, 16 de noviembre de 2014

Análisis de Datos para la creación del diagrama logico

Se analizaron los datos de la especificación del proyecto para lo que es la creación del diagrama de la base de datos. Dentro de este análisis surguen lo que puede ser las posibles tablas para el diagrama. Tabla: + Tiquetes + Eventos + Tipos de Eventos + Localidades + Asientos + Usuario. Dentro de las dudas estan las siguientes: * Se necesita bancos y tarjetas. * Se necesita tabla de resevaciones. Horas Trabajadas: 2.5 hora Autores: Edward Ovares Villegas y Luis Diego Flores.