Se ha avanzado mucho en el sistemas estos días, se decidió modificar un poco el modelo físico otra vez para agregar movimientos que no se hayan aplicado y otra tabla que si, esto se le fue aplicado a las tablas de posiciones y tabla de penalizacion.
A su vez ya se realizo la migración de datos de forma masiva, en este momento se muestra la migración:
CREATE PROCEDURE [dbo].[SP_MigrateData]
-- 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 TRY
EXEC dbo.SP_ClearMovementDebug
IF(EXISTS(SELECT 1 FROM dbo.Punishments))
DELETE FROM dbo.Punishments;
IF(EXISTS(SELECT 1 FROM dbo.PunishmentType))
DELETE FROM dbo.PunishmentType;
IF(EXISTS(SELECT 1 FROM dbo.Positions))
DELETE FROM dbo.Positions;
IF(EXISTS(SELECT 1 FROM dbo.Races))
DELETE FROM dbo.Races;
IF(EXISTS(SELECT 1 FROM dbo.RunnersXChallenge))
DELETE FROM dbo.RunnersXChallenge;
IF(EXISTS(SELECT 1 FROM dbo.Challenge))
DELETE FROM dbo.Challenge;
IF(EXISTS(SELECT 1 FROM dbo.Runners))
DELETE FROM dbo.Runners;
DECLARE @Runners TABLE(ID INT,Name VARCHAR(50),Genre VARCHAR(50),Email VARCHAR(50),Code VARCHAR(50),Aka VARCHAR(50),BirthDay DATE)
DECLARE @Challenge TABLE(ID INT,Name VARCHAR(50),StartDate DATE, EndDate DATE, Code VARCHAR(50))
DECLARE @RunnersXChallenge TABLE(ID INT IDENTITY(1,1),Number VARCHAR(50),FK_Challenge INT,FK_Runners INT,FK_Status INT)
DECLARE @Races TABLE(ID INT,Name VARCHAR(50),DDescription VARCHAR(50),DDate DATE,FK_Challenge INT)
DECLARE @Positions TABLE(ID INT IDENTITY(1,1),ET_Time TIME(7),FK_Races INT,FK_Runners INT,Position INT)
DECLARE @Punishments TABLE(ID INT IDENTITY(1,1),Points INT,FK_Races INT,FK_PunishmentType INT, FK_Runners INT)
DECLARE @PunishmentType TABLE(ID INT IDENTITY(1,1),Name VARCHAR(50),Description TEXT)
DECLARE @XML XML
SELECT @XML = BulkColumn
FROM OPENROWSET(BULK 'D:\XMLBases.xml', SINGLE_CLOB) AS x;
INSERT INTO @Runners(ID,Name,Genre,Email,Code,Aka,BirthDay)
SELECT DISTINCT participante.value('@ID', 'VARCHAR(50)'),
participante.value('@Nombre', 'VARCHAR(50)'),
participante.value('@Genero', 'VARCHAR(50)'),
participante.value('@Email', 'VARCHAR(50)'),
participante.value('@Identificacion', 'VARCHAR(50)'),
participante.value('@SobreNombre', 'VARCHAR(50)'),
(SUBSTRING(participante.value('@FechaNacimiento', 'VARCHAR(10)'), 7, LEN(participante.value('@FechaNacimiento', 'VARCHAR(10)'))) +
SUBSTRING(participante.value('@FechaNacimiento', 'VARCHAR(10)'), 4, 2) +
SUBSTRING(participante.value('@FechaNacimiento', 'VARCHAR(10)'), 0, 3))
FROM @XML.nodes('/Campeonato') AS x1(campeonato)
cross apply x1.campeonato.nodes('./Corredores') AS x2(corredores)
cross apply x2.corredores.nodes('./Participante') AS x3(participante)
INSERT INTO @Challenge(ID,Name,StartDate,EndDate,Code)
SELECT DISTINCT campeonato.value('@ID', 'VARCHAR(50)'),
campeonato.value('@Nombre', 'VARCHAR(50)'),
(SUBSTRING(campeonato.value('@FechaInicio', 'VARCHAR(10)'), 7, LEN(campeonato.value('@FechaInicio', 'VARCHAR(10)'))) +
SUBSTRING(campeonato.value('@FechaInicio', 'VARCHAR(10)'), 4, 2) +
SUBSTRING(campeonato.value('@FechaInicio', 'VARCHAR(10)'), 0, 3)),
(SUBSTRING(campeonato.value('@FechaFin', 'VARCHAR(10)'), 7, LEN(campeonato.value('@FechaFin', 'VARCHAR(10)'))) +
SUBSTRING(campeonato.value('@FechaFin', 'VARCHAR(10)'), 4, 2) +
SUBSTRING(campeonato.value('@FechaFin', 'VARCHAR(10)'), 0, 3)),
campeonato.value('@Campeonato', 'VARCHAR(10)')
FROM @XML.nodes('/Campeonato') AS x1(campeonato)
INSERT INTO @Races(ID, Name,DDescription,DDate,FK_Challenge)
SELECT DISTINCT etapa.value('@ID', 'VARCHAR(50)'),
etapa.value('@Nombre', 'VARCHAR(50)'),
etapa.value('@Description','VARCHAR(50)'),
(SUBSTRING(etapa.value('@Fecha', 'VARCHAR(10)'), 7, LEN(etapa.value('@Fecha', 'VARCHAR(10)'))) +
SUBSTRING(etapa.value('@Fecha', 'VARCHAR(10)'), 4, 2) +
SUBSTRING(etapa.value('@Fecha', 'VARCHAR(10)'), 0, 3)) ,
campeonato.value('@ID','BIGINT')
FROM @XML.nodes('/Campeonato') AS x1(campeonato)
cross apply x1.campeonato.nodes('./Carreras') AS x2(carreras)
cross apply x2.carreras.nodes('./Etapa') AS x3(etapa)
INSERT INTO @Positions(ET_Time,FK_Races,FK_Runners,Position)
SELECT DISTINCT lugar.value('@Tiempo', 'VARCHAR(50)'),
lugar.value('@Etapa', 'VARCHAR(50)'),
lugar.value('@Participante', 'VARCHAR(50)'),
lugar.value('@Posicion', 'VARCHAR(50)')
FROM @XML.nodes('/Campeonato') AS x1(campeonato)
cross apply x1.campeonato.nodes('./Carreras') AS x2(carreras)
cross apply x2.carreras.nodes('./Posiciones') AS x3(posiciones)
cross apply x3.posiciones.nodes('./Lugar') AS x4(lugar)
INSERT INTO @Punishments(Points,FK_Races,FK_PunishmentType,FK_Runners)
SELECT DISTINCT sanciones.value('@Puntos','VARCHAR(50)'),
sanciones.value('@Etapa','VARCHAR(50)'),
sanciones.value('@Castigo','VARCHAR(50)'),
sanciones.value('@Participante', 'VARCHAR(50)')
FROM @XML.nodes('/Campeonato') AS x1(campeonato)
cross apply x1.campeonato.nodes('./Carreras') AS x2(carreras)
cross apply x2.carreras.nodes('./Sanciones') AS x3(sanciones)
INSERT INTO @PunishmentType(Name,Description)
SELECT DISTINCT sanciontipo.value('@Nombre','VARCHAR(50)'),
sanciontipo.value('@Descripcion','VARCHAR(50)')
FROM @XML.nodes('/Campeonato') AS x1(campeonato)
cross apply x1.campeonato.nodes('./Carreras') AS x2(carreras)
cross apply x2.carreras.nodes('./TipoCastigo') AS x3(sanciontipo)
INSERT INTO @RunnersXChallenge(Number,FK_Challenge,FK_Runners,FK_Status)
SELECT DISTINCT participante.value('@ID','VARCHAR(50)'),
participante.value('@Campeonato','VARCHAR(50)'),
participante.value('@ID','VARCHAR(50)'),
participante.value('@Estado','VARCHAR(50)')
FROM @XML.nodes('/Campeonato') AS x1(campeonato)
cross apply x1.campeonato.nodes('./Corredores') AS x2(carreras)
cross apply x2.carreras.nodes('./Participante') AS x3(participante)
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
BEGIN TRANSACTION
INSERT INTO dbo.Runners(ID,Name,Genre,Email,Code,Aka,BirthDay)
SELECT R.ID, R.Name, dbo.FN_GenreID(R.Genre),R.Email,R.Code,R.Aka,R.BirthDay
FROM @Runners R
INSERT INTO dbo.Challenge(ID,Name,StartDate,EndDate)
SELECT C.ID,C.Name,C.StartDate,C.EndDate
FROM @Challenge C
INSERT INTO dbo.RunnersXChallenge(ID,Number,AcumTime,AcumPoints,AcumPunishPts,FK_Challenge,FK_Runners,FK_Status,AcumPointsAuthorized,AcumPunishPtsAuthorized)
SELECT RC.ID,RC.Number,'00:00:00',0,0,RC.FK_Challenge,RC.FK_Runners,RC.FK_Status,0,0
FROM @RunnersXChallenge RC
INSERT INTO dbo.Races(ID,Name,Description,Date,FK_Challenge)
SELECT RC.ID,RC.Name,RC.DDescription,RC.DDate,RC.FK_Challenge
FROM @Races RC
INSERT INTO dbo.Positions(ID,ET_Time,FK_Races,FK_Runners,Position)
SELECT P.ID, P.ET_Time, P.FK_Races, P.FK_Runners, P.Position
FROM @Positions P
INSERT INTO dbo.PunishmentType(ID,Name,Description)
SELECT PT.ID,PT.Name,PT.Description
FROM @PunishmentType PT
INSERT INTO dbo.Punishments(ID,Points,FK_Races,FK_PunishmentType,FK_Runners)
SELECT P.ID,P.Points,P.FK_Races,P.FK_PunishmentType,P.FK_Runners
FROM @Punishments P
COMMIT
RETURN 1
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK
PRINT 'Something went wrong!'
RETURN -1 * @@ERROR
END CATCH
END
GO
Tiempo de realización:
1:30 tiempo de investigación.
3:30 horas de trabajo.
Se inicio el proceso de hacer login a la pagina ya que el profesor indico que el sistema tiene que funcionar con modelo de autentificar para esto se empezó con la investigación del uso de cookies para mantener las secciones abiertas.
Por otro lado se esta realizando la conexión de la base de datos con la pagina web se inicio con la creación de carreras y campeonatos, existió un problema ya que cuando se empezaron hacer pruebas sobre las conexiones entre la base de datos, ya que el Gridview que almacenaba los datos en el sistema estaba correcto pero no se desplegaba en pantalla, se investigo y se llego a la conclusión de que el gridview tenia un bug, se creo un nuevo web form y se mostraron los datos de una manera exitosa.
Tiempo de la realizacion:
1 hora de investigación.
2 horas de trabajo.
Tutoriales consultados para crear el subsistema de login:
Link para crear el código sobre migración base de datos:
https://social.msdn.microsoft.com/Forums/es-ES/c3f46297-c941-463c-8c10-2996fbeb1e41/pasar-datos-de-un-xml-a-una-base-de-datos-para-luego-generar-un-fichero?forum=vcses
| Nuevo diagrama |
A su vez ya se realizo la migración de datos de forma masiva, en este momento se muestra la migración:
CREATE PROCEDURE [dbo].[SP_MigrateData]
-- 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 TRY
EXEC dbo.SP_ClearMovementDebug
IF(EXISTS(SELECT 1 FROM dbo.Punishments))
DELETE FROM dbo.Punishments;
IF(EXISTS(SELECT 1 FROM dbo.PunishmentType))
DELETE FROM dbo.PunishmentType;
IF(EXISTS(SELECT 1 FROM dbo.Positions))
DELETE FROM dbo.Positions;
IF(EXISTS(SELECT 1 FROM dbo.Races))
DELETE FROM dbo.Races;
IF(EXISTS(SELECT 1 FROM dbo.RunnersXChallenge))
DELETE FROM dbo.RunnersXChallenge;
IF(EXISTS(SELECT 1 FROM dbo.Challenge))
DELETE FROM dbo.Challenge;
IF(EXISTS(SELECT 1 FROM dbo.Runners))
DELETE FROM dbo.Runners;
DECLARE @Runners TABLE(ID INT,Name VARCHAR(50),Genre VARCHAR(50),Email VARCHAR(50),Code VARCHAR(50),Aka VARCHAR(50),BirthDay DATE)
DECLARE @Challenge TABLE(ID INT,Name VARCHAR(50),StartDate DATE, EndDate DATE, Code VARCHAR(50))
DECLARE @RunnersXChallenge TABLE(ID INT IDENTITY(1,1),Number VARCHAR(50),FK_Challenge INT,FK_Runners INT,FK_Status INT)
DECLARE @Races TABLE(ID INT,Name VARCHAR(50),DDescription VARCHAR(50),DDate DATE,FK_Challenge INT)
DECLARE @Positions TABLE(ID INT IDENTITY(1,1),ET_Time TIME(7),FK_Races INT,FK_Runners INT,Position INT)
DECLARE @Punishments TABLE(ID INT IDENTITY(1,1),Points INT,FK_Races INT,FK_PunishmentType INT, FK_Runners INT)
DECLARE @PunishmentType TABLE(ID INT IDENTITY(1,1),Name VARCHAR(50),Description TEXT)
DECLARE @XML XML
SELECT @XML = BulkColumn
FROM OPENROWSET(BULK 'D:\XMLBases.xml', SINGLE_CLOB) AS x;
INSERT INTO @Runners(ID,Name,Genre,Email,Code,Aka,BirthDay)
SELECT DISTINCT participante.value('@ID', 'VARCHAR(50)'),
participante.value('@Nombre', 'VARCHAR(50)'),
participante.value('@Genero', 'VARCHAR(50)'),
participante.value('@Email', 'VARCHAR(50)'),
participante.value('@Identificacion', 'VARCHAR(50)'),
participante.value('@SobreNombre', 'VARCHAR(50)'),
(SUBSTRING(participante.value('@FechaNacimiento', 'VARCHAR(10)'), 7, LEN(participante.value('@FechaNacimiento', 'VARCHAR(10)'))) +
SUBSTRING(participante.value('@FechaNacimiento', 'VARCHAR(10)'), 4, 2) +
SUBSTRING(participante.value('@FechaNacimiento', 'VARCHAR(10)'), 0, 3))
FROM @XML.nodes('/Campeonato') AS x1(campeonato)
cross apply x1.campeonato.nodes('./Corredores') AS x2(corredores)
cross apply x2.corredores.nodes('./Participante') AS x3(participante)
INSERT INTO @Challenge(ID,Name,StartDate,EndDate,Code)
SELECT DISTINCT campeonato.value('@ID', 'VARCHAR(50)'),
campeonato.value('@Nombre', 'VARCHAR(50)'),
(SUBSTRING(campeonato.value('@FechaInicio', 'VARCHAR(10)'), 7, LEN(campeonato.value('@FechaInicio', 'VARCHAR(10)'))) +
SUBSTRING(campeonato.value('@FechaInicio', 'VARCHAR(10)'), 4, 2) +
SUBSTRING(campeonato.value('@FechaInicio', 'VARCHAR(10)'), 0, 3)),
(SUBSTRING(campeonato.value('@FechaFin', 'VARCHAR(10)'), 7, LEN(campeonato.value('@FechaFin', 'VARCHAR(10)'))) +
SUBSTRING(campeonato.value('@FechaFin', 'VARCHAR(10)'), 4, 2) +
SUBSTRING(campeonato.value('@FechaFin', 'VARCHAR(10)'), 0, 3)),
campeonato.value('@Campeonato', 'VARCHAR(10)')
FROM @XML.nodes('/Campeonato') AS x1(campeonato)
INSERT INTO @Races(ID, Name,DDescription,DDate,FK_Challenge)
SELECT DISTINCT etapa.value('@ID', 'VARCHAR(50)'),
etapa.value('@Nombre', 'VARCHAR(50)'),
etapa.value('@Description','VARCHAR(50)'),
(SUBSTRING(etapa.value('@Fecha', 'VARCHAR(10)'), 7, LEN(etapa.value('@Fecha', 'VARCHAR(10)'))) +
SUBSTRING(etapa.value('@Fecha', 'VARCHAR(10)'), 4, 2) +
SUBSTRING(etapa.value('@Fecha', 'VARCHAR(10)'), 0, 3)) ,
campeonato.value('@ID','BIGINT')
FROM @XML.nodes('/Campeonato') AS x1(campeonato)
cross apply x1.campeonato.nodes('./Carreras') AS x2(carreras)
cross apply x2.carreras.nodes('./Etapa') AS x3(etapa)
INSERT INTO @Positions(ET_Time,FK_Races,FK_Runners,Position)
SELECT DISTINCT lugar.value('@Tiempo', 'VARCHAR(50)'),
lugar.value('@Etapa', 'VARCHAR(50)'),
lugar.value('@Participante', 'VARCHAR(50)'),
lugar.value('@Posicion', 'VARCHAR(50)')
FROM @XML.nodes('/Campeonato') AS x1(campeonato)
cross apply x1.campeonato.nodes('./Carreras') AS x2(carreras)
cross apply x2.carreras.nodes('./Posiciones') AS x3(posiciones)
cross apply x3.posiciones.nodes('./Lugar') AS x4(lugar)
INSERT INTO @Punishments(Points,FK_Races,FK_PunishmentType,FK_Runners)
SELECT DISTINCT sanciones.value('@Puntos','VARCHAR(50)'),
sanciones.value('@Etapa','VARCHAR(50)'),
sanciones.value('@Castigo','VARCHAR(50)'),
sanciones.value('@Participante', 'VARCHAR(50)')
FROM @XML.nodes('/Campeonato') AS x1(campeonato)
cross apply x1.campeonato.nodes('./Carreras') AS x2(carreras)
cross apply x2.carreras.nodes('./Sanciones') AS x3(sanciones)
INSERT INTO @PunishmentType(Name,Description)
SELECT DISTINCT sanciontipo.value('@Nombre','VARCHAR(50)'),
sanciontipo.value('@Descripcion','VARCHAR(50)')
FROM @XML.nodes('/Campeonato') AS x1(campeonato)
cross apply x1.campeonato.nodes('./Carreras') AS x2(carreras)
cross apply x2.carreras.nodes('./TipoCastigo') AS x3(sanciontipo)
INSERT INTO @RunnersXChallenge(Number,FK_Challenge,FK_Runners,FK_Status)
SELECT DISTINCT participante.value('@ID','VARCHAR(50)'),
participante.value('@Campeonato','VARCHAR(50)'),
participante.value('@ID','VARCHAR(50)'),
participante.value('@Estado','VARCHAR(50)')
FROM @XML.nodes('/Campeonato') AS x1(campeonato)
cross apply x1.campeonato.nodes('./Corredores') AS x2(carreras)
cross apply x2.carreras.nodes('./Participante') AS x3(participante)
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
BEGIN TRANSACTION
INSERT INTO dbo.Runners(ID,Name,Genre,Email,Code,Aka,BirthDay)
SELECT R.ID, R.Name, dbo.FN_GenreID(R.Genre),R.Email,R.Code,R.Aka,R.BirthDay
FROM @Runners R
INSERT INTO dbo.Challenge(ID,Name,StartDate,EndDate)
SELECT C.ID,C.Name,C.StartDate,C.EndDate
FROM @Challenge C
INSERT INTO dbo.RunnersXChallenge(ID,Number,AcumTime,AcumPoints,AcumPunishPts,FK_Challenge,FK_Runners,FK_Status,AcumPointsAuthorized,AcumPunishPtsAuthorized)
SELECT RC.ID,RC.Number,'00:00:00',0,0,RC.FK_Challenge,RC.FK_Runners,RC.FK_Status,0,0
FROM @RunnersXChallenge RC
INSERT INTO dbo.Races(ID,Name,Description,Date,FK_Challenge)
SELECT RC.ID,RC.Name,RC.DDescription,RC.DDate,RC.FK_Challenge
FROM @Races RC
INSERT INTO dbo.Positions(ID,ET_Time,FK_Races,FK_Runners,Position)
SELECT P.ID, P.ET_Time, P.FK_Races, P.FK_Runners, P.Position
FROM @Positions P
INSERT INTO dbo.PunishmentType(ID,Name,Description)
SELECT PT.ID,PT.Name,PT.Description
FROM @PunishmentType PT
INSERT INTO dbo.Punishments(ID,Points,FK_Races,FK_PunishmentType,FK_Runners)
SELECT P.ID,P.Points,P.FK_Races,P.FK_PunishmentType,P.FK_Runners
FROM @Punishments P
COMMIT
RETURN 1
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK
PRINT 'Something went wrong!'
RETURN -1 * @@ERROR
END CATCH
END
GO
Tiempo de realización:
1:30 tiempo de investigación.
3:30 horas de trabajo.
Se inicio el proceso de hacer login a la pagina ya que el profesor indico que el sistema tiene que funcionar con modelo de autentificar para esto se empezó con la investigación del uso de cookies para mantener las secciones abiertas.
Por otro lado se esta realizando la conexión de la base de datos con la pagina web se inicio con la creación de carreras y campeonatos, existió un problema ya que cuando se empezaron hacer pruebas sobre las conexiones entre la base de datos, ya que el Gridview que almacenaba los datos en el sistema estaba correcto pero no se desplegaba en pantalla, se investigo y se llego a la conclusión de que el gridview tenia un bug, se creo un nuevo web form y se mostraron los datos de una manera exitosa.
Tiempo de la realizacion:
1 hora de investigación.
2 horas de trabajo.
Tutoriales consultados para crear el subsistema de login:
Link para crear el código sobre migración base de datos:
https://social.msdn.microsoft.com/Forums/es-ES/c3f46297-c941-463c-8c10-2996fbeb1e41/pasar-datos-de-un-xml-a-una-base-de-datos-para-luego-generar-un-fichero?forum=vcses
No hay comentarios:
Publicar un comentario