Migración de la Base de Datos no normalizada
Creación del script de migración de la base de datos no normalizada a la base de datos que se utilizar en el proyecto a continuación se presenta el codigo escrito en MS SQL:
DECLARE @ErrorNumber INT, @ErrorSeverity INT, @ErrorState INT,
@Message VARCHAR(200)
BEGIN
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
BEGIN TRAN
BEGIN TRY
INSERT INTO FB_Cajero(Nombre)
SELECT DISTINCT E.EMPLEADO
FROM Fila.dbo.asignacion E
INSERT INTO FB_TipoServicio(Nombre,Prefijo)
VALUES('USUARIO_ESPECIAL','E')
INSERT INTO FB_TipoServicio(Nombre,Prefijo)
VALUES('UN_SOLO_TRAMITE','A')
INSERT INTO FB_TipoServicio(Nombre,Prefijo)
VALUES('MULTIPLES_TRAMITES','M')
INSERT INTO FB_TipoServicio(Nombre,Prefijo)
VALUES('SERVICIO_CLIENTE','S')
INSERT INTO FB_Estacion(Nombre)
SELECT C.ESTACION
FROM Fila.dbo.configuracion C
--Prioridad Uno Estacion
INSERT INTO FB_EstacionXServicio(FK_Estacion,FK_TipoServicio,Prioridad)
SELECT E.Id_Estacion,TP.Id_TipoServicio,1
FROM Fila.dbo.configuracion C INNER JOIN FB_Estacion E ON C.ESTACION = E.Nombre
INNER JOIN FB_TipoServicio TP ON TP.Nombre = C.TIPO_TRAMITE_PRIMERA_PRIORIDAD
--Prioridad Dos Estacion
INSERT INTO FB_EstacionXServicio(FK_Estacion,FK_TipoServicio,Prioridad)
SELECT E.Id_Estacion,TP.Id_TipoServicio,2
FROM Fila.dbo.configuracion C INNER JOIN FB_Estacion E ON C.ESTACION = E.Nombre
INNER JOIN FB_TipoServicio TP ON TP.Nombre = C.TIPO_TRAMITE_SEGUNDA_PRIORIDAD
--Prioridad Tres Estacion
INSERT INTO FB_EstacionXServicio(FK_Estacion,FK_TipoServicio,Prioridad)
SELECT E.Id_Estacion,TP.Id_TipoServicio,3
FROM Fila.dbo.configuracion C INNER JOIN FB_Estacion E ON C.ESTACION = E.Nombre
INNER JOIN FB_TipoServicio TP ON TP.Nombre = C.TIPO_TRAMITE_TERCERA_PRIORIDAD
INSERT INTO FB_CajeroXEstacion(FK_Estacion,FK_Cajero,FechaHoraAbre,FechaHoraCierra)
SELECT E.Id_Estacion,C.Id_Cajero ,
(CONVERT (varchar(10),A.FECHA) +' '+CONVERT(varchar(10), A.HORA_INICIO)),
(CONVERT (varchar(10),A.FECHA) +' '+CONVERT(varchar(10), A.HORA_FIN))
FROM Fila.dbo.asignacion A INNER JOIN FB_Cajero C ON C.Nombre = A.EMPLEADO
INNER JOIN FB_Estacion E ON E.Nombre = A.ESTACION
INSERT INTO FB_Ficha(FK_TipoServicio,Codigo,TiempoSolicitud,TiempoInicioServicio,TiempoFinServicio,)
SELECT DISTINCT
TS.Id_TipoServicio,
AF.FICHA,
(CONVERT (varchar(10),AF.FECHA) +' '+CONVERT(varchar(10), AF.HORA_EMISION)),
(CONVERT (varchar(10),AF.FECHA) +' '+CONVERT(varchar(10), AF.HORA_ATENCION)),
(CONVERT (varchar(10),AF.FECHA) +' '+CONVERT(varchar(10), AF.HORA_FIN))
FROM Fila.dbo.atencion_ficha AF
INNER JOIN FB_TipoServicio TS ON AF.FICHA LIKE TS.Prefijo+'%'
INSERT INTO FB_EventoXEstacion(FK_Ficha,FK_Estacion,Codigo,Duracion)
SELECT DISTINCT F.Id_Ficha,
E.Id_Estacion,
AF.FICHA,
DATEDIFF(MINUTE,AF.HORA_ATENCION,AF.HORA_EMISION)
FROM Fila.dbo.atencion_ficha AF
INNER JOIN FB_TipoServicio TS ON AF.FICHA LIKE TS.Prefijo+'%'
INNER JOIN FB_Ficha F ON AF.FICHA = F.Codigo
INNER JOIN FB_Estacion E ON AF.ESTACION = E.Nombre
COMMIT
END TRY
BEGIN CATCH
SET @ErrorNumber = ERROR_NUMBER()
SET @ErrorSeverity = ERROR_SEVERITY()
SET @ErrorState = ERROR_STATE()
SET @Message = ERROR_MESSAGE()
ROLLBACK
RAISERROR(@Message, @ErrorSeverity, @ErrorState)
END CATCH
END
Duración 4 horas
No hay comentarios:
Publicar un comentario