erp-construccion-database-v2/README.md
rckrdmrd bf97e26cdf Migración desde erp-construccion/database - Estándar multi-repo v2
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 08:11:21 -06:00

4.4 KiB

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 usuarios
  • project_management - Proyectos y estructura de obra
  • financial_management - Presupuestos y control financiero
  • purchasing_management - Compras e inventarios
  • construction_management - Control de obra y avances
  • quality_management - Calidad y postventa
  • infonavit_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_case plural
  • Columnas: snake_case singular
  • Í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