Está en la página 1de 8

Estndares de Desarrollo para SQL

Server

Fecha: 22/02/2016

Estndares de Desarrollo para SQL Server

Indice
1. Objetivos:............................................................................
2. Estndar de Configuracin de Base de Datos:........................
3. Base de Datos:.....................................................................
4. Definicin de variables, parmetros y tipos de datos:............
5. Tablas:.................................................................................
5.1. Campos:............................................................................
6. Stored Procedures:..............................................................
7.
Vistas:..............................................................................
8.
Programacin:...................................................................

Versin 1.0

Pgina 2 de 8

Fecha: 22/02/2016

Estndares de Desarrollo para SQL Server

Estndares
SERVER

1.

2.

de

Programacin

SQL

Objetivos:
Estandarizar la nomenclatura de los objetos de base de datos y
estructura de codificacin con el lenguaje SQL Transact.

Estndar de Configuracin de Base de Datos:

Los Character Set Code Page son grupos de letras, dgitos y


smbolos utilizados por el motor de Base de Datos para representar la
informacin, cada Character Set comprende 256 caracteres divididos en 2
grupos, los primeros 128 son los mismos para todos los Character Set, stos
son los caracteres ms comunes. Los 128 caracteres restantes que
conforman el segundo grupo, son conocidos como caracteres extendidos los
cuales difieren de Set a Set. En este grupo se encuentran los caracteres
especiales y los smbolos utilizados por los distintos idiomas y que sern
mas convenientes o una u otra regin del Mundo.
El Code page 1252 (ISO character set) es el default para Microsoft, es
tambin conocido como el ISO 8859-1,Latin 1 o ANSI Character Set. Este es
compatible con los caracteres ANSI usados por todos los sistemas
operativos Windows. Este cdigo de pgina es el apropiado si los clientes
son Sistemas Operativos Windows (NT,2000,XP,95,98).
Microsoft recomienda el uso de ISO 8859-1 (default) para evitar los
problemas de conversin de caracteres en los sistemas y porque ste
contiene los caracteres adecuados para manejar la mayor parte de idiomas
que comprende Amrica y la parte Oeste de Europa, incluso haciendo uso,
de ser necesario, de tipos Unicode en algunos campos tales como
nchar,nvarchar y ntext.
El Dictionary Order, Case Insensitive es el default y el ms adecuado
para la mayor parte de instalaciones, tomando en cuenta que permite
comparaciones y ordenamiento basado en la forma natural como lo hara
cualquier persona para comparar por ejemplo :
Ana = ana en cuanto a orden Ana,ana,aparicio,etc.
El Binary Order no es el ms adecuado para la mayora de sistemas debido
a que la comparacin y ordenamiento est basada en los valores numricos
de los caracteres y no en el orden natural de los mismos.
Character Set: ISO 8859-1,Latin 1 o ANSI Character Set
Sort Order: Dictionary Order, Case Insensitive.

Versin 1.0

Pgina 3 de 8

Fecha: 22/02/2016

Estndares de Desarrollo para SQL Server

Nota: Se debe tener en cuenta esta configuracin durante la


instalacin en un servidor.
3.

Base de Datos:
Nomenclatura: Debe estar relacionado con el aplicativo.
Por ejemplo : AdmVentasInternet.
El nombre fsico de la base de datos debe corresponder al Alias de la
aplicacin.
Por ejemplo, la aplicacin Administradora de las Ventas por Internet
tiene como alias: SAVI, por lo cual, los nombres fsicos
correspondientes son:
Archivo MDF
Archivo LDF

4.

:
:

SAVI_Data
SAVI_Log

Definicin de variables, parmetros y tipos de datos:


Aplica a:
Stored procedures
Triggers
Nomenclatura:

@xYYYY

p
: Identificador de parmetro
YYYY : Nombre de la Variable (CamelCase)
Ejemplo: pCodEmp, pNombre
5.

Tablas:
Nomenclatura:

NombreTabla

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


combinando maysculas y minsculas bajo el estilo CamelCase.
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 el prefijo de tres letras
nemnico SEC relacionado al concepto de System Entity Class.
Una tabla hija debe llevar el nombre de la tabla padre hasta un
mximo de un nivel.
Nota: Cuando se creen tablas temporales aadir el sufijo Temp para
reconocerlas.
Ejemplo:
Versin 1.0

Pgina 4 de 8

Fecha: 22/02/2016

Estndares de Desarrollo para SQL Server

SAV_Producto_Temp

5.1.

Campos:
Nomenclatura:

Nombrecampo

Los nombres de los campos deben ser descriptivos.


Se deben usar maysculas y minsculas para diferenciar los
grupos de identificacin en el nombre.
Ejemplo :
CREATE TABLE SAV_EMPLEADO
(
CodEmpleado
numeric(3, 0) NOT NULL ,
NombreEmp
varchar (100) NULL ,
NumeroDocumento
char(10) NULL
)

6.

Stored Procedures:
Nomenclatura:
sp_(ins|del|sel|gen)_Nombre_Descriptivo_accion
INS : Insert.
UPD : Update.
DEL : Delete.
SEL: Select.
GEN : General (Cualquier combinacin de los tipos anteriores u otro

tipo de
procesos).
Las acciones pueden ser:
all: recupera todos los registros.
filter: recupera varios registros de acuerdo a un criterio de filtrado.
key: recupera un registro por su llave primaria.
Por ejemplo : sp_get_SEC_ClasificacionPredio_all.
(Recupera todos los registros de una tabla)
Nota:

Versin 1.0

Pgina 5 de 8

Fecha: 22/02/2016

Estndares de Desarrollo para SQL Server

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 y en algunos casos impide que funcione el DTS.
Obligatoriamente todos los sistemas a desarrollarse debern
invocar STORED PROCEDURES. La forma de invocar estos desde el
aplicativo est detallado en el manual de estndar de desarrollo
para .NET.
No se debern poner sentencias SQL en el cliente. Esto genera
una gran baja en la performance de los sistemas.
En ningn caso el desarrollador podr forzar el uso de un ndice
dentro de un STORED PROCEDURE y tampoco deber colocar
sentencias que alteren el comportamiento de los bloqueos.
En el caso de los STORED PROCEDURES que son exclusivamente
para mostrar informacin se debern evitar usar lgicas como la
siguiente :
Create Proc sp_sel_LeerTabla
@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 sp_sel_LeerTabla
@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 usar cursores definidos en SQL
SERVER, dado que stos consumen muchos recursos.
Versin 1.0

Pgina 6 de 8

Fecha: 22/02/2016

Estndares de Desarrollo para SQL Server

En la mayora de los casos se pueden transformar los cursores a


Transact-SQL
Las vistas debern ser utilizadas para simplificar los queries.
En ningn caso se otorgarn permisos sobre columnas, por lo
tanto se deber crear una vista para que se le otorgue permiso de
SELECT a toda la vista.
Se debern optimizar el uso de los Datatypes.
9.1

Estructura del Stored Procedure:

Identificador, nombre de stored procedure, y parmetros


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 sp_inst_Registro_Hub(
@pCodEmpresa int,
@pRazonSocial varchar(50))
AS
<Declaracin de variables>
<Sentencias SQL>

7.

Vistas:
Nomenclatura:

view_Nombre de la Vista

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

8.

Programacin:
Utilizar maysculas para las sentencias propias del SQL.
Ejemplo :
SELECT

Versin 1.0

NumeroDocumento,
TipoDocumento ,
ApellidoPaterno,
ApellidoMaterno,
Pgina 7 de 8

Fecha: 22/02/2016

FROM
ORDER BY

Estndares de Desarrollo para SQL Server

Nombre
DEPOSITANTE
NumeroDocumento

Utilizar el tabulador para separar los campos de una condicin (en


la medida de lo posible)
Ejemplo :
SELECT 'CodigoSegmentoSAB'
'CodigoSegmentoCONASEV'
+SUBSTRING(NumeroRegistro,2,1),
'CodigoRetorno'
=
FROM DEPOSITANTE
WHERE
NumeroDocumento
AND
TipoDocumento
=
AND
RelacionadorCorrelativo
=

=
=

CodigoDepositante,
'00'

'0'
=
@chrNumeroDocumento
@chrTipoDocumento
@chrRelacionadorCorrelativo

Indentar el Cdigo para conservar un orden


Ejemplo:
ALTER PROCEDURE [dbo].[sp_get_SEC_Condominio_key]
-- Add the parameters for the stored procedure here
@pNumJurada int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT C.numCondominio, C.numDocumento, C.codDocumento,
C.nombres, C.direccion, C.porcentaje,
C.numJurada, C.secDistrito, DOC.desSigla,
DIS.desDistrito, PRO.secProvincia, DEP.secDepartamento,
PAI.secPais
FROM SEC_Condominio C, SEC_Distrito DIS, SEC_Provincia PRO,
SEC_Departamento DEP, SEC_Pais PAI, SEC_DocumentoLegal
DOC
WHERE C.numJurada = @pNumJurada
AND C.codDocumento = DOC.codDocumento
AND C.secDistrito = DIS.secDistrito
AND DIS.secProvincia = PRO.secProvincia
AND PRO.secDepartamento = DEP.secDepartamento
AND DEP.secPais = PAI.secPais
ORDER BY C.numCondominio
END

Versin 1.0

Pgina 8 de 8