Estándar de Base de Datos
Estándar de Base de Datos
Estándar de Base de Datos
Software Factory
Versin 1.0
Pgina 2 de 18
Fecha:28/04/2014
Control de Cambios
Control de Cambios y Evolucin del Documento
Versin
Fecha de
Cambio
Fecha de actualizacin:
Creado por
19/02/14
Revisado Por
Pgs.
Pgina:
: 2 de 18
Software Factory
Versin 1.0
Pgina 3 de 18
Fecha:28/04/2014
Tabla de Contenidos
1.
INTRODUCCIN ............................................................................................... 4
2.
OBJETIVOS ...................................................................................................... 4
3.
4.
3.1
3.2
Tablas ..................................................................................................... 5
3.3
Campos ................................................................................................... 6
3.4
Constraints .............................................................................................. 7
3.5
Funciones ................................................................................................ 9
3.6
Triggers ................................................................................................... 9
3.7
3.8
Vistas .................................................................................................... 10
4.2
4.3
4.4
4.5
4.6
Fecha de actualizacin:
19/02/14
Pgina:
: 3 de 18
Software Factory
Versin 1.0
Pgina 4 de 18
Fecha:28/04/2014
1. Introduccin
A lo largo del ciclo de vida de desarrollo de un software es necesario asegurar la calidad
del mismo. Uno de los instrumentos que facilitan esta tarea es la adopcin de estndares
de base de datos.
Consideramos que la adopcin de estndares en el diseo de bases de datos, tiene
muchas ventajas, entre ellas:
Asegurar la legibilidad del modelo de datos, inclusive para personas que no estn
relacionadas con el ambiente informtico, en etapas de anlisis y diseo.
Facilitar la portabilidad entre motores de bases de datos, plataformas y aplicaciones.
Facilitar la tarea de los programadores en el desarrollo de sistemas.
Es este sentido que los objetos (tablas, campos, procedimientos almacenados, Triggers,
etc.) de base de datos a construirse deben cumplir con ciertas caractersticas que
detallaremos en el presente documento.
2. Objetivos
Establecer el estndar de Base de datos a ser aplicado en todos los desarrollos de
Sistemas de TechEra, buscando de esta forma que todos los sistemas que se
desarrollen cuenten con caractersticas similares a pesar que sean desarrollados para
empresas diferentes.
La redaccin de normas para garantizar el acoplamiento de elementos construidos
independientemente, garantizando la calidad de los objetos construidos y la seguridad
de funcionamiento y que cumplan con:
Simplificacin: Se trata de reducir los modelos existentes quedndonos nicamente
con nuestro estndar.
Unificacin: Para permitir la intercambiabilidad a nivel Empresarial.
Fecha de actualizacin:
19/02/14
Pgina:
: 4 de 18
Software Factory
Versin 1.0
Pgina 5 de 18
Fecha:28/04/2014
3. Estndar de Nomenclaturas
3.1 Nombre de Base de Datos
El nombre de la base de datos debe representar el propsito de la misma finalizando
con el sufijo BD. No necesariamente debe tener el nombre del sistema al que est
asociado.
Ejemplos:
- InventarioBD
- VentasBD
- SismeBD
3.2 Tablas
El nombre de las tablas deben cumplir las siguientes caractersticas:
Modelo (Modelo)
Familia (Familia)
En el caso de tablas detalle, sta debe llamarse como la tabla padre, seguida de
la palabra Detalle.
Ejemplo de nombres de tablas detalle:
Fecha de actualizacin:
Pgina:
: 5 de 18
Software Factory
Versin 1.0
Pgina 6 de 18
Fecha:28/04/2014
En caso de que alguna tabla se relacione especficamente con otra, esta relacin
debe quedar expresada en el nombre y separada con un guin abajo (_).
Ejemplo de nombre de tablas de relacin:
Los nombres de las tablas deben ser entendibles y fcil de relacionar con el
objeto al que identifican.
COMPRAS.Uit
RRHH.Empleado
AnioNacionalidad
Cotizacion.
3.3 Campos
El nombre no debe abreviarse, salvo por algn caso particular, como por ejemplo
que el nombre sea demasiado grande.
Fecha de actualizacin:
19/02/14
Pgina:
: 6 de 18
Versin 1.0
Pgina 7 de 18
Fecha:28/04/2014
Software Factory
Si por alguna razn es necesario separar las palabras del nombre del campo,
deber hacerse a travs de un guin bajo (_).
Los campos de tipo booleano deben escribirse con una palabra que tenga un
significado verdadero o falso o en forma de pregunta. Por ejemplo no se debe
usar la palabra estado en un campo booleano.
Ejemplos de campos booleanos:
Para las tablas que requieran campos de auditora se deben considerar los
siguientes
campos:
UsuarioCreacion,
UsuarioEdicion,
FechaCreacion,
FechaEdicion.
Ejemplos de campos de auditora de la tabla Venta:
-
Vent_UsuarioEdicion
Vent_FechaEdicion
3.4 Constraints
Los constraints son las limitaciones o restricciones dadas a los atributos o campos de
una tabla. Los ms comunes son: asignar a un campo o atributo la restriccin de ser
llave primaria, llave fornea (que proviene de otra tabla relacionada), que el campo no
sea nulo, que el campo sea nico, etc.
a. Llave Primaria
Cuando la llave primaria es un solo campo la sintaxis debe ser la siguiente:
Fecha de actualizacin:
19/02/14
Pgina:
: 7 de 18
Software Factory
Versin 1.0
Pgina 8 de 18
Fecha:28/04/2014
TipoConstraint_NombreTabla
Donde:
NombreTabla: Nombre de la tabla a la cual es asignado el constraint.
TipoConstraint: PK (primarykey)
Ejemplo:
-
PK_Area
Ejemplos:
-
PK_Provincia_Departamento
c. ndices
Ejemplos:
Fecha de actualizacin:
Venta_FechaVenta_1
Almacen_Stock_2
19/02/14
Pgina:
: 8 de 18
Versin 1.0
Pgina 9 de 18
Fecha:28/04/2014
Software Factory
3.5 Funciones
El nombre de las funciones debe tener la siguiente sintaxis:
UFN_NombreFuncion
Dnde:
UFN: indica que el objeto es una funcin. Acrnimo de user function.
NombreFuncion: es el nombre de la funcin en Pascal Casing.
Ejemplos:
-
UFN_CalcularImpuesto
UFN_DescripcionMes
3.6 Triggers
El nombre de los triggers debe tener la siguiente sintaxis:
TRG_NombreTabla_NNN
Donde:
TRG: indica que el objeto es un trigger. Acrnimo de Trigger.
NombreTabla: es el nombre de la tabla donde se cre el trigger.
NNN: indica que tipo de trigger (INS: Insert, UPD: Update, DEL: Delete).
Ejemplos:
-
TRG_Compra_INS
TRG_Producto_DEL
Fecha de actualizacin:
19/02/14
Pgina:
: 9 de 18
Software Factory
Versin 1.0
Pgina 10 de 18
Fecha:28/04/2014
Ejemplos:
-
USP_ Programacion_INS
USP_ Producto_SEL
USP_ Inventario_RPT
En los casos que el procedimiento almacenado realiza una accin especfica que no
necesariamente est asociada a las operaciones bsicas de una tabla se usar la
sintaxis:
USP_NombreProcedimientoAlmacenado
Ejemplos:
-
USP_GenerarConsolidado
USP_ProcesarCostos
3.8 Vistas
Los nombres de las vistas siguen las mismas convenciones que los nombres de las
tablas. Se recomienda utilizar el prefijo VW.
Ejemplos:
-
Fecha de actualizacin:
VW_Alumnos
19/02/14
Pgina:
: 10 de 18
Software Factory
Versin 1.0
Pgina 11 de 18
Fecha:28/04/2014
4. Estndar de Diseo
En ste apartado se van explicar las principales consideraciones para el diseo de base
de datos, estructura de codificacin del transact-SQL y buenas prcticas.
Ejemplo de ejecucin:
Ejemplo:
---------------------------------------------------------------Autor: Juan Perez
-Fecha Creacin: 20/04/2013
-Descripcin: Consulta de Trabajadores por Area
---------------------------------------------------------------- Parmetros de Entrada
-@Area_Codigo char(2): Cdigo del rea del trabajador
-- Parmetros de Salida
-Listado de Trabajadores
---------------------------------------------------------------- Modificado por:
-- Fecha Modificacin:
---------------------------------------------------------------- Ejm. ejecucin: EXEC USP_Trabajador_LIS_PorArea '01'
---------------------------------------------------------------
Fecha de actualizacin:
19/02/14
Pgina:
: 11 de 18
Software Factory
Versin 1.0
Pgina 12 de 18
Fecha:28/04/2014
Todas las tablas creadas deben tener llave primaria, de preferencia deben ser un
nmero entero automtico y en lo posible que dicha llave primaria est
conformada por una nica columna.
Se deben definir correctamente los tipos de datos que se van a almacenar. Cabe
mencionar que de preferencia no se deben utilizar las columnas del tipo text o
ntext, varbinary, etc.
Ejemplos de tipo de datos:
-
Asimismo puede hacer uso del comando WITH para la creacin de tablas en
memoria. Recuerde que siempre antes de iniciar el comando WITH debe existir
Fecha de actualizacin:
19/02/14
Pgina:
: 12 de 18
Software Factory
Versin 1.0
Pgina 13 de 18
Fecha:28/04/2014
Por ejemplo:
;WITH TBL_CREDITOS_CAMPANIA AS (
SELECT NRO_CREDITO,
COD_CLIENTE,
MONTO
FROM PR.PR_CREDITOS (NOLOCK)
WHERE COD_CAMPANIA = 001
AND IND_ESTADO = A
)
SELECT NRO_CREDITO,
COD_CLIENTE,
MONTO
FROM TBL_CREDITOS_CAMPANIA
SELECT NRO_CREDITO,
COD_CLIENTE,
MONTO
INTO ##TBL_CREDITOS_CAMPANIA
FROM PR.PR_CREDITOS (NOLOCK)
WHERE COD_CAMPANIA = 001
AND IND_ESTADO = A
Fecha de actualizacin:
19/02/14
Pgina:
: 13 de 18
Software Factory
Versin 1.0
Pgina 14 de 18
Fecha:28/04/2014
Por ejemplo:
IF OBJECT_ID(TEMPDB..##TABLA_TEMPORAL) IS NOT NULL
DROP TABLE ##TABLA_TEMPORAL
END
GO
El nombre de los parmetros deben ser iguales al nombre de los campos de las
tablas que va a manipular.
Por ejemplo:
Se tiene la siguiente tabla:
Fecha de actualizacin:
19/02/14
Pgina:
: 14 de 18
Versin 1.0
Pgina 15 de 18
Fecha:28/04/2014
Software Factory
Por ejemplo:
SELECT
Cli_Codigo,
Cli_Nombre ,
Cli_ApellidoPaterno,
Cli_ApellidoMaterno,
Cli_Edad
FROM
CLIENTE (NOLOCK)
ORDER BY
Cli_ApellidoPaterno
Utilizar el Tabulador para separar los campos de una condicin indentando el
cdigo para que sea siempre claro.
Todas las consultas deben contener el hint (NOLOCK) a un lado del nombre de la
tabla que se est consultando. A excepcin de cuando las circunstancias
ameriten lo contrario.
Fecha de actualizacin:
19/02/14
Pgina:
: 15 de 18
Software Factory
Versin 1.0
Pgina 16 de 18
Fecha:28/04/2014
@LCH_COD_SUARIO VARCHAR(15),
@LDC_TIPO_CAMBIO DECIMAL(16,8),
@LI_NRO_CUOTAS INT, ...
@LCH_COD_SUARIO = 'EDIEZ',
@LDC_TIPO_CAMBIO = 25.0001,
@LI_NRO_CUOTAS = 10,
Fecha de actualizacin:
19/02/14
Pgina:
: 16 de 18
Software Factory
Versin 1.0
Pgina 17 de 18
Fecha:28/04/2014
Por ejemplo:
Mala prctica
SELECT
Nro_Credito
Cod_cliente,
Nombre = (SELECT nombre FROM CLIENTE WHERE
Cod_cliente = CREDITO.Cod_Cliente),
Direccion_Casa = (SELECT direccion FROM
DIRECCION_CLIENTE
WHERE Cod_cliente = CREDITO.Cod_Cliente)
AND TipoDireccion = C
FROM CREDITO (NOLOCK)
La consulta correcta sera:
SELECT
A.Nro_Credito
A.Cod_cliente,
B.Nombre,
C.Direccion
FROM CREDITO A (NOLOCK)
INNER JOIN CLIENTE B (NOLOCK)
ON A.cod_cliente = B.cod_cliente
INNER JOIN DIRECCION_CLIENTE C (NOLOCK)
ON A.cod_cliente = C.cod_cliente
AND C = C.TipoDireccion
Cuando se desee consultar ms de una tabla siempre se deben utilizar alias para
facilitar la escritura de consulta. Todas las columnas deben tener el alias
respectivo.
Fecha de actualizacin:
19/02/14
Pgina:
: 17 de 18
Software Factory
Responsable/Cargo
Fecha de actualizacin:
19/02/14
Versin 1.0
Pgina 18 de 18
Fecha:28/04/2014
Firma
Fecha
Pgina:
: 18 de 18