136 lines
4.3 KiB
Markdown
136 lines
4.3 KiB
Markdown
# 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. |