Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
ada:howto:sicoferp:factory:sicoferpscriptsdb:process:standardandpref [2020/12/03 13:26] 200.116.180.41 [Llaves ó Claves] |
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: Estándares 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 estándar ha sido generado teniendo presente el estándar 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 ===== | ===== Notas de Versión ===== | ||
Línea 95: | 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 102: | 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 177: | 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 214: | 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 234: | 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. | * 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. | + | * 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. | * Utilice la función NVL, NLV2, DECODE o CASE, en los SELECT cuando no se soporten valores nulos. | ||
* No utilizar Caracteres especiales. | * No utilizar Caracteres especiales. | ||
Línea 265: | Línea 265: | ||
* Toda instrucción DELETE debe tener un WHERE. | * 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). | * 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 linea se definen con -- | + | * Los comentarios de línea se definen con -- |
* Los comentarios de bloque 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]] | ||