Ver Mensaje Individual
  #11  
Antiguo 28-09-2012
MiguelC MiguelC is offline
Miembro
 
Registrado: oct 2003
Ubicación: República Dominicana
Posts: 15
Reputación: 0
MiguelC Va por buen camino
Wink

Hola Alberto.

Estoy respondiendo a este hilo un poco tarde, pero lo hago para el caso de que alguien con las mismas inquietudes que tu, encuentre un poco más.

Pues bien, creo que el asunto aquí es entender un poco más el concepto de diseñar una base de datos que responderá a una aplicación/sistema concebido para manejar multiempresas (en este escenario ambas cosas deben ir diseñados de la mano)
Iría un poco más lejos...que pasaría si a parte de manejar multiempresas, también quieras en el futuro clasificar o filtrar la información por las distintas posibles multisucursales de esas multiempresas...?

Bien, pues me identifico con la idea plantead aqui de MartinS, entiendo seria una de la metodología mas factible. Yo diseñaria la base de datos, sus estructuras\tablas principales manejando el concepto de Claves principales(PK) y claves foráneas o secundarias(FK)[fk:dato que hace referencia a una entidad o registro que debe existir en la base de datos]

En buen español, un ejemplo:

Tabla Maestro de Empresa

TblMEmpresa


Empresa_codigo (PK)
Empresa_nombre

Tabla Maestro de Sucursales
TblMSucursal

Empresa_codigo (FK)(PK)
Sucursal_codigo(PK)
Sucursal_nombre

Tabla Maestro de Cliente
TblMEmpleado

Empresa_codigo (FK)(PK)
Sucursal_codigo(FK)
Empleado_codigo (PK)
Empleado_nombre

TblMEmpresa
PK (campo clave o llave de la tabla)
FK(Campo secundario, se supone el dato debe existir en otra tabla antes de ser usado, también, puede ser combinado para ser parte del/los campos clave(s) de la tabla)
PK

Empresa_codigo| Empresa_nombre
001| "Empresa prueba 001"
002| "Empresa prueba 002"

TblMSucursal
FK-PK| PK
Empresa_codigo| Sucursal_codigo| Sucursal_nombre

001| 001| "Sucursal 001 de la Empresa 001"
001| 002| "Sucursal 002 de la Empresa 001"
002| 001| "Sucursal 001 de la Empresa 002"

TblMEmpleado
FK-PK | FK| PK
Empresa_codigo| Sucursal_codigo| Empleado_codigo| Empleado_nombre
001| 001| 1| "Empleado1 Prueba Empr1Suc1"
001| 001| 2| "Empleado2 Prueba Empr1Suc1"
002| 001| 1| "Empleado1 Prueba empr2Suc1"
002| 002| 2| "Empleado2 Prueba Empr2Suc2"

Si notas, en este ejemplo, aqui la informacion estaria clasificada y normalizada, lo que restaria seria identificar de todas las tablas que usara el sistema, cuales deben ser por empresas y cuales no.

Luego en lo que respecta al codigo de la aplicacion. una idea seria, que en la pantalla de entrada al sistema (Login) al momento de entrar haya entre otras cosas, 2 variables globales que asuman la Empresa y la sucursal del usuario que se esta logeando, luego por medio de consultas o Querys podras configurar o crear tu ambiente de la aplicación, realizando las consultas y Querys pasando como parámetros entre otras cosas la Empresa y la Sucursal logueada en el momento.

Ya con otro mecanismo dentro del sistema (un formulario con dos combobox por ejemplo) te podras cambiar de una empresa a otra y de una sucursal a otra, y cada vez que hagas esto te asegura de asignar los códigos de empresa y de sucursal a las 2 variables globales de tu sistemas, lo demas es rutina (Consultas, Querys, Reportes etc)

Espero no te haya mareado tanta teoría, espero no haberte creado mas dudas y si mas luz.
de todas formas estoy a tus ordenes para aclararte cualquier duda en este sentido.
__________________
"La unión del Código hace la Fuerza" LMCV

Última edición por MiguelC fecha: 28-09-2012 a las 00:31:23.
Responder Con Cita