Documento de Estándares de Nomenclatura - Modelo físico de datos Versión 1.0 Elaborado por: Carlos Romero F. Elaboración: 15/01/2010 Modificado por: Walter Meregildo F. Ultima Modificación: 20/01/2010 Aprobado por: Marco Miranda F. Aprobación: 21/01/2010 Sistema de Gestión Hotelera - Módulo de Compras y Almacenes HISTORIAL DE VERSIONES Versión: 1.0 Realizado por: Carlos Romero Descripción: Define los estándares de nomenclatura para el modelo físico de datos. Aprobado por: Marco Miranda Documento Interno Fecha modificación: Fecha aprobación : Versión: 1.0 15/01/2010 21/01/2010 Página 2 de 11 Sistema de Gestión Hotelera - Módulo de Compras y Almacenes ÍNDICE CAPÍTULO 1. Estándares de Nomenclatura de Base de Datos .......................... 4 1.1. OBJETIVOS ..................................................................................................................................4 1.2. NORMAS GENERALES ...................................................................................................................4 1.3. NOMENCLATURAS DE BASE DE DATOS ..........................................................................................4 1.3.1. Notación de Base de Datos ................................................................................................4 1.3.2. Notación de Tablas .............................................................................................................4 1.3.3. Notación de Campos ..........................................................................................................5 1.3.4. Notación de Índices ............................................................................................................5 1.3.5. Indices.................................................................................................................................6 1.3.6. Triggers ...............................................................................................................................7 1.3.7. Stored Procedure ................................................................................................................7 1.3.8. Vistas ..................................................................................................................................9 1.4. PROGRAMACIÓN...........................................................................................................................9 Documento Interno Versión: 1.0 Página 3 de 11 Sistema de Gestión Hotelera - Módulo de Compras y Almacenes CAPÍTULO 1. 1.1. Estándares de Nomenclatura de Base de Datos Objetivos Estandarizar la nomenclatura de objetos de base de datos utilizando para este desarrollo el SQL Server. Estandarizar la estructura de codificación del SQL Transact. 1.2. Normas Generales Mantener nombres cortos y descriptivos. 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 estándar, no se permiten los espacios en blanco como parte de un identificador. Para la definición de nombre de objetos de base de datos de acuerdo al caso se usará el caracter underscore “_” para separar las palabras_del_nombre. 1.3. Nomenclaturas de Base de Datos 1.3.1. Notación de Base de Datos Nomenclatura: El nombre de la base de datos debe estar en mayúsculas. Ejemplo : Base de Datos : COMALM Archivo MDF : COMALM_Data Archivo LDF : COMALM_Log 1.3.2. Notación de Tablas Nomenclatura: El nombre de la tabla debe ser descriptivo, en singular y en mayúsculas. Documento Interno Versión: 1.0 Página 4 de 11 Sistema de Gestión Hotelera - Módulo de Compras y Almacenes Las tablas identifican una entidad del sistema con un nombre completo. Una tabla hija debe llevar al inicio el nombre de la tabla padre. Si la entidad o proceso que genera la tabla tienen más de una palabra se deberá colocar cada una de ellas en singular y deben ser separadas por un "_". Si la entidad o proceso representa a una tabla de uso temporal, el nombre de la misma debe ser precedida por el siguiente prefijo “TEMP_”. Ejemplo : Nomenclatura de una tabla padre PROVEEDOR Nomenclatura de una tabla hija PROVEEDOR_OBSERVACION Nomenclatura de una tabla temporal TEMP_XXX 1.3.3. Notación de Campos Nomenclatura: Los nombres de los campos deben ser descriptivos, en singular y en mayúsculas. Ejemplo : ID_EMPLEADO NOMBRE DOCUMENTO 1.3.4. Notación de Constraints El nombre de la tabla debe estar en mayúscula. Índices con llaves primarias (Primary Key). Nomenclatura: PK + Nombre de la tabla. Ejemplo: PK_PROVEEDOR Índices con llaves foráneas o relacionadas (Foreing Key). Nomenclatura: FK_NombreTablaOrigen_NombreTablaReferenciada Documento Interno Versión: 1.0 Página 5 de 11 Sistema de Gestión Hotelera - Módulo de Compras y Almacenes Ejemplo: FK_PROVEEDOR_ORDENCOMPRA Indices Unique: Nomenclatura: UQ_NemónicoTabla_NombreUnique Ejemplo: UQ_CLIENTE_CODIGO_CLIENTE Default: Nomenclatura: DF_NemónicoTabla_NombreColumna Ejemplo DF_CLIENTE_FECHA Check: Nomenclatura: CK_NemonicoTabla_NombreCheck Ejemplo CK_CLIENTE_CODIGO_CLIENTE 1.3.5. Indices Nomenclatura IXX_ YYYY…. XX : Tipo de índice (Unique, Clustered, NonClustered) YYY : Nombre del Indice Ejemplo: Documento Interno IUQ_CODEMPLEADO (índice Unique) ICL_CCUSTODIA (índice Clustered) Versión: 1.0 Página 6 de 11 Sistema de Gestión Hotelera - Módulo de Compras y Almacenes INC_CODDEPOSITANTE (NonClustered) 1.3.6. Triggers Nomenclatura para los Triggers : TR_NOMBRETABLE_D (Cuando se realiza una eliminación en la tabla). TR_NOMBRETABLA_U (Cuando se realiza una actualización en la tabla). TR_NOMBRETABLA_I (Cuando se realiza una inserción en la tabla). TR_NOMBRETABLA_IU (Cuando se realiza una inserción o actualización en la tabla). 1.3.7. Stored Procedure Nomenclatura para los Stored Procedures : Insert: NOMBRETABLA_Add (Insertaun registro a la tabla) Update: NOMBRETABLA_Update (Actualiza un registro a la tabla) Delete: NOMBRETABLA_Delete (Elimina un registro de la tabla) Select: NOMBRETABLA_GetByID (Retorna un sólo registro por PK o AK). NOMBRETABLA_ListByXXXX (Retornan más de un registro) NOMBRETABLA_ListXXXX Nota: No todos los stored procedures siguen esta convención, dado que algunos abstraen un mayor nivel de funcionalidad como ejecutar un proceso o algún query complejo. Ejemplo EMPLEADO_Add EMPLEADO _Insert EMPLEADO _Update EMPLEADO _GetByID Documento Interno Versión: 1.0 Página 7 de 11 Sistema de Gestión Hotelera - Módulo de Compras y Almacenes EMPLEADO _ListByEmpresa EMPLEADO _ProcesaSueldo 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 notificación del nro. de registros afectados por cada sentencia SQL lo cual incrementa el performance. Estructura del Stored Procedure: Identificador, nombre de stored procedure, y parámetros Comentarios: Descripción: “funcionalidad del stored procedure” Fecha Creacion: Fecha Modificación: Descripción de Parámetros de entrada y salida Autor: Versión: Cambios Importantes Declaración Variables locales Mayúsculas y minúsculas Sentencias SQL Palabras del lenguaje SQL, y funciones de sistema en MAYUSCULAS, columnas y otras variables en Mayúsculas. Sentencias legibles e indentadas (cada clausula SQL en una línea nueva) Ejemplo: CREATE PROCEDURE EMPRESA_Add( @CODEMPRESA int, @RAZONSOCIAL varchar(50), …) AS /*************************************** *Descripcion: Añade un registro a la tabla HUB *Fecha Creación: 19/02/2001 *Fecha Modificación: 19/02/2001 Documento Interno Versión: 1.0 Página 8 de 11 Sistema de Gestión Hotelera - Módulo de Compras y Almacenes *Parametros: @CODEMPRESA : * @RAZONSOCIAL: * … Código de la empresa Razon Social de la Empresa *Autor: Juan Perez (14201) *Versión: Final (Beta|Final) *Cambios Importantes: Inclusión de la condición se consulta(15/02/2001) */************************************** <Declaración de variables> <Sentencias SQL> 1.3.8. Vistas Nomenclatura para las Vistas: VW_YYY…. VW : Identificador para las Vistas YYY : Nombre de la Vista en Mayúsculas Ejemplo : VW_CONSULTAR_PERSONERIA Para el nombre de las Vistas utilizar verbos en Infinitvo, Ejemplo : VW_CONSULTAR_CUENTAS Nota: La estructura de la vista debe ser similar a la del stored procedure. 1.4. Programación Utilizar mayúsculas para las sentencias propias del SQL Ejemplo .- SELECT NumeroDocumento, TipoDocumento , ApellidoPaterno, Documento Interno Versión: 1.0 Página 9 de 11 Sistema de Gestión Hotelera - Módulo de Compras y Almacenes ApellidoMaterno, Nombre FROM DDEPOSITANTE ORDER BY NumeroDocumento Utilizar el Tabulador para separar los campos de una condición (en la medida de lo posible) Ejemplo .- SELECT 'CodigoSegmentoSAB' = CodigoDepositante, 'CodigoSegmentoCONASEV' = '00' +SUBSTRING(NumeroRegistro,2,1), 'CodigoRetorno' = '0' WHERE NumeroDocumento = @NumeroDocumento AND TipoDocumento = @TipoDocumento AND RelacionadorCorrelativo = @RelacionadorCorrelativo FROM DDEPOSITANTE Indentar el Código para conservar un orden Ejemplo.CREATE PROCEDURE BUSCARCADENA ( @Variable VARCHAR(255), @Tipo VARCHAR(1) ="" ) AS BEGIN IF LTRIM(RTRIM(@Variable)) <> "*" IF @Tipo = "" SELECT NOMBRE = name , TIPO = type CREACION = crdate , FROM sysobjects WHERE name LIKE '%'+ @Variable + '%' ORDER BY type, name ELSE SELECT Documento Interno NOMBRE = name , TIPO = type , Versión: 1.0 Página 10 de 11 Sistema de Gestión Hotelera - Módulo de Compras y Almacenes CREACION = crdate FROM sysobjects WHERE name LIKE '%'+ @Variable + '%' AND type = RTRIM(LTRIM(@Tipo)) ORDER BY name END Documento Interno Versión: 1.0 Página 11 de 11