Sigrid se puede comunicar con distintos motores de bases de datos, como MS Jet, SQL Server, Oracle y otros que utilicen el estándar SQL (Structured Query Language, o Lenguaje de Consultas Estructurado). La base de datos de Sigrid es un archivo único con extensión .sig. Al instalar la aplicación, se copia una base de datos de ejemplo con MS Jet, y se pueden crear tantas como sea necesario mediante la opción Nueva Base de datos del menú Archivo. En cada ventana principal, se puede tener abierta una base de datos o una de las empresas que contenga.
La estructura de la base de datos es siempre la misma, independientemente del motor de base de datos utilizado o de la versión de Sigrid instalada. No todas las tablas se utilizan en todos los casos; por ejemplo, si solo se tiene Sigrid Contabilidad sin Gestión, la tabla de movimientos de almacén existe pero no contiene datos.
Como en cualquier base de datos relacional, los datos se almacenan en tablas relacionadas entre sí. Este diseño hace que Sigrid sea rápida, sencilla y potente, capaz de manejar millones de datos sin afectar su rendimiento. Las tablas contienen campos que almacenan datos específicos, identificados por nombres cortos pero descriptivos (por ejemplo, en la tablacob de cobros, el campotot guarda el importe del efecto y fecven la fecha de vencimiento). Estos nombres breves facilitan las búsquedas y sentencias SQL.
La base de datos cuenta con más de un centenar de tablas debido a la complejidad de la gestión empresarial. A continuación se explican las más importantes, que forman el núcleo de la aplicación; la estructura completa se consulta en el documentador de la base de datos.
Si se es usuario de la aplicación, se conoce que los Conceptos son el elemento central y se organizan en una estructura de padres e hijos. Los atributos comunes a todos los Conceptos se almacenan en la tabla con. Sus campos principales son:
- ide: identificador numérico único del Concepto, generado automáticamente; es la clave que relaciona esta tabla con las demás.
- tip: tipo de Concepto, codificado en la tabla tip.
- cod: código asignado por el usuario.
- res: descripción o resumen del Concepto.
- fec: fecha del Concepto (formato aaaammdd).
- tex: texto asociado, editable en Ventana Texto.
- cee: indicador de si el Concepto es modificable.
- est: número de estado, codificado en la tabla conest según el tipo de Concepto.
- delo: código de delegación origen (a la que pertenece el usuario creador), de la tabla auxiliar de delegaciones asignada en Gestión de usuarios/roles. Se usa con el modo de trabajo con delegaciones y obras en los parámetros de la empresa, junto con del, obr y doc.
- del: código de delegación destino (donde se imputa el Concepto), grabado automáticamente desde la delegación de trabajo.
- obr: código de centro de coste u obra, grabado desde la obra de trabajo.
- doc: número de expediente.
Los tipos de Conceptos son predeterminados: se pueden modificar propiedades, pero no eliminar ni añadir tipos. Las propiedades específicas de cada tipo se almacenan en una tabla cuyo nombre son los tres últimos caracteres del código del tipo (por ejemplo, Conceptos tipo 1 o TIPCAR - Carpetas - en tabla car; tipo 5 o TIPPRV - Proveedores - en tabla prv). Estas tablas se relacionan con con por el campo ide. Por ejemplo, un Concepto con ide 132567 de tipo 1 tiene un registro en car con ese ide.
Para listar Conceptos clientes: SELECT cod, res FROM con WHERE tip = 5 ORDER BY res
Para incluir el CIF: SELECT con.cod, con.res, cli.cif FROM con, cli WHERE con.tip=5 AND con.ide = cli.ide
La aplicación permite usar códigos de tipos en lugar de números en sentencias SELECT. Ejemplo para el Plan General Contable (grupos y cuentas auxiliares): SELECT cod, res, tex FROM con WHERE tip=TIPCUGUNIONSELECT cod, res, tex FROM con WHERE tip=TIPCUAORDER BY cod
La tabla rcc (Relaciones padre-hijo de Conceptos) almacena la organización jerárquica:
- ide: identificador único del registro.
- com: identificador del Concepto padre.
- des: identificador del Concepto hijo.
- pos: posición entre hermanos.
El campo pos aparece en muchas tablas con el mismo significado. La aplicación usa un algoritmo que deja números libres entre Conceptos consecutivos, facilitando movimientos sin alterar otros pos (ejemplo: lista con pos 128, 142, 265, 287; mover el último entre 1 y 2 asigna un valor intermedio como 135).
Otras tablas no almacenan conceptos directamente:
- Detalle de conceptos, por ejemplo, apu para apuntes contables, dcfpro para líneas de facturas de compra, condir para direcciones, regiva para IVA.
- Relaciones entre conceptos y otras tablas, por ejemplo rac vincula facturas/cobros a asientos.
- Tablas auxiliares, nombres con aux, como auxban para entidades bancarias, auxfan para familias de productos, auxpag para formas de pago.
- Codificación de estados (conest).
- Configuración, por ejemplo bassegint para seguridad de interfaz.
Ejemplo de tabla apu (Apuntes contables):
| Campo | Clave externa | Tipo | Descripción |
| ide | dbLong | Identificador | |
| asiide | asi | dbLong | ide del Asiento |
| fec | dbLong | Fecha del Asiento | |
| cod | dbText(24) | Código del Asiento | |
| pos | dbLong | Posición | |
| cueide | cua | dbLong | Ide de la cuenta auxiliar |
| deb | dbDouble | Debe | |
| hab | dbDouble | Haber | |
| res | dbText(48) | Descripción | |
| pun | dbLong | Punteo | |
| tex | dbMemo | Texto u observaciones |
Para un diario de apuntes: SELECT apu.fec as fecha, apu.cod as código, apu.res as resumen, con.cod as cuenta, con.res as titulo, apu.deb as debe, apu.hab as haber FROM apu, con WHERE con.tip=TIPCUA and apu.cueide=con.ide ORDER BY apu.fec, apu.cod