Professional Documents
Culture Documents
CONSULAR SGIC
OCTUBRE 2014
Versin 2.0
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
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:
4 Referencia
Documento de Estndares y Buenas Prcticas para el desarrollo de Software, versin 1.0
5 Nomenclatura
BD_<NOMBRE_DE_LA_BASE_DE_DATOS>
Ejemplo: BD_SGAC
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
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:
<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:
Se verificar que las columnas que formen parte de una clave fornea tengan el mismo tipo de dato
que la tabla principal.
5.8 Disparadores
Los nombres debern estar en maysculas y la nomenclatura utilizar la siguiente forma:
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
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:
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.
1. Nombre de la tabla
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])
o HISTORIAL DE MODIFICACIONES
Crear una entrada por cada modificacin que se realice sobre el procedimiento.
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
-- 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
-- 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
BEGIN TRANSACTION
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
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.
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.
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:
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.