You are on page 1of 16

PROYECTO: SISTEMA INTEGRADO DE GESTIN

CONSULAR SGIC

PROCEDIMIENTO DE ESTNDARES EN DISEO Y


PROGRAMACIN DE BASE DE DATOS

OCTUBRE 2014
Versin 2.0

ELABORADO POR: REVISADO POR: REVISADO POR: APROBADO POR:


Equipo Proyectos
DGC Rosa Leon
Jackeline Tito
Fecha: 10/10/2014 Fecha: 10/10/2014 Fecha: / /___ Fecha: __/__/____

Fecha de Actualizacin: 30/05/2017 Versin: 2.0


Preparado por: rea de Proyectos de TI - DGC Pgina : 1 de 16
HISTORIAL DE REVISIONES

Fecha de Revisado Fecha de


Versin Autor Descripcin
Elaboracin por Revisin
1.0 Equipo DGC Creacin del documento 11/07/2014 Rosa Leon 11/07/2014
Actualizacin y
2.0 Jackeline Tito complementacin del 10/10/2014 Rosa Leon 10/10/2014
documento

Fecha de Actualizacin: 30/05/2017 Versin: 2.0


Preparado por: rea de Proyectos de TI - DGC Pgina : 2 de 16
INDICE

1 Introduccin................................................................................................................................. 2
2 Objetivo........................................................................................................................................ 2
3 Alcance......................................................................................................................................... 2
4 Referencia.................................................................................................................................... 2
5 Nomenclatura.............................................................................................................................. 2
5.1 Bases de datos................................................................................................................ 2
5.2 Archivos de datos........................................................................................................... 2
5.3 Esquemas........................................................................................................................ 2
5.4 Tablas............................................................................................................................... 2
5.5 Campos............................................................................................................................ 2
5.6 Constraints...................................................................................................................... 2
5.7 Procedimientos almacenados.......................................................................................2
5.8 Disparadores................................................................................................................... 2
5.9 Vistas............................................................................................................................... 2
5.10 Funciones........................................................................................................................ 2
6 Estructura de objetos................................................................................................................. 2
6.1 Tablas............................................................................................................................... 2
6.2 Procedimientos almacenados.......................................................................................2
7 Lineamientos............................................................................................................................... 2
7.1 Cdigo fuente.................................................................................................................. 2
7.2 Resolucin de nombres................................................................................................. 2
7.3 Reglas de negocio.......................................................................................................... 2

Fecha de Actualizacin: 30/05/2017 Versin: 2.0


Preparado por: rea de Proyectos de TI - DGC Pgina : 3 de 16
1 Introduccin
La Direccin General de Comunidades Peruanas en el Exterior y Asuntos Consulares DGC, del
Ministerio de Relaciones Exteriores, cuenta con una infraestructura tecnolgica basada en
arquitectura SQL Server de Microsoft. En este marco tecnolgico, las bases de datos SQL Server
proporcionan seguridad, funcionalidad, escalabilidad y confiabilidad en el manejo de grandes
volmenes de informacin.

Las bases de datos se disean para manejar grandes cantidades de informacin, la manipulacin de
datos involucra tanto la definicin de estructuras para el almacenamiento as como la provisin de
mecanismos para la manipulacin de informacin; adems, la base de datos debe tener
implementados dispositivos de seguridad que garanticen la integridad de la informacin, a pesar de
cadas del sistema o intentos de accesos no autorizados. La utilizacin de estndares en el diseo
ayuda a la identificacin del tipo y propsito de todos los objetos de la base de datos y su correcto
nombramiento.

2 Objetivo
Estandarizar el diseo y desarrollo en las bases de datos de la Direccin General de Comunidades
Peruanas en el Exterior y Asuntos Consulares DGC, aplicando buenas prcticas y mecanismos que
aseguren un uso eficiente de los recursos. As como, establecer una gua para la implementacin de
objetos de base de datos que permita identificar y nombrar en forma clara todos los elementos
involucrados en el repositorio de datos usados en la DGC.

3 Alcance
El mbito de este documento abarca a:

o Administradores de base de datos.- Encargados de gestionar las bases de datos.


o Analistas programadores.- Responsables de la creacin y mantenimiento de las aplicaciones.
o Proveedores y terceros.- Encargados de desarrollar soluciones informticas.

4 Referencia
Documento de Estndares y Buenas Prcticas para el desarrollo de Software, versin 1.0

5 Nomenclatura

5.1 Bases de datos


El nombre de la base de datos debe ser descriptivo, en singular y en maysculas; debe hacer
referencia al sistema con el que interactuar. Utiliza la siguiente forma:

BD_<NOMBRE_DE_LA_BASE_DE_DATOS>

Ejemplo: BD_SGAC

Fecha de Actualizacin: 30/05/2017 Versin: 2.0


Preparado por: rea de Proyectos de TI - DGC Pgina : 4 de 16
5.2 Archivos de datos
Los archivos de datos deben encontrarse fsicamente separados y su nomenclatura debe alinearse a
la siguiente forma:

BD_< NOMBRE_DE_LA_BASE_DE_DATOS >_<TIPO>

Tipo Ejemplo
MDF BD_SGAC
LDF BD_SGAC_LOG
Histrico BD_SGAC_HISTORIC
ndices BD_SGAC_INDEXES

5.3 Esquemas
El nombre del esquema debe ser abreviado, en singular y en maysculas; debe hacer referencia al
mdulo con el que interactuar. Utiliza la siguiente forma:

SC_<NOMBRE_DEL_ESQUEMA>

Ejemplo: SC_ADM

5.4 Tablas
El nombre de la tabla debe ser descriptivo, en singular y en maysculas, debe guardar estrecha
relacin con la informacin que almacenar; cada palabra debe estar separada por un guion bajo y
debe consignarse el esquema al que pertenece. Utiliza la siguiente forma:

SC_<NOMBRE_ESQUEMA>.<PREFIJO_MODULO>_<NOMBRE_TABLA>

Ejemplo: SC_ADM.SE_PERFIL_USUARIO

Donde, SE hace referencia al mdulo de Seguridad de las Aplicaciones. El prefijo del


mdulo slo debe contener dos letras.

5.5 Campos
Los nombres de los campos deben ser descriptivos, en singular y en maysculas; cada palabra debe
estar separada por un guion bajo y como prefijo debe indicarse cuatro letras que hagan referencia al
nombre de la tabla. Si el nombre de la tabla es compuesto, deber usarse como prefijo los dos
primeros caracteres de cada palabra.

El siguiente dato que debe incluir el nombre del campo es un guion bajo y luego el prefijo del tipo de
dato, este de un solo caracter y tal como lo muestra la siguiente tabla:

Fecha de Actualizacin: 30/05/2017 Versin: 2.0


Preparado por: rea de Proyectos de TI - DGC Pgina : 5 de 16
TIPO DE
PREFIJO
DATO
bigint i
bit b
char c
date d
datetime d
decimal E
float F
image G
int I
money M
numeric N
smallint s
text T
tinyint t
varchar v

Utiliza la siguiente forma:

<PREFIJO_TABLA>_<PREFIJO_TIPO_DATO>_<NOMBRE_CAMPO>

Ejemplo 1:
TABLA: SC_ADM.SE_PERFIL

TIPO DE
NOMBRE DEL CAMPO
DATO
PERF_sPERFILID SMALLINT
PERF_vNOMBRE VARCHAR
PERF_cESTADO CHAR
PERF_dFECHA_CREACION DATETIME

Ejemplo 2:
TABLA: SC_ADM.SE_PERFIL_OPCION

TIPO DE
NOMBRE DEL CAMPO
DATO
PEOP_IPERFOPCID INT
PEOP_sPERFILID SMALLINT
PEOP_vIP_CREACION VARCHAR
PEOP_sADICIONAR CHAR

5.6 Constraints
Los nombres debern estar en maysculas y la nomenclatura deber ceirse a como se indica a
continuacin:

Fecha de Actualizacin: 30/05/2017 Versin: 2.0


Preparado por: rea de Proyectos de TI - DGC Pgina : 6 de 16
TIPO NOMENCLATURA EJEMPLO
Clave primaria PK_<NOMBRE_DE_LA_TABLA> PK_OPCION
Clave fornea FK_<NOMBRE_TABLA_ORIGEN>_<NOMBRE_TABLA_REFERENCIA> FK_OPCION_SISTEMA
ndice nico UQ_<NOMBRE_DE_LA_TABLA>_<IDENTIFICADOR_UNICO> UQ_OPCION_APP
ndice no agrupado IDN_<NOMBRE_TABLA>_<IDENTIFICADOR_UNICO> IDN_PAGO_ACTUACION
ndex agrupado IDA_<NOMBRE_TABLA>_<IDENTIFICADOR_UNICO> IDA_MOVIMIENTO_BODEGA

Se verificar que las columnas que formen parte de una clave fornea tengan el mismo tipo de dato
que la tabla principal.

5.7 Procedimientos almacenados


Los nombres debern estar en maysculas y la nomenclatura utilizar la siguiente forma:

ACCIN NOMENCLATURA EJEMPLO


Insertar USP_<NOMBRE_TABLA>_ADICIONAR USP_OPCION_ADICIONAR
Modificar USP_<NOMBRE_TABLA>_ACTUALIZAR USP_OPCION_ACTUALIZAR
Consultar USP_<NOMBRE_TABLA>_CONSULTAR USP_OPCION_CONSULTAR
Anular USP_<NOMBRE_TABLA>_ANULAR USP_OPCION_ANULAR

5.8 Disparadores
Los nombres debern estar en maysculas y la nomenclatura utilizar la siguiente forma:

ACCIN NOMENCLATURA EJEMPLO


Insertar TRG_<NOMBRE_TABLA>_ADICIONAR TRG_OPCION_ADICIONAR
Modificar TRG_<NOMBRE_TABLA>_ACTUALIZAR TRG_OPCION_ACTUALIZAR
Anular TRG_<NOMBRE_TABLA>_ANULAR TRG_OPCION_ANULAR

5.9 Vistas
Los nombres debern estar en maysculas y la nomenclatura utilizar la siguiente forma:

VW_<NOMBRE_DE_LA_VISTA>

Ejemplo: VW_CONSULTAR_PERSONA

5.10 Funciones
Los nombres debern estar en maysculas y la nomenclatura utilizar la siguiente forma:

FN_<NOMBRE_DE_LA_FUNCION>

Ejemplo: FN_CALCULAR_TARIFA

Fecha de Actualizacin: 30/05/2017 Versin: 2.0


Preparado por: rea de Proyectos de TI - DGC Pgina : 7 de 16
6 Estructura de objetos

6.1 Tablas
Adems de los campos propios de la tabla, sta deber consignar un campo de estado y columnas
de auditora. Referente al campo para determinar el estado de un registro, ste se deber incluir slo
si la tabla no tiene otro atributo que maneje un flujo de estados. Deber tener la siguiente forma:

TIPO DE PERMITE VALOR POR


NOMBRE DEL CAMPO EJEMPLO
DATO NULOS DEFECTO
<PREFIJO_TABLA>_cESTADO CHAR(1) NO 'A' PERF_cESTADO

Los valores que almacenar el campo son: A para identificar si un registro se encuentra ACTIVO y
E para identificar si un registro se encuentra ELIMINADO lgicamente.

Los campos de auditora debern tener la siguiente forma:

Fecha de Actualizacin: 30/05/2017 Versin: 2.0


Preparado por: rea de Proyectos de TI - DGC Pgina : 8 de 16
NOMBRE DEL TIPO DE NULO
EJEMPLO DESCRIPCIN
CAMPO DATO S
<PT>_sUSUARIO_CREACION SMALLINT NO PERF_sUSUARIO_CREACION IDENTIFICADOR DEL USUARIO QUE CREA EL REGISTRO
<PT>_vIP_CREACION VARCHAR(50) NO PERF_vIP_CREACION IP DE LA PC DONDE SE CREA EL REGISTRO
<PT>_dFECHA_CREACION DATETIME NO PERF_dFECHA_CREACION FECHA DE CREACIN DEL REGISTRO
<PT>_sUSUARIO_MODIFICACION SMALLINT S PERF_sUSUARIO_MODIFICACION IDENTIFICADOR DEL LTIMO USUARIO QUE MODIFICA EL REGISTRO
<PT>_vIP_MODIFICACION VARCHAR(50) S PERF_vIP_MODIFICACION IP DE LA LTIMA PC DESDE DONDE SE MODIFICA EL REGISTRO
<PT>_dFECHA_MODIFICACION DATETIME S PERF_dFECHA_MODIFICACION FECHA DE LA LTIMA MODIFICACIN DEL REGISTRO

La estructura que se validar ser como sigue:


1. Nombre de la tabla
2. Nombre de las columnas y tipo de datos
3. Estado del registro y datos de auditora
4. Clave principal
5. Restricciones
6. Claves forneas
7. Comentarios de las columnas

1. Nombre de la tabla

CREATE TABLE [SC_ADM].[SE_PERFIL](


[PERF_sPERFILID] [SMALLINT] NOT NULL,
[PERF_vNOMBRE] [VARCHAR](50) NOT NULL,
[PERF_vDESCRIPCION] [VARCHAR](100) NULL,
[PERF_cESTADO] [CHAR](1) NOT NULL, 2. Nombre de
[PERF_sUSUARIO_CREACION] [SMALLINT] NOT NULL,
[PERF_vIP_CREACION] [VARCHAR](50) NOT NULL, 3. Estado del las columnas y
[PERF_dFECHA_CREACION] [DATETIME] NOT NULL,
[PERF_sUSUARIO_MODIFICACION] [SMALLINT] NULL, registro y datos de tipo de datos
[PERF_vIP_MODIFICACION] [VARCHAR](50) NULL,
[PERF_dFECHA_MODIFICACION] [DATETIME] NULL,
auditora
CONSTRAINT [PK_PERFIL] PRIMARY KEY CLUSTERED
(
[PERF_sPERFILID] ASC 4. Clave principal
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON
[PRIMARY]
) ON [PRIMARY]

ALTER TABLE [SC_ADM].[SE_PERFIL] ADD CONSTRAINT [DF_SE_PERFIL_USUA_CESTADO] DEFAULT ('A') FOR [PERF_cESTADO] 5. Restricciones
ALTER TABLE [SC_ADM].[SE_PERFIL_OPCION] WITH CHECK ADD CONSTRAINT [FK_PERFIL_OPCION_PERFIL] FOREIGN KEY([PEOP_sPERFILID])
REFERENCES [SC_ADM].[SE_PERFIL] ([PERF_sPERFILID])

ALTER TABLE [SC_ADM].[SE_PERFIL_OPCION] CHECK CONSTRAINT [FK_PERFIL_OPCION_PERFIL]


6. Claves
ALTER TABLE [SC_ADM].[SE_PERFIL_USUARIO] WITH CHECK ADD CONSTRAINT [FK_PERFIL_USUARIO_PERFIL] FOREIGN KEY([PUSU_sPERFILID])
REFERENCES [SC_ADM].[SE_PERFIL] ([PERF_sPERFILID]) forneas
ALTER TABLE [SC_ADM].[SE_PERFIL_USUARIO] CHECK CONSTRAINT [FK_PERFIL_USUARIO_PERFIL]

EXEC SYS.SP_ADDEXTENDEDPROPERTY @NAME=N'MS_DESCRIPTION', @VALUE=N'IDENTIFICADOR DE LA TABLA SE_PERFIL' ,


@LEVEL0TYPE=N'SCHEMA',@LEVEL0NAME=N'SC_ADM', @LEVEL1TYPE=N'TABLE',@LEVEL1NAME=N'SE_PERFIL',
@LEVEL2TYPE=N'COLUMN',@LEVEL2NAME=N'PERF_sPERFILID'
EXEC SYS.SP_ADDEXTENDEDPROPERTY @NAME=N'MS_DESCRIPTION', @VALUE=N'NOMBRE DEL PERFIL' ,
@LEVEL0TYPE=N'SCHEMA',@LEVEL0NAME=N'SC_ADM', @LEVEL1TYPE=N'TABLE',@LEVEL1NAME=N'SE_PERFIL',
@LEVEL2TYPE=N'COLUMN',@LEVEL2NAME=N'PERF_vNOMBRE'
EXEC SYS.SP_ADDEXTENDEDPROPERTY @NAME=N'MS_DESCRIPTION', @VALUE=N'DESCRIPCIN DE LAS ACTIVIDADES ASOCIADAS A UN PERFIL' ,
@LEVEL0TYPE=N'SCHEMA',@LEVEL0NAME=N'SC_ADM', @LEVEL1TYPE=N'TABLE',@LEVEL1NAME=N'SE_PERFIL',
@LEVEL2TYPE=N'COLUMN',@LEVEL2NAME=N'PERF_vDESCRIPCION'
EXEC SYS.SP_ADDEXTENDEDPROPERTY @NAME=N'MS_DESCRIPTION', @VALUE=N'ESTADO DEL REGISTRO (A) ACTIVO; (E) ELIMINADO' ,
@LEVEL0TYPE=N'SCHEMA',@LEVEL0NAME=N'SC_ADM', @LEVEL1TYPE=N'TABLE',@LEVEL1NAME=N'SE_PERFIL',
@LEVEL2TYPE=N'COLUMN',@LEVEL2NAME=N'PERF_cESTADO'
EXEC SYS.SP_ADDEXTENDEDPROPERTY @NAME=N'MS_DESCRIPTION', @VALUE=N'IDENTIFICADOR DEL USUARIO QUE CREA EL REGISTRO' ,
@LEVEL0TYPE=N'SCHEMA',@LEVEL0NAME=N'SC_ADM', @LEVEL1TYPE=N'TABLE',@LEVEL1NAME=N'SE_PERFIL',
@LEVEL2TYPE=N'COLUMN',@LEVEL2NAME=N'PERF_sUSUARIO_CREACION'
EXEC SYS.SP_ADDEXTENDEDPROPERTY @NAME=N'MS_DESCRIPTION', @VALUE=N'IP DE LA PC DONDE SE CREA EL REGISTRO' , 7. Comentarios
@LEVEL0TYPE=N'SCHEMA',@LEVEL0NAME=N'SC_ADM', @LEVEL1TYPE=N'TABLE',@LEVEL1NAME=N'SE_PERFIL',
@LEVEL2TYPE=N'COLUMN',@LEVEL2NAME=N'PERF_vIP_CREACION' de las columnas
EXEC SYS.SP_ADDEXTENDEDPROPERTY @NAME=N'MS_DESCRIPTION', @VALUE=N'FECHA DE CREACIN DEL REGISTRO' ,
@LEVEL0TYPE=N'SCHEMA',@LEVEL0NAME=N'SC_ADM', @LEVEL1TYPE=N'TABLE',@LEVEL1NAME=N'SE_PERFIL',
@LEVEL2TYPE=N'COLUMN',@LEVEL2NAME=N'PERF_dFECHA_CREACION'
EXEC SYS.SP_ADDEXTENDEDPROPERTY @NAME=N'MS_DESCRIPTION', @VALUE=N'IDENTIFICADOR DEL LTIMO USUARIO QUE MODIFICA EL REGISTRO'
, @LEVEL0TYPE=N'SCHEMA',@LEVEL0NAME=N'SC_ADM', @LEVEL1TYPE=N'TABLE',@LEVEL1NAME=N'SE_PERFIL',
@LEVEL2TYPE=N'COLUMN',@LEVEL2NAME=N'PERF_sUSUARIO_MODIFICACION'
EXEC SYS.SP_ADDEXTENDEDPROPERTY @NAME=N'MS_DESCRIPTION', @VALUE=N'IP DE LA LTIMA PC DESDE DONDE SE MODIFICA EL REGISTRO' ,
@LEVEL0TYPE=N'SCHEMA',@LEVEL0NAME=N'SC_ADM', @LEVEL1TYPE=N'TABLE',@LEVEL1NAME=N'SE_PERFIL',
@LEVEL2TYPE=N'COLUMN',@LEVEL2NAME=N'PERF_vIP_MODIFICACION'
EXEC SYS.SP_ADDEXTENDEDPROPERTY @NAME=N'MS_DESCRIPTION', @VALUE=N'FECHA DE LA LTIMA MODIFICACIN DEL REGISTRO' ,
@LEVEL0TYPE=N'SCHEMA',@LEVEL0NAME=N'SC_ADM', @LEVEL1TYPE=N'TABLE',@LEVEL1NAME=N'SE_PERFIL',
@LEVEL2TYPE=N'COLUMN',@LEVEL2NAME=N'PERF_dFECHA_MODIFICACION'

Fecha de Actualizacin: 30/05/2017 Versin: 2.0


Preparado por: rea de Proyectos de TI - DGC Pgina : 9 de 16
6.2 Procedimientos almacenados

La estructura que se validar ser como sigue:


1. Nombre del procedimiento
2. Comentario del encabezado
En el comentario del encabezado se deber consignar lo siguiente:

o SISTEMA : Nombre de la aplicacin.


o OBJETIVO : Funcionalidad del procedimiento.
o CREADO POR : Analista programador que elabor el procedimiento.
o FECHA : Fecha de creacin del procedimiento.
o PARMETROS : Lista de cada parmetro que se use en el procedimiento,
indicando el detalle del dato que se enva.
o EJECUTAR : Ejemplo de ejecucin del procedimiento con datos de
prueba.

o HISTORIAL DE MODIFICACIONES
Crear una entrada por cada modificacin que se realice sobre el procedimiento.

AUTOR : Analista programador que realiz la modificacin.


FECHA : Fecha de modificacin del procedimiento.
N REQ : N de requerimiento que justifica la modificacin.
MOTIVO : Motivo que fundamenta la modificacin.

3. Declaracin de parmetros
Un parmetro se deber declarar bajo la siguiente forma:

@P_<NOMBRE_DEL_PARAMETRO>

Ejemplo: @P_USUARIO

4. Declaracin de variables
Una variable se deber declarar bajo la siguiente forma:

@V_<NOMBRE_DE_LA_VARIABLE>

Ejemplo: @V_PAGO_ID

5. Instruccin SET NOCOUNT ON


6. Comentario de la modificacin
7. Manejo de controlador de errores

Fecha de Actualizacin: 30/05/2017 Versin: 2.0


Preparado por: rea de Proyectos de TI - DGC Pgina : 10 de 16
1. Nombre del procedimiento

CREATE PROCEDURE PN_ACREDITACION.USP_AC_PAGO_ADICIONAR


--============================================================================

-- SISTEMA : SISTEMA DE GESTIN DE AUTOADHESIVOS CONSULARES


-- OBJETIVO : INSERTAR DATOS EN LA TABLA PN_ACREDITACION.AC_PAGO
-- CREADO POR : MARLENNI MAR
-- FECHA : 10/08/2014 09:45

-- PARMETRO(S) :
-- @P_IACTUACIONID : IDENTIFICADOR DE LA ACTUACIN CONSULAR
-- @P_DFECHAOPERACION : FECHA DE PAGO DE LA OPERACIN
-- @P_IMONEDALOCALID : IDENTIFICADOR DE LA MONEDA CONSULAR
-- @P_FMONTOMONEDALOCAL : MONTO TOTAL EN MONEDA LOCAL
-- @P_FMONTOSOLESCONSULARES : MONTO TOTAL EN SOLES CONSULARES
-- @P_VBANCONOMBRE : NOMBRE DEL BANCO 2. Comentario del
-- @P_VBANCONUMEROOPERACION
-- @P_IPAGOFLAG
: NMERO DE OPERACIN DEL BANCO
: IDENTIFICA SI EL PAGO FUE EFECTUADO encabezado
-- @P_IESTADO : ESTADO DE LA ACTUACIN
-- @P_VCOMENTARIO : COMENTARIO SOBRE EL PAGO DE LA ACTUACIN
-- @P_IOFICINACONSULARID : OFICINA CONSULAR QUE EJECUT EL PAGO
-- @P_ICREAUSUARIOID : USUARIO QUE INGRES EL PAGO

-- EJECUTAR : PN_ACREDITACION.USP_AC_PAGO_ADICIONAR2 1, '20140930', 1, 0, 0, 'NOMBRE', '11111', 1, 1, '', 1, 1

-- MODIFICACIONES:
-- AUTOR FECHA N REQ MOTIVO
-- GIANNINA IBAEZ 04/09/2014 10:10 214 NO SE ENVIAR COMO PARMETRO EL ID, SE CALCULAR
--=============================================================================================================

@P_IACTUACIONID BIGINT,
@P_DFECHAOPERACION DATETIME,
@P_IMONEDALOCALID SMALLINT,
@P_FMONTOMONEDALOCAL FLOAT,
@P_FMONTOSOLESCONSULARES FLOAT,
@P_VBANCONOMBRE
@P_VBANCONUMEROOPERACION
VARCHAR(500),
VARCHAR(50),
3. Declaracin de
@P_IPAGOFLAG SMALLINT, parmetros
@P_IESTADO SMALLINT,
@P_VCOMENTARIO VARCHAR(1000),
@P_IOFICINACONSULARID INT,
@P_ICREAUSUARIOID SMALLINT

AS

DECLARE
@V_IPAGOTIPOID INT,
4. Declaracin de
@V_ERRORMESSAGE VARCHAR(MAX), variables
@V_ERRORSEVERITY INT

BEGIN

SET NOCOUNT ON 5. Instruccin SET


BEGIN TRY
NOCOUNT ON
/*
N REQ 214 6. Comentario de
*/
EL ID DE LA TABLA SE CALCULAR, YA NO SE ENVIAR COMO PARMETRO la modificacin
SELECT @V_IPAGOTIPOID = ISNULL(MAX(PAGO_IPAGOTIPOID),0) + 1
FROM PN_ACREDITACION.AC_PAGO

BEGIN TRANSACTION

INSERT INTO PN_ACREDITACION.AC_PAGO (PAGO_IPAGOTIPOID, PAGO_IACTUACIONID,


PAGO_DFECHAOPERACION, PAGO_IMONEDALOCALID, PAGO_FMONTOMONEDALOCAL,
PAGO_FMONTOSOLESCONSULARES, PAGO_VBANCONOMBRE,
S
PAGO_VBANCONUMEROOPERACION, PAGO_IPAGOFLAG, PAGO_IESTADO,
E
PAGO_VCOMENTARIO, PAGO_DCREAFECHA, PAGO_ICREAUSUARIOID)
VALUES(@V_IPAGOTIPOID, @P_IACTUACIONID, @P_DFECHAOPERACION,
L
@P_IMONEDALOCALID, @P_FMONTOMONEDALOCAL ,@P_FMONTOSOLESCONSULARES
,@P_VBANCONOMBRE, @P_VBANCONUMEROOPERACION, @P_IPAGOFLAG, @P_IESTADO,
E
@P_VCOMENTARIO, GETDATE(), @P_ICREAUSUARIOID)
C
COMMIT
T
END TRY

BEGIN CATCH P
IF @@TRANCOUNT > 0 A
Fecha de Actualizacin: 30/05/2017 ROLLBACK I Versin: 2.0
7. Manejo de
Preparado por: rea de Proyectos de@V_ERRORMESSAGE
SELECT TI - DGC S
= ERROR_MESSAGE(),@V_ERRORSEVERITY = ERROR_SEVERITY(); Pgina : 11 de 16
_ 1);
RAISERROR(@V_ERRORMESSAGE, @V_ERRORSEVERITY, controlador de
END CATCH I errores
SET NOCOUNT OFF P
END A
I
S
D
,

P
A
I
S
_
V
N
O
M
B
R
E
7 ,
Lineamientos

7.1 Cdigo P fuente


A
A I continuacin se listan
S
los _ lineamientos para la
V elaboracin del cdigo
C
fuente de los objetos de la base
A
de datos: P
I
T
A
No L usar en ningn caso
F
la R sentencia SELECT *
O FROM, slo se
M
deber utilizar la
P instruccin SELECT
S
para recuperar los campos
_
S necesarios, en ningn
caso I para obtener datos
S
T adicionales.
E
M
A
.
S
I
_
P
A
I Cuando se elabore
una S consulta con varias
W
H tablas relacionadas,
stas E debern estar
R
E conectadas mediante
instrucciones JOIN
P
A
(INNER JOIN, RIGHT
ISELE JOIN, LEFT
CT S JOIN). As
_
PA.PAIS_VNOM tambin, es
BRE AS I
P
NOMBRE_PAIS, preciso usar un
A R
alias IE.REG para identificar
cada SI_VNO tabla,
IMBRE
D
especificando
AS
ese NOMB dato en cada
=RE_R campo.
EGION
@FROM
V
PS_SISTEMA.SI
_PAIS PA_
IINNER
JOIN D
_
PS_SISTEMA.SI
_REGIONPRE
AON
I
PA.PAIS_IPAISI
D= S
Fecha de Actualizacin: 30/05/2017 Versin: 2.0
RE.REGI_IPAISI
Preparado por: rea de Proyectos de TI - DGC D Pgina : 12 de 16

WHERE
PA.PAIS_CACTI
VO =
@V_ACTIVO
S
ELECT
PERS_IPER
SONAID,
PERS_VAP
EPAT,

P
E
R
S
_
V
A
P
No se E recomienda usar
M
AT
frecuentemente la
clusula , LIKE. Slo si es
P necesario,
SELECT
E
US.USUA_VALIAS,
R emplearla;
US.USUA_VAPELLID
S
OS, pero, usando el
_
V comodn al
US.USUA_VNOMBRE
S
N final de la
O
FROMM cadena.
PS_SEGURIDAD.SE_
B
USUARIO US R
WHERE
E
EXISTS (SELECT
S
USRO_IUSUARIOROL
ID FROM
PN_REGIS FR
TRO.RE_P O
ERSONA M
PS
WHERE _S
PERS_VAP EG
EPAT LIKE UR Utilizar la
'SANCHEZ ID clusula
%' AD
.S EXISTS en
E_ lugar de la
US
UA clusula IN, ya
RI que la clusula
O
R EXISTS es
OL ligeramente
W ms rpida.
HE
RE
US
R
O_
IR
OL
C
O
NF
IG
UR
AC
IO
NI
D
=
@
V_
ID
_R
OL
AND Evitar el uso de
USRO_IUSUARIOID =
US.USUA_IUSUARIOI las funciones
D ROUND,
AND USRO_CACTIVO LOWER,
= @V_ACTIVO) UPPER,
AND
US.USUA_CACTIVO = SUBSTRING
@V_ACTIVO
Fecha de Actualizacin: 30/05/2017 Versin: 2.0
Preparado por: rea de Proyectos de TI - DGC Pgina : 13 de 16
S
ELECT
COUNT
(FERI_DFE
CHA) AS
TOTAL

FROM
como PS_SISTEM condiciones de la
A.SI_FERIA
clusula DO WHERE.

WHERE
Evitar el FERI_VANI uso de la funcin
O= COUNT(*), en su lugar
@V_ANIO
utilizar A
N
D
F
E
RI
_
C
A
C
TI
V
O
=
@
V
_
A
C
TI
V
O

COUNT(NOMBRE_CAMPO).

Incluir en la construccin del cdigo, la instruccin SET NOCOUNT ON, para evitar visualizar los
mensajes de conteo de nmero de filas afectadas por una sentencia SQL, de esa forma se
mejora el rendimiento del servidor. Cuando SET NOCOUNT es OFF s se devuelve ese nmero.

Fecha de Actualizacin: 30/05/2017 Versin: 2.0


Preparado por: rea de Proyectos de TI - DGC Pgina : 14 de 16
-- SET NOCOUNT
TO ON TO NO LONGER
DISPLAY THE COUNT
MESSAGE.
SET NOCOUNT
ON;
GO

SELECT
FERI_DFECHA
FROM
PS_SISTEMA.SI_FERIADO
WHERE
FERI_VANIO = @V_ANIO
AND FERI_CACTIVO =
@V_ACTIVO

GO
-- RESET SET
NOCOUNT TO OFF
SET NOCOUNT
OFF;
GO No usar
ejecuciones de cdigo dinmico, ya que de ese modo no sabemos si la sintaxis es correcta hasta
cuando se realice la ejecucin. Adems, esforzamos mucho el servidor en trminos de tiempo y
recursos en la creacin de planes de ejecucin.

No componer SQL por concatenacin, en su lugar usar procedimientos almacenados


parametrizados.

Utilizar tablas temporales slo cuando sea necesario. Los procedimientos almacenados suelen
usar un plan de ejecucin, almacenado en cach, para aumentar el rendimiento, cuando se
utilizan tablas temporales se requiere hacer la compilacin en cada ejecucin y no se puede
aprovechar el plan de ejecucin.

Para facilitar la
BEGIN
TRY lectura, indentar y
ordenar el cdigo
{SENTENCIAS
SQL O BLOQUE fuente, construirlo
en DE maysculas.
SENTENCIAS}
END
TRY Incluir TRY y
BEGIN CATCH para el
CATCH control de errores.
Si {SENTENCIAS
se produce un error
en SQL O BLOQUE el bloque TRY, el
DE control se transfiere
SENTENCIAS}
a END un bloque CATCH,
de CATCH la siguiente forma:

Fecha de Actualizacin: 30/05/2017 Versin: 2.0


Preparado por: rea de Proyectos de TI - DGC Pgina : 15 de 16
Evitar el uso de hard code, en su lugar utilizar variables que sean del mismo tipo que la columna
de la tabla, esto permite eliminar las conversiones implcitas y mejora la legibilidad del cdigo.

Los procedimientos almacenados por mantenimiento a tablas deben crearse en forma separada,
de forma tal que no se utilice un mismo procedimiento para insercin y actualizacin de datos, por
ejemplo.

7.2 Resolucin de nombres


Cuando ejecutamos una consulta, el servidor SQL realiza un proceso llamado resolucin de nombres
para identificar los objetos referidos en ella. Si identificamos a cada objeto por su nombre completo,
SQL sabr determinar inmediatamente a qu objeto nos referimos y si ste existe o no. Por el
contrario, si < solamente especificamos
su nombre, NO el motor de base de datos
tendr que MB determinar a qu objeto
RE
nos referimos, para ello
_E
utilizar el SQ esquema definido por
defecto del UE usuario conectado, o, el
esquema MA dbo. En tal sentido, se
>.
deber <N referirse a los objetos de la
base de O datos por el nombre del
esquema y MB el nombre del objeto
separados RE por un punto. De la
_O
siguiente BJ manera:
ET
O>

7.3 Reglas de negocio


Las reglas de negocio deben encontrarse en la base de datos, en ningn caso se deben trabajar
ejecuciones de cdigo elaboradas en la misma aplicacin. El usuario de base de datos para la
aplicacin tendr permiso de ejecucin de procedimientos ms que para acceder a tablas.

Fecha de Actualizacin: 30/05/2017 Versin: 2.0


Preparado por: rea de Proyectos de TI - DGC Pgina : 16 de 16

You might also like