Herramientas de usuario

Herramientas del sitio


ada:howto:sicoferp:factory:sicoferpscriptsdb:process:standardandpref

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
ada:howto:sicoferp:factory:sicoferpscriptsdb:process:standardandpref [2020/10/05 19:16]
carlos.torres
ada:howto:sicoferp:factory:sicoferpscriptsdb:process:standardandpref [2020/12/03 14:07] (actual)
200.116.180.41 [ScriptsDB - Proceso: Estándares y Prefijos]
Línea 1: Línea 1:
-====== ScriptsDB - Proceso: ​Estandares ​y Prefijos ====== +====== ScriptsDB - Proceso: ​Estándares ​y Prefijos ====== 
-Esta sección presenta a continuación las normas de denominación de variables y objetos estándar declaradas dentro de las bases de datos relacionales (Oracle PLSQL) de la Compañía. El estandar ​ha sido generado teniendo presente el estandar ​Oracle el cual puede ser consultados ​desde [[https://​oracle-base.com/​articles/​misc/​naming-conventions|Nombres y convenciones Oracle]]+Esta sección presenta a continuación las normas de denominación de variables y objetos estándar declaradas dentro de las bases de datos relacionales (Oracle PLSQL) de la Compañía. El estándar ​ha sido generado teniendo presente el estándar ​Oracle el cual puede ser consultado ​desde [[https://​oracle-base.com/​articles/​misc/​naming-conventions|Nombres y convenciones Oracle]] 
 + 
 +===== Notas de Versión ===== 
 +^Versión^Elabora^Revisa^Aprueba^Fecha Publicación^Observaciones^ 
 +|1.0|carlos.torres,​ abdimar.estrada|daberson.henao|daberson.henao|05/​10/​2020|Versión Inicial|
  
 ===== Tablas y Entidades ===== ===== Tablas y Entidades =====
Línea 22: Línea 26:
  
 ==== Definición de Nombres ==== ==== Definición de Nombres ====
-A continuación se establen ​los criterios para la definción ​de nombres de tablas:+A continuación se establecen ​los criterios para la definición ​de nombres de tablas:
   * Tablas de Maestros: MAE_   * Tablas de Maestros: MAE_
   * Tablas de Detalles: DET_   * Tablas de Detalles: DET_
Línea 56: Línea 60:
  
   * No debe superar una longitud máxima de 30 caracteres.   * No debe superar una longitud máxima de 30 caracteres.
-  * Las palabras en el nombre deben estar separados por un guión ​bajo.+  * Las palabras en el nombre deben estar separados por un guion bajo.
   * Deberán evitarse las abreviaturas,​ prefiriendo palabras completas, siempre que sea posible.   * Deberán evitarse las abreviaturas,​ prefiriendo palabras completas, siempre que sea posible.
   * Los nombres de columna y componentes de nombre serán en singular, no en plural.   * Los nombres de columna y componentes de nombre serán en singular, no en plural.
Línea 65: Línea 69:
   * Los nombres de columna que se refieren a un BLOB deben empezar con BLOB_   * Los nombres de columna que se refieren a un BLOB deben empezar con BLOB_
   * Las columnas CLOB/BLOB deben inicializarse con la función EMPTY_CLOB/​EMPTY_BLOB según el tipo   * Las columnas CLOB/BLOB deben inicializarse con la función EMPTY_CLOB/​EMPTY_BLOB según el tipo
-  * No utilice tipos binarios para almacenamiento de recursos o archivo ​evalue ​el uso de BLOB o puede utilizar CLOB y almacenar el recurso en Base64 de esta formata ​optimiza el espación ​y se permite la lectura del recurso sin herramientas de terceros o visores especiales+  * No utilice tipos binarios para almacenamiento de recursos o archivo ​evalúe ​el uso de BLOB o puede utilizar CLOB y almacenar el recurso en Base64 de esta forma optimiza el espació ​y se permite la lectura del recurso sin herramientas de terceros o visores especiales
   * No utilizar palabras reservadas de Oracle en el nombre de columna.   * No utilizar palabras reservadas de Oracle en el nombre de columna.
-  * No utilizar el tipo de dato CHAR como opcion ​utilice VARCHAR2.+  * No utilizar el tipo de dato CHAR como opción ​utilice VARCHAR2.
   * Las columnas VARCHAR2 deben estar definidas en base binaria (1,​2,​4,​8,​16,​32,​64,​128,​256...).   * Las columnas VARCHAR2 deben estar definidas en base binaria (1,​2,​4,​8,​16,​32,​64,​128,​256...).
   * Las columnas DATE deben empezar con la palabra FECHA_.   * Las columnas DATE deben empezar con la palabra FECHA_.
Línea 79: Línea 83:
 </​code>​ </​code>​
  
-===== Llaves ​ó Claves =====+===== Llaves ​Claves =====
  
 ==== Primarias ==== ==== Primarias ====
Línea 91: Línea 95:
   * El nombre debe estar en singular.   * El nombre debe estar en singular.
   * Puede estar compuesta por el alias de la tabla referenciada.   * Puede estar compuesta por el alias de la tabla referenciada.
-  * Cuando la llave foránea ​esta compuesta por un solo campo, debe empezar por FK_[nombre de la tabla][identificador]. El identificador será el numero ​de referencia que corresponde a la tabla asociada empezando por 01, 02, 03, 04...NM EJ: FK_TERCERO01. +  * Cuando la llave foránea ​está compuesta por un solo campo, debe empezar por FK_[nombre de la tabla][identificador]. El identificador será el número ​de referencia que corresponde a la tabla asociada empezando por 01, 02, 03, 04...NM EJ: FK_TERCERO01. 
-  * Cuando la llave foránea ​esta compuesta por varios campos, debe empezar por FKC_[nombre de la tabla][identificador]. El identificador será el numero ​de referencia que corresponde a la tabla asociada empezando por 01, 02, 03, 04...NM EJ: FKC_TERCERO01.+  * Cuando la llave foránea ​está compuesta por varios campos, debe empezar por FKC_[nombre de la tabla][identificador]. El identificador será el número ​de referencia que corresponde a la tabla asociada empezando por 01, 02, 03, 04...NM EJ: FKC_TERCERO01.
   * No debe superar una longitud máxima de 30 caracteres.   * No debe superar una longitud máxima de 30 caracteres.
  
Línea 98: Línea 102:
   * El nombre debe estar en singular.   * El nombre debe estar en singular.
   * Puede estar compuesta por el alias de la tabla.   * Puede estar compuesta por el alias de la tabla.
-  * Cuando la llave única ​esta compuesta por un solo campo, debe empezar por UK_[nombre de la tabla][identificador]. El identificador será el número de referencia que corresponde a la siguiente llave unica en la tabla empezando por 01, 02, 03, 04...NM EJ: UK_TERCERO01. +  * Cuando la llave única ​está compuesta por un solo campo, debe empezar por UK_[nombre de la tabla][identificador]. El identificador será el número de referencia que corresponde a la siguiente llave única ​en la tabla empezando por 01, 02, 03, 04...NM EJ: UK_TERCERO01. 
-  * Cuando la llave única ​esta compuesta por varios campos, debe empezar por UKC_[nombre de la tabla][identificador]. El identificador será el número de referencia que corresponde a la siguiente llave unica en la tabla empezando por 01, 02, 03, 04...NM EJ: UKC_TERCERO01.+  * Cuando la llave única ​está compuesta por varios campos, debe empezar por UKC_[nombre de la tabla][identificador]. El identificador será el número de referencia que corresponde a la siguiente llave única ​en la tabla empezando por 01, 02, 03, 04...NM EJ: UKC_TERCERO01.
   * No debe superar una longitud máxima de 30 caracteres.   * No debe superar una longitud máxima de 30 caracteres.
  
-==== Indices ​====+==== Índices ​====
  
-=== Indice ​de Clave Primaria ===+=== Índice ​de Clave Primaria ===
   * El nombre debe estar en singular.   * El nombre debe estar en singular.
   * Puede estar compuesto por el alias de la tabla.   * Puede estar compuesto por el alias de la tabla.
   * Debe empezar por IDX_   * Debe empezar por IDX_
   * En lo posible utilizar el mismo nombre utilizado para la clave EJ: PK_TERCERO → IDX_TERCERO.   * En lo posible utilizar el mismo nombre utilizado para la clave EJ: PK_TERCERO → IDX_TERCERO.
-  * En lo posible almacenar los indices ​en un tablespace diferente al que se utilizó para la definición de la tabla.+  * En lo posible almacenar los índices ​en un tablespace diferente al que se utilizó para la definición de la tabla.
   * No debe superar una longitud máxima de 30 caracteres.   * No debe superar una longitud máxima de 30 caracteres.
  
-=== Indice ​de Clave Externa ===+=== Índice ​de Clave Externa ===
   * El nombre debe estar en singular.   * El nombre debe estar en singular.
   * Puede estar compuesto por el alias de la tabla.   * Puede estar compuesto por el alias de la tabla.
   * Si el índice no es un índice de mapa de bits el nombre estará formado por el nombre de la restricción de clave externa y debe empezar por IDX_   * Si el índice no es un índice de mapa de bits el nombre estará formado por el nombre de la restricción de clave externa y debe empezar por IDX_
   * Si el índice es un índice de mapa de bits debe empezar por BIDX_   * Si el índice es un índice de mapa de bits debe empezar por BIDX_
-  * En lo posible almacenar los indices ​en un tablespace diferente al que se utilizó para la definición de la tabla.+  * En lo posible almacenar los índices ​en un tablespace diferente al que se utilizó para la definición de la tabla.
   * No debe superar una longitud máxima de 30 caracteres.   * No debe superar una longitud máxima de 30 caracteres.
  
-=== Indice ​de base Función ===+=== Índice ​de base Función ===
   * El nombre debe estar en singular.   * El nombre debe estar en singular.
   * Puede estar compuesto por el alias de la tabla.   * Puede estar compuesto por el alias de la tabla.
   * Debe empezar por FBI_   * Debe empezar por FBI_
-  * En lo posible almacenar los indices ​en un tablespace diferente al que se utilizó para la definición de la tabla.+  * En lo posible almacenar los índices ​en un tablespace diferente al que se utilizó para la definición de la tabla.
   * No debe superar una longitud máxima de 30 caracteres.   * No debe superar una longitud máxima de 30 caracteres.
  
-=== Indice ​de Clave Única ===+=== Índice ​de Clave Única ===
   * El nombre debe estar en singular.   * El nombre debe estar en singular.
   * Puede estar compuesto por el alias de la tabla.   * Puede estar compuesto por el alias de la tabla.
   * Si el índice no es un índice de mapa de bits, ó basado en función debe empezar por IDX_.   * Si el índice no es un índice de mapa de bits, ó basado en función debe empezar por IDX_.
-  * Si el índice es un índice de mapa de bits debe empzar ​por BIDX_+  * Si el índice es un índice de mapa de bits debe empezar ​por BIDX_
   * índices únicos no se crearán a menos que exista una restricción única correspondiente.   * índices únicos no se crearán a menos que exista una restricción única correspondiente.
-  * En lo posible almacenar los indices ​en un tablespace diferente al que se utilizó para la definición de la tabla. +  * En lo posible almacenar los índices ​en un tablespace diferente al que se utilizó para la definición de la tabla. 
-  * En lo posible utilizar el mismo nombre utilizado para la clave unica EJ: UK_TERCERO01 → IDX_TERCERO01.+  * En lo posible utilizar el mismo nombre utilizado para la clave única ​EJ: UK_TERCERO01 → IDX_TERCERO01.
   * No debe superar una longitud máxima de 30 caracteres.   * No debe superar una longitud máxima de 30 caracteres.
  
-=== Otros Indices ​===+=== Otros Índices ​===
   * El nombre debe estar en singular.   * El nombre debe estar en singular.
   * Puede estar compuesto por el alias de la tabla.   * Puede estar compuesto por el alias de la tabla.
   * Si el índice no es un índice de mapa de bits, ó basado en función debe empezar por IDX_.   * Si el índice no es un índice de mapa de bits, ó basado en función debe empezar por IDX_.
-  * Si el índice es un índice de mapa de bits debe empzar ​por BIDX_ +  * Si el índice es un índice de mapa de bits debe empezar ​por BIDX_ 
-  * En lo posible almacenar los indices ​en un tablespace diferente al que se utilizó para la definición de la tabla.+  * En lo posible almacenar los índices ​en un tablespace diferente al que se utilizó para la definición de la tabla.
   * No debe superar una longitud máxima de 30 caracteres.   * No debe superar una longitud máxima de 30 caracteres.
  
Línea 173: Línea 177:
  
 ===== Bases de Datos ===== ===== Bases de Datos =====
-Las reglas para la creacion ​de bases de datos serán definidas por el equipo de implantación sin embargo se deben considerar las siguientes recomendaciones:​ +Las reglas para la creación ​de bases de datos serán definidas por el equipo de implantación sin embargo se deben considerar las siguientes recomendaciones:​ 
-  * El nombre debe estar en mayusculas.+  * El nombre debe estar en mayúsculas.
   * El nombre debe intuir el nombre del cliente (utilizar alias).   * El nombre debe intuir el nombre del cliente (utilizar alias).
-  * De ser posible asociar al nombre un identificador ​numerico. EJ DESARROLLO00+  * De ser posible asociar al nombre un identificador ​numérico. EJ DESARROLLO00
  
 ===== PL/SQL ===== ===== PL/SQL =====
Línea 210: Línea 214:
   * Exception: exc_   * Exception: exc_
   *    * 
-=== Parametros ​===+=== Parámetros ​===
   * Entrada: ai   * Entrada: ai
   * Salida: ao   * Salida: ao
   * Entrada/​Salida:​ aio   * Entrada/​Salida:​ aio
  
-=== Extenciones ​de Archivos === +=== Extensiones ​de Archivos === 
-Se permite el tipo generico ​sql para todos los archivos ó según el tipo de objeto se permiten los siguientes tipos:+Se permite el tipo genérico ​sql para todos los archivos ó según el tipo de objeto se permiten los siguientes tipos:
  
-  * Especificacion ​de Paquete: .pks+  * Especificación ​de Paquete: .pks
   * Cuerpo de Paquete: .pkb   * Cuerpo de Paquete: .pkb
   * Consultas: .sql   * Consultas: .sql
Línea 230: Línea 234:
  
 ===== Recomendaciones:​ ===== ===== Recomendaciones:​ =====
-La siguientes recomendaciones no imponen reglas de utilización sin embargo trate en lo posible de aplicarlas ya que el hacerlo optimiza el código generado:+Las siguientes recomendaciones no imponen reglas de utilización sin embargo trate en lo posible de aplicarlas ya que el hacerlo optimiza el código generado:
  
   * Agrupe funciones y procedimientos en paquetes.   * Agrupe funciones y procedimientos en paquetes.
   * Evite la función raise_application_error utilice en su lugar Raise y defina excepciones personalizadas utilizando el inicializador pragma exception_init.   * Evite la función raise_application_error utilice en su lugar Raise y defina excepciones personalizadas utilizando el inicializador pragma exception_init.
-  * Evite los operadoradores ​SQL% ???? en su lugar utilice capturadores begin exception.+  * Evite los operadores ​SQL%en su lugar utilice capturadores begin exception.
   * Evite el uso del Open al abrir cursores en su lugar utilice el bucle for.   * Evite el uso del Open al abrir cursores en su lugar utilice el bucle for.
-  * Todas las consultaas ​select into deben estar incluidas dentro de un bloque begin exception y al menos debe validar las excepciones NOT_DATA_FOUND y TOO_MANY_ROWS+  * Todas las consultas ​select into deben estar incluidas dentro de un bloque begin exception y al menos debe validar las excepciones NOT_DATA_FOUND y TOO_MANY_ROWS
   * Evite el uso de las funciones de formatos en consultas pesadas   * Evite el uso de las funciones de formatos en consultas pesadas
   * TO_CHAR: si valida fechas utilice mejor el operador EXTRACT   * TO_CHAR: si valida fechas utilice mejor el operador EXTRACT
-  * TRUNC en variables numéricas trate de utilizar el operador ​matematico ​que desea aplicar. +  * TRUNC en variables numéricas trate de utilizar el operador ​matemático ​que desea aplicar. 
- +  * Utilice los campos de las tablas de manera explícita. Evite el uso de SELECT * o INSERT INTO VALUES sin especificación de columnas. 
 +  * Siempre coloque el nombre del esquema propietario de los objetos para el uso de los mismos (Tablas, Vistas, Secuencias, Funciones, Procedimientos,​ Paquetes, Triggers, etc.). Por ejemplo TESORE01.maestro_terceros. 
 +  * Utilice la función NVL, NLV2, DECODE o CASE, en los SELECT cuando no se soporten valores nulos. 
 +  * No utilizar Caracteres especiales. 
 +  * No utilizar Carácter '​ñ'​. 
 +  * No utilizar Vocales con tilde, ni siquiera en los comentarios. 
 +  * Siempre valide las operaciones de división para evitar la división entre cero. 
 +  * Utilizar %TYPE y %ROWTYPE para la definición de variables. 
 +  * Borrar código y variables que no se usen. Si conocemos una parte de un código o variable que no se va a usar más debemos eliminarla, asegurando previamente que no tiene más presencia en el código. Evitar el código en comentarios. 
 +  * Evitar las conversiones implícitas de tipos de datos. Se deben utilizar las funciones predefinidas para la conversión (TO_DATE, TO_CHAR, TO_NUMBER). 
 +  * Luego de cualquier instrucción de manipulación de Datos – DML (INSERT, UPDATE, DELETE), se debe realizar un COMMIT;. 
 +  * Al crear registros en las tablas de uso general para todos los clientes, se debe primero generar un INSERT con los valores genéricos y luego un UPDATE para valores específicos para un cliente dado.   
 +  * Tener especial cuidado en las modificaciones posteriores de una instrucción. Por ejemplo, un CREATE TABLE debe tener modificaciones posteriores con un ALTER TABLE. Una definición de Funciones, procedimientos y paquetes siempre deben manejarse con CREATE OR REPLACE. 
 +  * Las instrucciones DDL no llevan COMMIT. 
 +  * Las instrucciones ejecutables deben terminar siempre con un “;”. 
 +  * Para la ejecución de bloques ejecutables continuos (CREATE OR REPLACE) se debe colocar el “/”. 
 +  * Verificar que las consultas que se componen de subconsultas que deben retornar solo una fila, no retornen más de una fila. 
 +  * No se deben mezclar instrucciones DML con instrucciones DDL. 
 +  * No se deben utilizar comandos DROP, a menos que sean para actualizaciones. 
 +  * Toda instrucción DELETE debe tener un WHERE. 
 +  * Manejar la empresa siempre en los querys, si no necesita la empresa poner la empresa por defecto ‘9999999999’ (en los esquemas multiempresa). 
 +  * Los comentarios de línea se definen con -- 
 +  * Los comentarios de bloque se definen con /* */
    
 [[ada:​howto:​sicoferp:​factory:​sicoferpscriptsdb:​process|←Volver atrás]] [[ada:​howto:​sicoferp:​factory:​sicoferpscriptsdb:​process|←Volver atrás]]
  
ada/howto/sicoferp/factory/sicoferpscriptsdb/process/standardandpref.1601925404.txt.gz · Última modificación: 2020/10/05 19:16 por carlos.torres