Para los sistemas en nuevas tecnologias en los que tienen bases de datos en PostgreSQL se manejará inicalmente cuatro (4) bases de datos llamada de la siguiente manera:
academica
administrativa
core
financiera
Cada una de estas bases de datos contendra un esquema por funcionalidad.
Nota: Los esquemas se nombran por funcionalidad y no por nombre de la aplicación.
Ejemplo por nombre de aplicación:
Una representación cercana a la estructura de bd seria como se muestra a continuación:
Un Ejemplo de la bd de Financiera sera la siguiente:
Las tablas deben nombrarse utilizando _ como separador, en singular y sin utilizar espacios en blanco.
Si el nombre es compuesto las dos palabras deben ir en singular. Por ejemplo: venta_producto
cliente
estudiante
profesor_planta
Los campos de una tabla corresponden a los atributos de una entidad, describen propiedades de la misma.
Las columnas deben ser nombradas según los lineamientos a continuación:
-
Los nombres deben ser simples, representativos e intuitivos.
-
Los nombres de las columnas de una tabla deben estar expresados en singular, usando _ como separador.
-
El campo clave o identificador de una tabla debe nombrarse como id y sebe ser:
opción1: de tipo de dato Integer y estar asociado a una secuencia.
Opción2: de tipo de dato serial que creará automaticamente la seguencia.
-- Opción1 Para la tabla contrato el campo clave debe ser: id integer NOT NULL DEFAULT nextval('public.contrato_id_seq'::regclass) -- Opción2 Para la tabla usuario, usando tipo de dato serial: id serial NOT NULL,
Nota: Se recomienda la Opción2, es mas rapida.
-
Las columnas que hacen parte de una llave foránea, es decir referencian al campo ID de otra tabla, deben ser nombradas tal cual el nombre de la tabla que referencian y finalizar con _id.
-
Los campos que almacenan un valor de moneda deben ser de tipo numeric(20,7)
-
Los campos que almacenan un valor de porcentaje deben ser de tipo numeric(5,4)
-
Para los campos que almacenen caracteres se recomienda usar el tipo de dato character varying especificando su longitud.
-
Especificar la longitud del campo si aplica.
--Indicar la longitud del campo si el tipo de dato es character varying: character varying(15) -- Especificar longitud y precisión del campo si el tipo de dato es Numeric: numeric(5,2).
-
Se debe incluir el campo activo de tipo boolean, el cual indica el estado del registro y se registra por defecto como TRUE.
-
Se debe incluir el campo fecha_creacion de tipo timestamp, el cual indica el día y hora en el que el registro ingreso a la base de datos.
-
Se debe incluir el campo fecha_modificacion de tipo timestamp, el cual indica el día y hora de la ultima modificación que se realizó al registro, en caso que el registro apenas este ingresando, este valor debe ser el mismo del campo fecha_creacion.
-
Para los campos que se referencian tablas de otros esquemas, se debe incluir el sufijo _id y en un mensaje junto a la tabla indicar con que esquema, tabla y campo se referencia.
La clave primaria es un conjunto de campos que identifica de forma única un registro en una tabla, debe entenderse que no es igual al concepto de columna cuya nomenclatura se explica en el punto 6. Son un caso particular de un índice, la nomenclatura para la restricción de este índice debe hacerse usando el nombre de la tabla, anteponiendo el prefijo pk y guión bajo.
pk_cliente
Las claves foráneas son usadas para definir vínculos entre tablas relacionadas. Una clave foránea establece una relación entre una o más columnas de una tabla y la clave primaria de la tabla referenciada. El patrón para la nomenclatura de restricción de clave foránea es el siguiente:
fk_<tabla_que_referencia>_<tabla_referenciada>
Ejemplo:
fk_orden_pago_cliente
La nomenclatura para este tipo de restricciones es la siguiente cuando hablamos de Unique constraint:
uq_<nombre_columna>_<nombre_tabla>
Ejemplo:
uq_identificacion_persona
La nomenclatura para este tipo de restricciones es la siguiente cuando hablamos de Check constraint:
ck_<nombre_columna>_<nombre_tabla>
Ejmplo:
ck_genero_persona
Los índices son un mecanismo para aumentar la eficiencia de localización y acceso de un registro en una tabla en la base de datos, opcionalmente asegurando unicidad de los valores del índice. La definición de índices tiene un impacto positivo en los tiempos de consulta de registro y uno negativo en los de inserción y actualización de los campos del índice. Los índices están asociados a una tabla y a un conjunto de campos de la tabla, a su vez pueden ser únicos o no.
La nomenclatura es la siguiente ( [_aux] denota que puede ir otra palabra si se requiere una diferenciación en particular de otros índices con nombre similar):
[idx_]<tabla>_<campo>[_aux]
Ejemplo:
idx_persona_genero
El siguiente esquema define la estructura de aquellas entidades que son paramétricas y que no requieren más allá de un nombre o una descripción para su definición.
Campos:
-
id: Campo asociado a la llave primaria de la tabla, se sugiere crearlo con el tipo serial ya que al ejecutar la creación el tipo de dato queda integer y automáticamente se crea una secuencia que es asociada al campo id..
-
nombre : Campo obligatorio de la tabla.
-
descripcion : Descripción opcional del parámetro.
-
codigo_abreviacion : Código de abreviación, sigla, acrónimo u otra representación corta del registro si se requiere.
-
numero_orden: En dado caso que se necesite establecer un orden a los registros que no se encuentre definido por aplicación ni por BD. Allí se almacena permitiendo realizar subitems mediante la precisión.