Вы находитесь на странице: 1из 7

Estndares de Calidad para Bases de Datos SQL Server u Oracle

1. Base de Datos

Nomenclatura: Debe estar relacionado con el aplicativo.

Por ejemplo: PubBoletinOficial.

El nombre fsico de la base de datos debe corresponder al nombre de la


aplicacin.

Por ejemplo, la aplicacin Publicadora del Boletn Oficial tiene como nombre
PubBoletinOficial, por lo cual, los nombres fsicos correspondientes son:

Archivo MDF: PubBoletinOficial _Data


Archivo LDF: PubBoletinOficial _Log

2. Definicin de variables, parmetros y tipos de datos:

Aplica a:

Stored procedures
Triggers

Nomenclatura: @xxxYYYY

xxx : Identificador del tipo de dato


YYYY: Nombre de la Variable

Ejemplo: chrCODFACT, vchDIRECCION

Tipo de Dato SQL Server Identificador


Bit bit
Int int
Smallint smi
Tinyint tni
Decimal dec
Numeric num
Money mny
Smallmoney smm
Float flt
Real rea
Datetime dtm
Smalldatetime sdt
Cursor cur
Timestamp tst
Uniqueidentifier uid
Char chr
Varchar vch
Text txt
Nchar nch
Nvarchar nvc
Ntext ntx
Binary bin
Varbinary vbn
Image img
3. Tablas

Nomenclatura: NombreTabla

El nombre de la tabla debe ser descriptivo, en singular y en


maysculas.
El nombre de la tabla debe identificar claramente a la entidad del
sistema con un nombre completo.
El nombre de la tabla debe comenzar con un prefijo de tres (mximo
4) letras nemnico de la aplicacin.
Una tabla hija debe llevar el nombre de la tabla padre hasta un mximo
de un nivel.
Las palabras deben ser separadas por un "_".

Ejemplo:
MAT_ORDEN
MAT_ORDEN_DETALLE

Nota: Cuando se creen tablas temporales aadir el prefijo TEMP_XXXX para


reconocerlas.

Ejemplo:
MAT_PRODUCTO_TEMP

4.1. Campos

Nomenclatura: Nombrecampo

Los nombres de los campos deben ser descriptivos.


Utilizar el formato siguiente xxxYyyyyy, siendo xxx el prefijo del tipo
de dato (seguir la tabla que est en la definicin de variables) y
Yyyyyyy el nombre descriptivo.
Se deben usar maysculas y minsculas para diferenciar los grupos
de identificacin en el nombre.

Ejemplo:
CREATE TABLE MAT_PERSONANATURAL
(
numDNI numeric (8, 0) NOT NULL,
vchNombrePersona varchar (100) NULL,
)

4. Constraints SQL Server

Nomenclatura Primary Key:


PK_NombreTabla

Nomenclatura Foreign Key:


FK_NombreTablaOrigen_NombreTablaReferenciada_nn

Donde: nn indica un nmero secuencial en caso de existir varias


relaciones entre estas mismas tablas.

Unique: UQ_NemnicoTabla_NombreUnique_nn

Donde: nn indica un nmero secuencial en caso de existir varias


relaciones entre estas mismas tablas
Default: DF_NemnicoTabla_NombreColumna

Check: CK_NemonicoTabla_NombreCheck_nn

Donde: nn indica un nmero secuencial en caso de existir varias


restricciones del mismo tipo.

Ejemplo:

PK_CLIENTE
FK_FACTURA_CLIENTE
UQ_CLIENTE_CODIGO_CLIENTE
DF_CLIENTE_FECHA
CK_CLIENTE_CODIGO_CLIENTE

5. Indices SQL Server

Nomenclatura: I_Tipo de ndice_NombreIndice

Tipo de ndice: Unique, Clustered, NonClustered

Ejemplo:
IUQ_CodAlumno (ndice Unique)
ICL_CTarea (ndice Clustered)
INCL_CodComprobante (ndice NonClustered)

6. Triggers SQL Server

Nomenclatura: TR + [Tipo de Trigger] + [Accin de Disparo] + _ + nombre de


Tabla

Tipo:
A: After
I: Instead of

Accin:
I: Insert
U: Update
D: Delete

Ejemplos:

TRAD_NOMBRETABLA (Cuando se realiza una eliminacin


en la tabla).

TRAU_NOMBRETABLA (Cuando se realiza una actualizacin


en la tabla).

TRAI_NOMBRETABLA (Cuando se realiza una insercin en la


tabla).

TRIU_NOMBRETABLA (Ocurre en vez de una sentencia de


actualizacin en la tabla).

7. Store Procedures

Nomenclatura:
(I, U, D, S, G) _ nombre del procedimiento almacenado
Siendo:
I: Insert.
U: Update.
D: Delete.
S: Select.
G: General (Cualquier combinacin de los tipos anteriores u otro
tipo de procesos).

Por ejemplo: I_InsertarEmpleado.


(Inserta un registro a la tabla)

Nota:
Los nombres de los Stored Procedures no necesariamente deben
comenzar con SP_, esto porque generalmente el SQL piensa que son
system procedures y los busca primero en la Base de Datos master
para el caso de SQL Server.
SET NOCOUNT ON para el caso de SQL Server elimina la notificacin
del nro. de registros afectados por cada sentencia SQL lo cual
incrementa la performance.
Obligatoriamente todos los sistemas a desarrollarse debern invocar
STORED PROCEDURES.
No se debern poner sentencias SQL en el cliente. Esto genera una gran
baja en la performance de los sistemas.
En el caso de los STORED PROCEDURES que son exclusivamente
para mostrar informacin se debern evitar usar lgicas como la
siguiente :

Create Proc S_LISTARCLIENTES


@X tinyint,
@Y char(3) as
if @X=1
Select * from tabla
Else
Select * from tabla where codigo = @Y

No es ptimo crear STORED PROCEDURES de ese tipo dado que el


SQL guarda una estadstica de ejecucin cada vez que se use un
procedimiento, esto quiere decir, que si la primera vez se le pas el
parmetro @X = 1, el SQL no emplear ndices para el SELECT, si se
le pasa el @X = 2 en el cual deber leer un cdigo en particular el SQL
tampoco usar ndices debido a las estadsticas guardadas en la
ejecucin anterior.

En caso sea necesario trabajar con este tipo de STORED


PROCEDURES, debern ser creados de la siguiente forma :

Create Proc S_LISTARCLIENTES


@X tinyint,
@Y char(3)
WITH RECOMPILE
as
if @X=1
Select * from tabla
Else
Select * from tabla where codigo = @Y

No se deben usar procedimientos encriptados.


Todo aplicativo deber evitar en la medida de lo posible el uso de
cursores definidos en SQL SERVER u Oracle, dado que stos consumen
muchos recursos.
En la mayora de los casos se pueden transformar los cursores a
Transact-SQL o PL/SQL
Las vistas debern ser utilizadas para simplificar los queries.
Los tipos de datos VARCHAR se utilizarn slo para longitudes mayores
a 20 caracteres, normalmente aplicadas a campos de descripcin,
nombres, etc., en el cual no se sabe el tamao que ocupa un texto
determinado.
En el caso de tener columnas cuyo valor numrico no va a exceder de
255 se deber emplear el tipo de dato TINYINT en el caso de SQL
Server.

8.1. Estructura del Store Procedure

Identificador, nombre de stored procedure, y parmetros


Comentarios:
Descripcin: funcionalidad del stored procedure
Descripcin de Parmetros de entrada y salida
Autor:
Fecha Modificacin:
Versin:
Cambios Importantes
Declaracin Variables locales
Maysculas y minsculas
Sentencias SQL
Palabras del lenguaje SQL, y funciones de sistema en
MAYUSCULAS, columnas y otras variables en Maysculas.
Sentencias legibles e indentadas (cada clusula SQL en una lnea
nueva)

Ejemplo:

CREATE PROCEDURE I_AgregarEmpresa(


@intCODEMPRESA int,
@vchRAZONSOCIAL varchar(50))
AS
/***************************************
*Descripcion: Aade un registro a la tabla HUB
*Fecha Crea: 19/02/2016
*Fecha Mod: 19/02/2016
*Parmetros: @CODEMPRESA: Cdigo de la empresa
* @RAZONSOCIAL: Razn Social de la Empresa
*
*Autor: Charlie Brown
*Versin: Final (Beta|Final)
*Cambios Importantes: Inclusin de la condicin se consulta (14/01/2017)
*/**************************************
<Declaracin de variables>
<Sentencias SQL>

8. Vistas

Nomenclatura: V_Nombre de la Vista

Ejemplo:
V_Consulta_Cursos
Nota: La estructura de la vista debe ser similar a la del stored procedure.

9. Programacin

Utilizar maysculas para las sentencias propias del SQL.

Ejemplo:

SELECT NumeroDocumento,
TipoDocumento,
ApellidoPaterno,
ApellidoMaterno,
Nombre
FROM CLIENTE
ORDER BY NumeroDocumento

Utilizar el Tabulador para separar los campos de una condicin (en la


medida de lo posible)

Ejemplo:

SELECT
'CodigoSegmentoPBO' = CodigoCliente,
'CodigoRetorno' = '0'
FROM CLIENTE
WHERE
NumeroDocumento = @chrNumeroDocumento
AND TipoDocumento = @chrTipoDocumento
AND RelacionadorCorrelativo =
@chrRelacionadorCorrelativo

Indentar el Cdigo para conservar un orden

Ejemplo:

CREATE PROCEDURE BUSCARCLIENTE


( @vchVariable VARCHAR (255),
@vchTipo VARCHAR (1) =""
)
AS
BEGIN
IF LTRIM (RTRIM (@vchVariable)) <> "*"
IF @vchTipo = ""
SELECT NOMBRE = name,
TIPO = type,
CREACION = crdate
FROM sysobjects
WHERE name LIKE '%'+ @vchVariable + '%'
ORDER BY type, name
ELSE
SELECT NOMBRE = name,
TIPO = type,
CREACION = crdate
FROM sysobjects
WHERE name LIKE '%'+ @vchVariable + '%'
AND type = RTRIM (LTRIM (@vchTipo))
ORDER BY name
END

10. Funciones

Nomenclatura:
F _ nombre de la funcin

Por ejemplo: F_ObtenerFecha

Вам также может понравиться