estándar de nomenclatura para modelo de físico de datos

Upload: leo-vasquez-blas

Post on 04-Mar-2016

9 views

Category:

Documents


0 download

DESCRIPTION

Estándar de Nomenclatura Para Modelo de Físico de Datos

TRANSCRIPT

Estandares de Desarrollo para SQL Server

Fecha: 20/01/2015Estndares de Desarrollo para SQL Server

Estndares de Desarrollo para SQL ServerIndice

1.Objetivos:32.Estndar de Configuracin de Base de Datos:33.Base de Datos:44.Definicin de variables, parmetros y tipos de datos:45.Tablas:55.1.Campos:56.Stored Procedures:77.Vistas:98.Programacin:9

Estndares de Programacin SQL SERVER

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

2.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.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

:SAVI_Data

Archivo LDF

:SAVI_Log

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

Aplica a:

Stored procedures

Triggers

Nomenclatura:@xYYYY

p: Identificador de parmetroYYYY: 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:

SAV_Producto_Temp5.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

(

CodEmpleadonumeric(3, 0) NOT NULL ,

NombreEmp

varchar (100) NULL ,

NumeroDocumentochar(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:

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. 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.1Estructura 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

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 NumeroDocumento,

TipoDocumento ,

ApellidoPaterno,

ApellidoMaterno,

Nombre

FROM DEPOSITANTE

ORDER BY NumeroDocumento

Utilizar el tabulador para separar los campos de una condicin (en la medida de lo posible)

Ejemplo :

SELECT 'CodigoSegmentoSAB'

= CodigoDepositante,

'CodigoSegmentoCONASEV' ='00' +SUBSTRING(NumeroRegistro,2,1),

'CodigoRetorno' ='0'

FROMDEPOSITANTE

WHERE NumeroDocumento

= @chrNumeroDocumento

AND TipoDocumento

= @chrTipoDocumento

AND RelacionadorCorrelativo = @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.0Pgina 8 de 8