Professional Documents
Culture Documents
Versin 8.2.0
Abril 2015
Documento:
Web
Elaborado Por:
tem
Nombre
Revisin
Cargo
Fecha
Administrador de Bases de
Datos
Director de la Oficina de
21.04.2015
27.04.2015
Tecnologa de la Informacin
Director General de la Oficina
Aprobacin
General de Tecnologas de la
29.04.2015
Informacin
mbito:
Uso Interno
Versin:
8.2.0
2 / 35
Documento:
Web
Elaborado Por:
Historial de Versiones
Versin
1.0
Versin Inicial
Fecha
cambio
Modificado por
28/06/2012
Gestor de Sistemas
01/07/2012
Jess Vsquez
23/08/2012
Iamys
Aprobado
por
Jefe
Sistemas
nomenclatura para el
modelo fsico de datos.
Estndares de nombres de
3.0
Rodrguez- DBA
Florido
12/09/2012
propiedad extendida y
Iamys
Rodrguez- DBA
Florido
otras modificaciones
Scripts para buscar
5.0
20/09/2012
Iamys
Rodrguez- DBA
Florido
diccionario
Detalla la documentacin
6.0
26/12/2014
Iamys
Rodriguez- DBA
Florido
BD
7.0
Agregando buenas
30/12/2014
prcticas
8.0
Definiendo explcitamente
22/01/2015
Agregando ejemplos
Uso Interno
Iamys
Rodriguez- DBA
Florido
30/01/2015
detallados en el captulo 4
mbito:
Rodriguez- DBA
Florido
documentacin a entregar
8.1
Iamys
Iamys
Rodriguez- DBA
Florido
Versin:
8.2.0
de
3 / 35
Documento:
Web
Elaborado Por:
Tabla de Contenido
mbito:
Uso Interno
Versin:
8.2.0
4 / 35
Documento:
Web
Elaborado Por:
2.
3.
4.
5.
6.
mbito:
Uso Interno
Versin:
8.2.0
5 / 35
Documento:
Web
Elaborado Por:
Convenciones generales
Mantener nombres cortos y descriptivos, usando abreviaturas de mximo 4 5
caracteres en caso de que se requiera.
Ejemplo:
En lugar de usar
DAT_EXPEDIENTE_CAS_RESOLUCION_CAS
Mejor usar
DAT_EXP_CAS_RESOL
Mantener nombres de objetos nicos, por ejemplo evitar crear la tabla ALMACEN y un
rol o vista con el mismo nombre.
Por defecto, no se aceptan espacios en blanco en medio de los identificadores; sin
embargo, su uso est permitido si se usan identificadores delimitados por comillas
dobles. En el presente estndar, no se permiten los espacios en blanco como parte de un
identificador.
Para la definicin de nombre de objetos de base de datos de acuerdo al caso se usar el
caracter underscore _ para separar las palabras_del_nombre.
Un campo numrico que sea identificador de llave se debe llamar id_xxx, mientras que
a los campos llaves alfanumricos se les debe nombre como Codxxx
El nombre de un campo campos (llaves forneas) que se refiera a una BD diferente a la
actual (en otro servidor o en el mismo) deben mantener su nombre igual en lo posible.
mbito:
Uso Interno
Versin:
8.2.0
6 / 35
Documento:
Web
Elaborado Por:
Nomenclatura:
El nombre de la base de datos debe estar en maysculas y comenzar con el prefijo DB_
Ejemplo:
Base de Datos
DB_COMALM
Archivo MDF
DB_COMALM_Data
Archivo LDF
DB_COMALM_Log
El nombre de la base de datos debe ser igual al nombre de la aplicacin a la que sirve, de
manera que sea ms facil a priori identificar a que aplicacin pertenece una base de datos
determinada
Notacin de Tablas
Nomenclatura:
Las tablas identifican una entidad del sistema con un nombre completo.
Si la entidad o proceso que genera la tabla tienen ms de una palabra se deber colocar
cada una de ellas en singular y deben ser separadas por un "_".
Uso Interno
Versin:
8.2.0
7 / 35
Documento:
Web
Elaborado Por:
TMP_XXX
Se usarn prefijos de 3 letras para identificar los tipos de tablas. Esto facilita la administracin de la Base
de Datos, ya que es ms fcil separar x el prefijo cuales tablas son codificadores y cuales son tablas
transaccionales.
DAT_
Tablas transaccionales
TIPO_
CAT_
MAE_
SEG_
ZZZ_
Tablas que por se creen para sacar algn resultado temporal pero que despus pueden ser
borradas de la Base de Datos por el Administrador
RES_
IMP_
TMP_
Tablas temporales
Notacin de Campos
Nomenclatura:
Los nombres de los campos deben ser descriptivos, en singular y en minsculas.
Ejemplo:
id_empleado
nombre
documento
mbito:
Los campos llave q sean numricos, ya sean tipo IDENTITY o no, tendrn el prefijo id_
Uso Interno
Versin:
8.2.0
8 / 35
Documento:
Web
Elaborado Por:
Cuando un campo se utiliza en varias tablas, por ejemplo como llave fornea, dicho
campo debe tener exactamente el mismo nombre en todas las tablas donde se use. Esto
posibilita que sea ms fcil reconocer las relaciones de dependencia entre las tablas
incluso cuando no estn explcitamente declaradas. Por ejemplo entre estas 2 tablas
hay una relacin no explcita de 1 a muchos:
TIPO_COLEGIO
ESTUDIANTE
id_colegio
id_alumno
nombre_colegio
id_colegio
edad
DAT_CAPITULOGRUPO
Tabla maestra:
id_capitulo
id_grupo
TIPO_GRUPO
o
id_grupo
Nombre_grupo
En caso que exista un campo que sea una llave fornea, que haga referencia a una Base de Datos
diferente a la Base de Datos actual, debe conservarse (en lo posible) el nombre del campo tal y
como aparece en la Base de Datos original.
mbito:
Uso Interno
Versin:
8.2.0
9 / 35
Documento:
Web
Elaborado Por:
Notacin de Constraints
Nomenclatura:
PK + Nombre de la tabla.
Ejemplo:
PK_PROVEEDOR
Nomenclatura:
FK_NombreTablaOrigen_NombreTablaReferenciada
Ejemplo:
FK_PROVEEDOR_ORDENCOMPRA
Indices Unique:
Nomenclatura:
UQ_NemnicoTabla_NombreUnique
Ejemplo:
UQ_CLIENTE_CODIGO_CLIENTE
Nomenclatura
IXX_ YYYY.
mbito:
Uso Interno
Versin:
8.2.0
10 / 35
Documento:
Web
Elaborado Por:
XX
YYY
Ejemplo:
IUQ_CODEMPLEADO
ICL_CCUSTODIA
(ndice Unique)
(ndice Clustered)
INC_CODDEPOSITANTE (NonClustered)
mbito:
Uso Interno
Versin:
8.2.0
11 / 35
Documento:
Web
Elaborado Por:
Los nombres de los Stored Procedures NO deben comenzar con sp, esto porque
generalmente el SQL piensa que son system procedures y los busca primero en la Base
de Datos master
SET NOCOUNT ON (elimina la notificacin del nro. de registros afectados por cada sentencia SQL lo cual
incrementa el performance.
Comentarios:
Fecha Creacin:
Fecha Modificacin:
Autor:
Versin:
Cambios Importantes
Maysculas y minsculas
Sentencias SQL
mbito:
Uso Interno
Versin:
8.2.0
12 / 35
Documento:
Web
Elaborado Por:
Ejemplo:
CREATE PROCEDURE p_EMPRESA_Add(
@CODEMPRESA int,
@RAZONSOCIAL varchar (50),
...)
AS
/***************************************
*Descripcin: Aade un registro a la tabla HUB
*Fecha Creacin: 19/02/2001
*Fecha Modificacin: 19/02/2001
*Parmetros:
@CODEMPRESA:
Cdigo de la empresa
*
@RAZONSOCIAL:
Razn Social de la Empresa
*
*Autor:
Juan Perez (14201)
*Versin: Final (Beta | Final)
*Cambios Importantes: Inclusin de la condicin se consulta
(15/01/2011)
******************************************/
<Declaracin de variables>
<Sentencias SQL>
Usarn el prefijo f_
almacenados.
Ejemplo:
*Autor:
Juan Perez (14201)
*Versin: Final (Beta | Final)
mbito:
Uso Interno
Versin:
8.2.0
13 / 35
Documento:
Web
Elaborado Por:
YYY
Ejemplo:
VW_CONSULTAR_PERSONA
Para el nombre de las Vistas utilizar verbos en Infinitivo,
Ejemplo:
VW_CONSULTAR_CUENTAS
Nota: La estructura de la vista debe ser similar a la del Stored Procedure.
Los usuarios nuevos que se creen dentro del SQL para acceder desde una aplicacin
seguirn el siguiente estndar de nomenclatura
usr_nombredelaBD
dvp_letradel nombreyapellido
mbito:
Uso Interno
Versin:
8.2.0
14 / 35
Documento:
Web
Elaborado Por:
Ejemplos:
usr_vup
dvp_jraygada
DAT_DEPOSITANTE
ORDER BY
NumeroDocumento
Utilizar el Tabulador para separar los campos de una condicin (en la medida de lo
posible)
Ejemplo.-
SELECT 'Codigo_segmentoSAB'
CodigoDepositante,
'CodigoSegmentoCONASEV'
'00' +SUBSTRING(NumeroRegistro,2,1),
'CodigoRetorno'
'0'
@numero_documento
@tipo_documento
@relacionador_correlativo
FROM
DAT_DEPOSITANTE
WHERE
numero_documento
AND
AND
tipo_documento
relacionador_correlativo
mbito:
Uso Interno
Versin:
8.2.0
15 / 35
Documento:
Web
Elaborado Por:
mbito:
Uso Interno
Versin:
8.2.0
16 / 35
Documento:
Web
Elaborado Por:
mbito:
Uso Interno
Versin:
8.2.0
17 / 35
Documento:
Web
Elaborado Por:
USE [NombredelaBDatos]
GO
/****** Object: StoredProcedure [dbo].[vercampos]
09/12/2012 12:08:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[vercampos]
@tabla as varchar(30)
AS
Script Date:
if @tabla IS NULL
mbito:
Uso Interno
Versin:
8.2.0
18 / 35
Documento:
Web
Elaborado Por:
begin
SELECT
[Tabla] = OBJECT_NAME(c.object_id),
[Columna] = c.name,
[Descripcion] = ex.value,
[Tipo]= t.name ,
[Tam]=c.max_length
FROM
sys.columns c
LEFT OUTER JOIN
sys.extended_properties ex
ON
ex.major_id = c.object_id
AND ex.minor_id = c.column_id
AND ex.name = 'MS_Description'
JOIN sys.types AS t ON c.user_type_id=t.user_type_id
WHERE
OBJECTPROPERTY(c.object_id, 'IsMsShipped')=0
ORDER
BY OBJECT_NAME(c.object_id), c.column_id
end
else
begin
SELECT
[Tabla] = OBJECT_NAME(c.object_id),
[Columna] = c.name,
[Descripcion] = ex.value,
[Tipo]= t.name ,
[Tam]=c.max_length
FROM
sys.columns c
LEFT OUTER JOIN
sys.extended_properties ex
ON
ex.major_id = c.object_id
AND ex.minor_id = c.column_id
AND ex.name = 'MS_Description'
JOIN sys.types AS t ON c.user_type_id=t.user_type_id
WHERE
OBJECTPROPERTY(c.object_id, 'IsMsShipped')=0
AND OBJECT_NAME(c.object_id) = @tabla
ORDER
BY OBJECT_NAME(c.object_id), c.column_id
end
mbito:
Uso Interno
Versin:
8.2.0
19 / 35
Documento:
Web
Elaborado Por:
Para agregar mediante SQL la Descripcion a un campo use la siguiente sentencia, cambiando los
parametros @value, @level0name (esquema), @level1name (nombre de la tabla), @level2name
(nombre del campo)
EXEC sp_dropextendedproperty
@name = 'MS_Description'
,@level0type = 'schema'
,@level0name = dbo
,@level1type = 'table'
,@level1name = 'NOMBRE_DE_LA_TABLA'
,@level2type = 'column'
,@level2name = 'nombre_del_campo';
A continuacin se detalla un query que permite visualizar todas las descripciones de campos que
contienen una cierta cadena de caracteres.
SELECT
[Tabla] = OBJECT_NAME(c.object_id),
[Columna] = c.name,
mbito:
Uso Interno
Versin:
8.2.0
20 / 35
Documento:
Web
Elaborado Por:
[Descripcion] = ex.value,
[Tipo]= t.name ,
[Tam]=c.max_length
FROM
sys.columns c
LEFT OUTER JOIN
sys.extended_properties ex
ON
ex.major_id = c.object_id
AND ex.minor_id = c.column_id
AND ex.name = 'MS_Description'
JOIN sys.types AS t ON c.user_type_id=t.user_type_id
WHERE
OBJECTPROPERTY(c.object_id, 'IsMsShipped')=0
and CAST(ex.value as varchar(300)) like '%CADENAQUEBUSCO%'
ORDER
BY OBJECT_NAME(c.object_id), c.column_id
A continuacin se detalla un query que permite visualizar todos los campos de todas las tablas de
la base de datos actual que contienen una cierta cadena de caracteres.
SELECT
[Tabla] = OBJECT_NAME(c.object_id),
[Columna] = c.name,
[Descripcion] = ex.value,
[Tipo]= t.name ,
[Tam]=c.max_length
FROM
sys.columns c
LEFT OUTER JOIN
sys.extended_properties ex
ON
ex.major_id = c.object_id
AND ex.minor_id = c.column_id
AND ex.name = 'MS_Description'
JOIN sys.types AS t ON c.user_type_id=t.user_type_id
WHERE
OBJECTPROPERTY(c.object_id, 'IsMsShipped')=0
AND c.name like '%CADENAQUEBUSCO%'
ORDER
BY OBJECT_NAME(c.object_id), c.column_id
mbito:
Uso Interno
Versin:
8.2.0
21 / 35
Documento:
Web
Elaborado Por:
Sentencias INSERT
Incluir siempre los nombres de los campos en una sentencia INSERT, por ejemplo esta
sentencia es la recomendada:
INSERT INTO mitabla (campo1, campo2, campo3)
SELECT campofuente, campofuente2, campofuente3
FROM tablaX
Mientras que esta otra sentencia, puede acarrear problemas cuando se creen nuevos
campos en la tabla mitabla.
INSERT INTO mitabla
SELECT campofuente, campofuente2, campofuente3
FROM tabla2
Evitar consultas que devuelvan demasiados registros, de manera que puedan retardar el
desempeo del servidor de BD. Por ejemplo si se hace una bsqueda de datos desde el ao
2004 al 2012, se podra restringir para que la bsqueda sea en un rango menor de aos
(mximo 2 aos).
Recordar que cuando se utilice una sentencia WHERE, el orden de los criterios de bsqueda
debe estar igual al orden del ndice de la tabla que se referencia.
Ejemplo:
Tabla DAT_ESCARGA
Indexado por: FECHA, ID
El orden en la sentencia where para esta tabla debe ser
WHERE fecha> 20120101 and id =100
mbito:
Uso Interno
Versin:
8.2.0
22 / 35
Documento:
Web
Elaborado Por:
Uso de cursores
Evitar en lo posible el uso de cursores, ya que consumen muchos recursos del servidor,
adems de hacer ms obscura la programacin, tratando de buscar soluciones en base a
cambios en el Diseo de la base de datos, y/o apoyndose en las sentencias siguientes:
PIVOT
RANK
DENSE_RANK
Control de transacciones
mbito:
Uso Interno
Versin:
8.2.0
23 / 35
Documento:
Web
Elaborado Por:
mbito:
Uso Interno
Versin:
8.2.0
24 / 35
Documento:
Web
Elaborado Por:
1. Modelo de datos
2. Diccionario de datos
mbito:
Uso Interno
Versin:
8.2.0
25 / 35
Documento:
Web
Elaborado Por:
Vistas
Procedimientos
Funciones
mbito:
Uso Interno
Versin:
8.2.0
26 / 35
Documento:
Web
Elaborado Por:
mbito:
Uso Interno
Versin:
8.2.0
27 / 35
Documento:
Web
Elaborado Por:
Este documento debe incluir tambin un detalle con los permisos de acceso que debe tener el (o
los) usuarios de bases de datos en esas otras bases de datos externas, ya sean de SELECT, INSERT,
UPDATE, permisos globales o en el sistema, etc. Vase a continuacin un ejemplo de cmo podra
ser esta documentacin, la imagen es referencial.
mbito:
Uso Interno
Versin:
8.2.0
28 / 35
Documento:
Web
Elaborado Por:
Todas las aplicaciones nuevas debern utilizar los Catlogos Generales de Datos que ya existen en
el Ministerio y que en la mayora de los casos se encuentran alojados en la base de datos
DB_GENERAL, por ejemplo:
mbito:
Maestro de Especies
Maestro de Embarcaciones
Maestro de Trabajadores
Maestro de Dependencias
Uso Interno
Versin:
8.2.0
29 / 35
Documento:
Web
Elaborado Por:
Solo se justifica utilizar una tabla propia de la aplicacin en los casos en que la data de Empresas
/ Personas, ya que podra darse el caso de que en nuestro Maestro no estuvieran todas las
empresas deseadas. En ese caso debe incluirse en la tabla Maestra propia de la aplicacin el campo
id_persona para los casos en que exista un registro relacionado en la base de datos
DB_GENERAL.dbo.PERSONA de manera que se pueda enlazar la mayor cantidad posible de datos
a las bases de datos ya existentes en otras aplicaciones.
Est terminantemente prohibido crear aplicaciones donde se use una codificacin propia para los
datos ya existentes en los Catlogos del Ministerio.
Por ejemplo a continuacin se muestran catlogos que sirven para todas las aplicaciones del
Ministerio
Tabla: ESPECIES que contiene la lista de especies marinas asignado a un cdigo
Tabla: UBIGEO, que contiene la versin actualizada de los DEPARTAMENTOS / PROVINCIAS /
DISTRITOS de todo el pas
Tabla: PERSONA que contiene el listado con todas las personas naturales y empresas que han hecho
algn trmite documentario en PRODUCE alguna vez.
Tabla: Padrn SUNAT
4. procesos adicionales
Deben documentarse de alguna manera los procesos adicionales relacionados a la base de datos,
como importacin / exportacin masiva de datos, proyectos de integracin SSIS, webservices,
etc. en caso de que los hubiera.
Por ejemplo en el caso de usar un servidor de aplicaciones Java (GlassFish / Tomcat / Weblogic )
debe describirse donde se puede encontrar el cdigo fuente, y el paquete (.jar) debe ser
configurable mediante un archivo aparte, de manera que no sea necesario recompilar en caso de
que se cambie la contrasea.
El uso del Glassfish qued descontinuado, o sea, ya no se usar para nuevas aplicaciones
mbito:
Uso Interno
Versin:
8.2.0
30 / 35
Documento:
Web
Elaborado Por:
mbito:
Uso Interno
Versin:
8.2.0
31 / 35
Documento:
Web
Elaborado Por:
Para los datos cuya informacin sea sensible, se recomienda incluir tablas de auditoria con sus
correspondientes triggers de UPDATE/DELETE/INSERT, aunque quizs sea necesario adems
realizar procesos dentro de la aplicacin para obtener datos especficos como la IP desde donde
se est conectando el usuario cuando se trata de una web.
Ejemplo de informacin sensible es cualquier dato que sea personal de los administrados o
tambin los datos que en caso de ser adulterados puedan redundar en procesos penales, por
ejemplo la concesin de permisos de pesca, multas, etc.
A continuacin un ejemplo de una tabla que contiene el listado de embarcaciones y las
autorizaciones de permisos de pesca, vase el nombre de la tabla y el nombre de la tabla de
auditoria:
CAT_EMBNAC
CAT_EMBNAC_AUDT
La tabla de auditora debern incluir los mismos campos de la tabla inicial y adicionalmente
campos donde se detalle la IP, usuario de la red, fecha/hora en que se realiz el cambio a la tabla
y que tipo de cambio fue INS/DEL/UPD.
Propuesta de Campos
1. Maquina IP desde donde se hizo la actualizacin (direcc_ip)
2. Usuario de Aplicacin (usuario)
3. Campo auto numrico (id_audt)
4. Fecha del Registro de Auditoria (fecha_audt)
5. Tipo de Operacin (tipo_operac): INS / UPD / DEL
mbito:
Uso Interno
Versin:
8.2.0
32 / 35
Documento:
Web
Elaborado Por:
mbito:
Uso Interno
Versin:
8.2.0
33 / 35
Documento:
Web
Elaborado Por:
Se espera que los desarrolladores (ya sean empleados del Ministerio o proveedores externos)
entreguen las bases de datos que pasarn al ambiente de Pruebas y a Produccin en un uno o
varios archivos de scripts con extensin SLQ.
Los archivos deben estar numerados segn la secuencia en que deben ejecutarse.
Ejemplo 1:
Para el pase al ambiente de Pruebas de la aplicacin CERCAP, se le enviaron al DBA los siguientes
scripts que de ejecutar segn la secuencia numrica indicada:
mbito:
Uso Interno
Versin:
8.2.0
34 / 35
Documento:
Web
Elaborado Por:
Script01_CERCAP_CreacionTablasyVistas.sql
Script02_CERCAP_CreacionStoredProcedures.sql
Script03_CERCAP_CreacionFunciones.sql
Script04_CERCAP_CreacionOtros.sql
Ejemplo 2:
Pase al ambiente de Pruebas segunda iteracin, se le enva al DBA scripts para actualizacin de
algunos objetos de la base de datos, los scripts deben ejecutarse en la secuencia numrica
indicada:
Script01_CERCAP_LimpiarTablas.sql
Script02_CERCAP_CambiosTablasv01.sql
Script03_CERCAP_InsercionDatosCatalogo.sql
Los nombres de los scripts son referenciales, pero si debe incluirse la secuencia numrica, porque
es el orden en que se deben ejecutar.
mbito:
Uso Interno
Versin:
8.2.0
35 / 35