Database de erp-construccion - Workspace V2
- document_categories: Categorias jerarquicas - documents: Registro principal - document_versions: Control de versiones - document_permissions: Permisos granulares - approval_workflows: Definicion de flujos - approval_instances: Instancias de aprobacion - approval_steps: Pasos de aprobacion - approval_actions: Acciones de aprobacion - annotations: Anotaciones sobre documentos - access_logs: Historial de acceso - document_shares: Compartidos externos Includes: RLS, indices, triggers, fulltext search Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| init-scripts | ||
| schemas | ||
| _MAP.md | ||
| .gitignore | ||
| drop-and-recreate-database.sh | ||
| HERENCIA-ERP-CORE.md | ||
| README.md | ||
| VALIDACION-DDL-INVENTARIOS.md | ||
| validate-clean-load-policy.sh | ||
Database - MVP Sistema Administración de Obra
Stack: PostgreSQL 15+ con PostGIS Versión: 1.0.0 Fecha: 2025-11-20
📋 DESCRIPCIÓN
Base de datos del sistema de administración de obra e INFONAVIT.
Schemas principales:
auth_management- Autenticación y usuariosproject_management- Proyectos y estructura de obrafinancial_management- Presupuestos y control financieropurchasing_management- Compras e inventariosconstruction_management- Control de obra y avancesquality_management- Calidad y postventainfonavit_management- Integración INFONAVIT
🏗️ ESTRUCTURA
ddl/
├── 00-init.sql # Inicialización + extensiones
└── schemas/ # Schemas por contexto
├── auth_management/
│ ├── tables/ # Tablas (01-users.sql, 02-roles.sql, ...)
│ ├── functions/ # Funciones SQL
│ ├── triggers/ # Triggers
│ └── views/ # Vistas
├── project_management/
│ └── ...
└── [otros schemas]/
seeds/
├── dev/ # Datos de desarrollo
└── prod/ # Datos de producción inicial
migrations/ # Migraciones versionadas
scripts/ # Scripts de utilidad
🚀 SETUP INICIAL
1. Crear Base de Datos
# Ejecutar script de creación
cd scripts
./create-database.sh
2. Ejecutar DDL
# Ejecutar inicialización
psql $DATABASE_URL -f ddl/00-init.sql
# Ejecutar schemas (en orden)
psql $DATABASE_URL -f ddl/schemas/auth_management/tables/01-users.sql
# ... etc
3. Cargar Seeds (desarrollo)
psql $DATABASE_URL -f seeds/dev/01-users.sql
psql $DATABASE_URL -f seeds/dev/02-projects.sql
🔧 SCRIPTS DISPONIBLES
| Script | Descripción |
|---|---|
create-database.sh |
Crea la base de datos desde cero |
reset-database.sh |
Elimina y recrea la base de datos |
run-migrations.sh |
Ejecuta migraciones pendientes |
backup-database.sh |
Crea backup de la base de datos |
📊 CONVENCIONES
Nomenclatura
Seguir ESTANDARES-NOMENCLATURA.md:
- Schemas:
snake_case+ sufijo_management - Tablas:
snake_caseplural - Columnas:
snake_casesingular - Índices:
idx_{tabla}_{columnas} - Foreign Keys:
fk_{origen}_to_{destino} - Constraints:
chk_{tabla}_{columna}
Estructura de Archivo DDL
-- ============================================================================
-- Tabla: nombre_tabla
-- Schema: nombre_schema
-- Descripción: [descripción]
-- Autor: Database-Agent
-- Fecha: YYYY-MM-DD
-- ============================================================================
DROP TABLE IF EXISTS schema.tabla CASCADE;
CREATE TABLE schema.tabla (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
-- columnas...
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
COMMENT ON TABLE schema.tabla IS '[descripción]';
COMMENT ON COLUMN schema.tabla.columna IS '[descripción]';
CREATE INDEX idx_tabla_columna ON schema.tabla(columna);
🔍 VALIDACIÓN
Verificar Schemas
SELECT schema_name
FROM information_schema.schemata
WHERE schema_name LIKE '%_management';
Verificar Tablas
SELECT table_schema, table_name,
(SELECT COUNT(*) FROM information_schema.columns
WHERE table_schema = t.table_schema
AND table_name = t.table_name) as column_count
FROM information_schema.tables t
WHERE table_schema LIKE '%_management'
ORDER BY table_schema, table_name;
Verificar Índices
SELECT tablename, indexname
FROM pg_indexes
WHERE schemaname LIKE '%_management'
ORDER BY tablename;
📚 REFERENCIAS
📝 VARIABLES DE ENTORNO
DATABASE_URL=postgresql://usuario:password@localhost:5432/nombre_db
DB_HOST=localhost
DB_PORT=5432
DB_NAME=erp_construccion
DB_USER=postgres
DB_PASSWORD=password
Mantenido por: Database-Agent Última actualización: 2025-11-20