Tablas de datos¶
La definición de la estructura tablas de datos en la base de datos se realiza mediante archivos XML incluidos en la carpeta Table y donde el nombre del archivo establece el nombre de la tabla. Es importante para mantener la homogeinidad y evitar problemas posteriores, usar nombres totalmente en minúsculas.
FacturaScripts se encarga de la revisión, creación y actualización de las mismas de manera:
- Creando la tabla si no existe
- Comprobando si tiene todas las columnas necesarias y son del tipo correcto
- Comprobando las relaciones entre tablas
Columnas o campos¶
Para crear la estructura usaremos la etiqueta table como grupo raíz del archivo xml alternando etiquetas column para definir cada uno de los campos de la tabla. Las columnas o campos se configura mediante las etiquetas:
name: | (obligatorio) Indica el nombre del campo. Recomendaciones: - Utilizaremos siempre todo en minúsculas. - Evitaremos nombre de campos cortos o abreviados, como id, clte, imp. - FS2020 se reserva el uso de campos como code, active, action. |
---|---|
type: | (obligatorio) Indica el tipo de dato que almacena la tabla.
|
null: | (opcional) Si la columna no admite valores null debemos indicar el valor NO. Si no se informa de esta etiqueta, se interpreta como YES. |
default: | Permite indicar el valor por defecto a asignar en caso de no proporcionar uno. |
<?xml version="1.0" encoding="UTF-8"?>
<table>
<column>
<name>idemployee</name>
<type>serial</type>
<null>NO</null>
<default>nextval('employees_id_seq'::regclass)</default>
</column>
<column>
<name>idcompany</name>
<type>integer</type>
</column>
<column>
<name>name</name>
<type>character varying(100)</type>
<null>NO</null>
</column>
<column>
<name>note</name>
<type>text</type>
</column>
<column>
<name>registrationdate</name>
<type>date</type>
<null>NO</null>
</column>
</table>
Definición de Constraints¶
Es posible definir restricciones físicas dentro del motor de base de datos que nos garanticen integridad de datos, tanto para valores duplicados como para integridad referencial entre tablas. Esto se realiza mediante el uso de la etiqueta de grupo constraint y las etiquetas name y type.
Ejemplo de restricción de valores
<!-- No se puede repetir la combinación de codigo y empresa -->
<constraint>
<name>uniq_codigo_albaranesprov</name>
<type>UNIQUE (codigo,idempresa)</type>
</constraint>
Ejemplo de relaciones entre tablas
<!-- No se puede eliminar la serie si tiene albaranes -->
<!-- Si se cambia la serie se actualizan todos sus albaranes -->
<constraint>
<name>ca_albaranesprov_series</name>
<type>FOREIGN KEY (codserie) REFERENCES series (codserie) ON DELETE RESTRICT ON UPDATE CASCADE</type>
</constraint>