# Análisis de Base de Datos - Sistema Multi-Empresa ## Estructura de Bases de Datos Identificada ### Base de Datos Principal: `avantikads_nmgen` **Propósito:** Base de datos master/global del sistema **Tablas clave:** - `empresa` - Catálogo de empresas (empresaId como PK) - `usuario` - Usuarios del sistema con empresaId asociado - Configuración global y shared resources ### Base de Datos de Empresa: `avantikads_nm15` **Propósito:** Datos específicos de empresa con ID 15 **Contenido:** Tablas operativas como: - `_prodSinInv` - Productos sin inventario - Todas las tablas transaccionales de la empresa 15 ## Arquitectura Multi-Empresa Confirmada ### Estructura Validada ``` avantikads_nmgen (Master DB) ├── empresa (empresaId, activo, datos generales) ├── usuario (usuarioId, empresaId, datos usuario) └── [Tablas globales] avantikads_nm{empresaId} (Empresa-specific DB) ├── _prodSinInv ├── productos ├── pedidos ├── ventas └── [Todas las tablas operativas] ``` ### Flujo de Autenticación y Selección 1. **Usuario inicia sesión** → Conexión a `avantikads_nmgen` 2. **Validación de credenciales** en tabla `usuario` 3. **Obtención de empresaId** del registro del usuario 4. **Conexión dinámica** a `avantikads_nm{empresaId}` 5. **Operaciones en BD de la empresa específica** ## Implicaciones para la Migración ### 1. Base de Datos Master Obligatoria - **Mantener `avantikads_nmgen` como master** - **Función**: Autenticación y routing de empresas - **Acceso**: Todos los usuarios se conectan primero aquí ### 2. Configuración Dinámica por empresaId - **Patón confirmado**: `SQL_DATABASE2 . empresaId` - **Ejemplo real**: `avantikads_nm15` para empresaId = 15 - **Necesidad**: Routing automático basado en usuario ### 3. Archivos de Configuración Adicionales #### `/base_datos/` - Esquemas de Referencia - `avantikads_nmgen.sql` - Estructura master - `avantikads_nm15.sql` - Ejemplo estructura empresa - **Uso**: Validar estructura durante migración ## Actualizaciones al Plan de Migración ### Configuración .env - Ajustes Necesarios #### Variables de Conexión Master ```env # Base de datos Master (global para autenticación) DB_MASTER_HOST=localhost DB_MASTER_DATABASE=avantikads_nmgen DB_MASTER_USER=admin_user DB_MASTER_PASSWORD=secure_master_password # Prefijo para bases de datos de empresas DB_EMPRESA_PREFIX=avantikads_nm ``` #### Lógica de Conexión por Empresa ```php // Función actualizada en ejemplo-env-config.php public static function getDatabaseConfig($empresaId) { $masterConfig = [ 'database' => $_ENV['DB_MASTER_DATABASE'] . '_' . $empresaId ]; // Validar que exista la base de datos if (!self::validateDatabaseExists($masterConfig['database'])) { throw new Exception("Base de datos no existe: " . $masterConfig['database']); } return $masterConfig; } ``` ### Validaciones de Migración #### 1. Verificación de Estructura - Comparar esquemas actuales con archivos en `/base_datos/` - Validar que todas las tablas requeridas existan - Verificar integridad de datos por empresa #### 2. Testing Multi-Empresa - Crear usuarios de prueba para diferentes empresas - Validar routing correcto de conexiones - Probar aislamiento de datos entre empresas #### 3. Migración Gradual - Iniciar con empresa 15 (tenemos su esquema) - Validar funcionamiento completo - Extender a otras empresas ## Archivos de Migración Adicionales ### `/base_datos/` - Incluir en plan - **Mantener como referencia** durante migración - **Usar para validación** de estructura post-migración - **Documentar esquema** actual para comparación ### Scripts de Migración (Sugeridos) - `migrar_master_db.php` - Migración base master - `validar_esquemas.php` - Validación contra archivos SQL - `test_multi_empresa.php` - Testing routing de conexiones ## Impacto en Estimación de Tiempo ### Tiempo Adicional Requerido - **Validación de esquemas:** +5-10 horas - **Testing multi-empresa:** +10-15 horas - **Migración de datos:** +8-12 horas - **Total adicional:** +23-37 horas ### Estimación Actualizada: 113-162 horas ## Recomendación **La estructura `/base_datos/` confirma la arquitectura multi-empresa.** El plan actualizado debe incluir validación específica contra estos esquemas para asegurar migración correcta.