martes, 15 de septiembre de 2015

Nuevo modelo físico y algunos SP y FN.

Después de la primera reunión hemos hecho algunos avances, ya tenemos una cuenta de azure en la cual tenemos ya la base de datos corriendo, ya se han hecho algunos Stored Procedure, a su ves se han realizado algunas funciones que hacen mas simple los SP.

Se han hecho pequeñas modificaciones al modelo fisico de la base de datos:

INICIAL:


DEFINITIVA:
 
 
 
Algunas de las funciones realizadas son:

Función para acumular los puntos obtenidos del corredor:

Create FUNCTION FN_AcumPts
(
-- Add the parameters for the function here
@RunnerXChallenge int
)
RETURNS int
AS
BEGIN
-- Declare the return variable here
DECLARE @AcumulatedPoints INT
-- Add the T-SQL statements to compute the return value here
SELECT @AcumulatedPoints = SUM(Amount) 
FROM PointsMovement
WHERE PointsMovement.FK_RunnersXChallenge = @RunnerXChallenge
-- Return the result of the function
RETURN @AcumulatedPoints
END
GO

Función para acumular los puntos de castigo del corredor:

alter FUNCTION FN_AcumPunishPts
(
-- Add the parameters for the function here
@RunnerXChallenge int
)
RETURNS int
AS
BEGIN
-- Declare the return variable here
DECLARE @AcumulatedPoints INT
-- Add the T-SQL statements to compute the return value here
SELECT @AcumulatedPoints = SUM(Amount) 
FROM PunishPtsMovement
WHERE PunishPtsMovement.FK_RunnersXChallenge = @RunnerXChallenge
-- Return the result of the function
RETURN @AcumulatedPoints

END
GO

Función para determinar la posicion dependiendo del tiempo:

ALTER FUNCTION FN_AcumTimeByPosition
(
-- Add the parameters for the function here
@RunnerXChallenge int
)
RETURNS time(7)
AS
BEGIN
DECLARE @RunnersXChallengeByPositions TABLE
(
ID int NOT NULL,
Number varchar(50) NOT NULL,
AcumTime time(7) NOT NULL,
AcumPoints int NOT NULL,
AcumPunishPts int NOT NULL,
ET_Time time(7) NOT NULL,
FK_Runners int NOT NULL
)

INSERT INTO @RunnersXChallengeByPositions(ID,Number,AcumTime,AcumPoints,AcumPunishPts,ET_Time,FK_Runners)
SELECT R.ID,R.Number,R.AcumTime,R.AcumPoints,R.AcumPunishPts,P.ET_Time,P.FK_Runners 
FROM RunnersXChallenge R INNER JOIN Positions P ON R.FK_Runners = P.FK_Runners
WHERE R.ID = @RunnerXChallenge

UPDATE   R 
SET  R.AcumTime = (RC.Acumtime +  R.AcumTime)
FROM RunnersXChallenge R INNER JOIN @RunnersXChallengeByPositions RC
ON   R.ID = RC.ID;

-- Declare the return variable here
DECLARE @AcumulatedTime time(7)
-- Add the T-SQL statements to compute the return value here
-- SELECT @AcumulatedTime = TimeAcum FROM
-- Return the result of the function
RETURN @AcumulatedTime
END
GO

Algunos de los Stored Procedure realizados:

El siguiente Stored Procedure realiza las descalificaciones si el corredor tiene mas de 30 puntos de castigo:

CREATE PROCEDURE [dbo].[SP_Disqualify]
-- Add the parameters for the stored procedure here
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

    UPDATE RunnersXChallenge 
SET FK_Status = 1
WHERE AcumPunishPts > 30 
END
GO

El siguiente Stored procedure procesa los resultados de las carreras y campeonatos:

CREATE PROCEDURE [dbo].[SP_ResultProcessing]
-- Add the parameters for the stored procedure here
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

BEGIN TRANSACTION 

UPDATE dbo.RunnersXChallenge SET AcumPoints = dbo.FN_AcumPts(ID);
UPDATE dbo.RunnersXChallenge SET AcumTime = dbo.FN_AcumTimeByPosition(ID);

COMMIT
END

GO
 Por la implementacion  de estas funciones y Stored Procedure son 3 horas las cuales fueron distribuidas en 1 hora por día.

martes, 8 de septiembre de 2015

Avance de la pagina web.

Como se han ido trabajando la capa lógica y la capa de datos de forma paralela los avances de las 2 son muy rápidos, para el diseño de la pagina web se ha decidido crear la aplicación en .net.

Esta es la pagina principal de la pagina web:
La pantalla de inicio de la aplicación web
 Esta es una parte del diseño de la aplicación web, la pagina web es responsive es decir se acomoda a la pantalla de cualquier dispositivo sea movil o no.


Se puede observar la pagina siendo corrida en un tablet, se ajusto el tamaño de la pagina al igual que la foto que tiene.

Se empezó hacer el crud de la pagina web con la base de datos, por ahora solo se tiene una coneccion a la base de datos, esta es solo para una prueba, en la aplicación final no se tendrá este datos











También se crearon algunas las partes de crear carrera:

En el diseño de la pagina web (capa logica) se duro alrededor de 2 horas de trabajo.


viernes, 4 de septiembre de 2015

Empezamos el proyecto.

Se definieron roles en el proyecto con el fin de organizar mejor el equipo de proyecto. estos roles fueron:
División de trabajo del grupo

Hoy se empezó con el diseño físico de la base de datos, no hubo problema en crearla, ya que se tiene el diseño conceptual el cual fue claro y conciso.
Esta es la versión 1 del modelo físico faltan unas referencias pero aun se esta trabajando para mejorar el proyecto:
El modelo se explica solo, el único problema fue que la tabla TypePunishPtsMovement no se referencio bien pero ya se esta trabajando para arreglar el problema del sistema.

Falta foto de diseño fisico y de cada tabla independiente

Modelo Conceptual del sistema de atletismo
En este modelo se puede verificar todas tablas necesarias para el sistema, las cuales posiblemente sean mas tablas en el modelo físico.

Ya se empezaron a escribir los Stored Procedures para calcular los puntos de cada corredor, a su vez se empezó hacer la aplicación en ASP.NET paralelamente para poder integrar de una forma mas simple la capa lógica con la capa de datos.

 Se esta viendo la posibilidad de manejar la base de datos en Azure  gracias a esta herramienta se pueden hacer modificaciones en tiempo real en las diferentes maquinas del equipo, a su vez se podrá unir la capa lógica y la capa de datos de una manera mas sencilla y fiable por la integración de azure a visual studio donde se desarrollara la aplicación web solicitada.

A su vez se esta diseñando el Stored Procedures el cual va a cargar los datos del xml en la base de datos.

La reunión fue hecha en el Laimi 1 del TEC

Reunión en el laimi 1