83 lines
2.5 KiB
Markdown
83 lines
2.5 KiB
Markdown
# ADR-007: Database Design Multi-Schema
|
|
|
|
**Estado:** Aceptada
|
|
**Fecha:** 2025-11-24
|
|
**Responsable:** Architecture-Analyst
|
|
**Proyecto:** ERP Construccion
|
|
|
|
## Contexto
|
|
|
|
La base de datos debe organizar datos de construccion de manera:
|
|
- Escalable y mantenible
|
|
- Compatible con ERP Generico
|
|
- Optimizada para consultas de proyectos/obras
|
|
- Con extension para dominios especificos (INFONAVIT, estimaciones)
|
|
|
|
## Decision
|
|
|
|
**Multi-Schema Design** con schemas por dominio funcional:
|
|
|
|
```
|
|
database/ddl/
|
|
+-- 01-auth.sql # Autenticacion (GENERICO)
|
|
+-- 02-core.sql # Catalogos maestros (GENERICO)
|
|
+-- 03-projects.sql # Proyectos base (GENERICO) + extensiones
|
|
+-- 04-financial.sql # Financiero (GENERICO)
|
|
+-- 05-inventory.sql # Inventario (GENERICO)
|
|
+-- 06-purchase.sql # Compras (GENERICO)
|
|
+-- 07-sales.sql # Ventas (GENERICO)
|
|
+-- 08-analytics.sql # Analitica (GENERICO)
|
|
+-- 09-construction.sql # ESPECIFICO: Obra, avances, APUs
|
|
+-- 10-infonavit.sql # ESPECIFICO: INFONAVIT, derechohabientes
|
|
+-- 11-estimates.sql # ESPECIFICO: Estimaciones, facturacion obra
|
|
```
|
|
|
|
**Schemas especificos de construccion:**
|
|
- `construction_management`: Fraccionamientos, manzanas, lotes, prototipos
|
|
- `infonavit_compliance`: Derechohabientes, actas, cumplimiento
|
|
- `estimates_management`: Estimaciones, anticipos, retenciones
|
|
|
|
## Justificacion
|
|
|
|
### Referencia a Gamilit
|
|
- Organizacion por dominio funcional
|
|
- Permisos por schema
|
|
|
|
### Alineacion con ERP Generico
|
|
- Schemas 01-08 reutilizados (61%)
|
|
- Schemas 09-11 especificos de construccion
|
|
|
|
### Especifico para Construccion
|
|
- Tablas de fraccionamientos con relaciones jerarquicas
|
|
- Tablas INFONAVIT separadas para auditorias
|
|
- PostGIS para ubicaciones de obras
|
|
|
|
## Consecuencias
|
|
|
|
### Positivas
|
|
- Organizacion logica +80%
|
|
- Permisos granulares por schema
|
|
- Reutilizacion de schemas genericos
|
|
- Mantenibilidad +50%
|
|
|
|
### Negativas
|
|
- Complejidad en joins cross-schema
|
|
- Mitigacion: Vistas materializadas para reportes
|
|
|
|
## Implementacion
|
|
|
|
### Acciones Requeridas
|
|
- [ ] Crear DDL para schemas 09-11 (construccion)
|
|
- [ ] Configurar indices para queries de proyectos
|
|
- [ ] Implementar vistas para reportes INFONAVIT
|
|
- [ ] PostGIS para georreferenciacion
|
|
|
|
### Criterios de Aceptacion
|
|
- Schemas genericos compatibles con ERP Generico
|
|
- Schemas especificos aislados
|
|
- Performance de queries < 100ms para dashboards
|
|
|
|
## Referencias
|
|
- [ERP Generico ADR-007](../../erp-generic/docs/adr/ADR-007-database-design.md)
|
|
- [Gamilit Database Architecture](../../shared/reference/gamilit/database-architecture.md)
|