[VFP] Como hacer un sistema multiempresas con MySQL

2,241 views
Skip to first unread message

ZeRoberto

unread,
Sep 11, 2012, 12:53:17 PM9/11/12
to publicesvfoxpro
Cuando trabajaba con DBF creaba una carpeta por cada empresa luego le añadia las tablas con las que iba a trabajar
 
Pero ahora en MySQL no se como seria, por el momento solucione agregandole una columna de EmpresaID a todas las tablas
 
Pero por ahi vi un sistema que creaba tablas por cada empresa el problema era de que la BD se llena de tablas y para buscar una especifica es un problema, existira alguna forma de crear carpetas en las base de datos?
 
Saludos
 
 

Marcelo Barberis

unread,
Sep 11, 2012, 1:53:20 PM9/11/12
to publice...@googlegroups.com
Estimado
Lo que podrias hacer es crearte el script donde tienes las definiciones de la BD y tablas y cuando tu creas la empresa nueva en una nueva carpeta alli mediante codigo ejecutas el script para crear la BD y las tablas en la nueva carpeta.
Bueno yo no lo hice todavia, pero pienso que es una opcion.

 
 

--
 
 
 



--
Ing. Marcelo Barberis Gutierrez
Sistemas Informaticos Inc
Villa Montes - Bolivia
Telef.: +591-76831064

Antonio Meza

unread,
Sep 11, 2012, 1:59:42 PM9/11/12
to publice...@googlegroups.com
Uso mysql y lo que te recomiendo es crear una nueva base de datos por cada empresa, uso el RFC (Registro del contribuyente en Mexico) para identificar a cada empresa, es decir el nombre de la base de datos es su RFC. a ver si me explique.

saludos



Alfonso Ramirez Diaz

unread,
Sep 11, 2012, 2:21:28 PM9/11/12
to publice...@googlegroups.com
Roberto.

Yo utilizo lo que comentaron por ahí, creo una base de datos para cada empresa pero para identificar las empresas utilizo un correlativo, por ejemplo la RAZON SOCIAL 1 es la base de datos EMP001 y asi sucesivamente y utilizo una base de datos común en donde guardo solamente el RUT (NIF,CIF,etc) el nombre y el número de la empresa y algunas otras cositas, no muchas.

Mi estructura es la siguiente:

La base de datos principal con los nombres de las empresas.

GESTION

Una base de datos por cada empresa.

EMP001
EMP002
EMP003
EMP...

Esa estructura me permite tener hasta 999 empresas con el mismo sistema, pero si le agregó un número tengo 9999 empresas y así puedes tener cuantas empresas quieras.

Mi programa se encarga de crear las bases de datos y las tablas de cada nueva empresa.

Walter R. Ojeda Valiente

unread,
Sep 11, 2012, 4:52:08 PM9/11/12
to publice...@googlegroups.com
Eso de crear en una sola BD varias tablas por cada empresa tiene sus bemoles, por ejemplo si se corrompe la BD puedes perder datos de varias empresas. O por un error de programación podrías ingresar, actualizar, borrar o consultar datos en la tabla de la empresa equivocada. O si te viene una auditoría fiscal para una empresa, los fiscalizadores también verán los datos de las otras empresas que no estaban fiscalizadas.

La ventaja es que te facilita hacer el backup.

Yo particularmente prefiero tener una BD por cada empresa, pero supongo que habrá casos en que no sea la mejor solución.

Saludos.

Walter.




Date: Tue, 11 Sep 2012 11:53:17 -0500
Subject: [vfp] [VFP] Como hacer un sistema multiempresas con MySQL
From: zero...@gmail.com
To: publice...@googlegroups.com
--
 
 
 

HernanCano

unread,
Sep 12, 2012, 1:29:57 AM9/12/12
to publice...@googlegroups.com

>>> "Pero por ahi vi un sistema que creaba tablas por cada empresa el problema era de que la BD se llena de tablas..."

Todo tiene sus pro y sus contra: siempre depende del punto de vista del programador.

1.

un sistema que creaba tablas por cada empresa el problema era de que la BD se llena de tablas

2.

creas la empresa nueva en una nueva carpeta
crear una nueva base de datos por cada empresa

3.

Eso de crear en una sola BD varias tablas por cada empresa tiene sus bemoles, por ejemplo si se corrompe la BD puedes perder datos de varias empresas
los fiscalizadores también verán los datos de las otras empresas que no estaban fiscalizadas.

La ventaja es que te facilita hacer el backup.


Cada programador decide cómo programa. Si no te gusta una forma, utiliza otra: ¡¡¡la que más te guste a tú!!! ¿Quién te limita? ¿VFP te limita? como lenguaje o como motor? ¿MySQL te limita? ¿algún motor te limita? ¿te limita el hardware?

Si una empresa necesta sistematizarse y su volumen de datos de proyecta que será de unos siete u ocho gigas anuales, ¿le recomendarías copias de seguridad en DVD de 4Gb? o aceptas que las hagan en cualq de las unidades de CD --compact disks-- que tienen ahora?

Walter R. Ojeda Valiente

unread,
Sep 12, 2012, 7:08:45 AM9/12/12
to publice...@googlegroups.com
Por supuesto que cada programador decide como programa (o lo decide el Analista, el Ingeniero de Sistemas, o alguna otra persona) pero como en todo hay mejores y peores maneras de hacer las cosas. Si necesitas transportar una carga de arena de 10 toneladas una distancia de 20 kilómetros podrías lograrlo haciendo muchísimos viajes con una carretilla, o muchísimos menos viajes utilizando un camión de carga grande.

Yo no transportaría esa carga en carretilla, preferiría toda la vida utilizar el camión, pero si tú quieres usar las carretillas, allá tú ... alguna vez alcanzarás tu objetivo.

Si quieres meter miles de tablas en una Base de Datos puedes hacerlo ¿quién te lo impide? pero deberías preguntarte ¿es la mejor alternativa?

Saludos.

Walter.





Date: Tue, 11 Sep 2012 22:29:57 -0700
From: jherna...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] Re: [VFP] Como hacer un sistema multiempresas con MySQL
--
 
 
 

ZeRoberto

unread,
Sep 12, 2012, 12:46:35 PM9/12/12
to publice...@googlegroups.com
Pero veo un detalle en crear varias DB para diferentes empresas, hay
tablas que son comunes para todas las empresas, se tendria que estar
creando en cada BD, o crear una nueva bd con datos comunes, pero ahi
tendria que conectarme a 2 BD.

Saludos

El 12/09/12, Walter R. Ojeda Valiente <wr...@hotmail.com> escribió:
>
> Por supuesto que cada programador decide como programa (o lo decide el
> Analista, el Ingeniero de Sistemas, o alguna otra persona) pero como en todo
> hay mejores y peores maneras de hacer las cosas. Si necesitas transportar
> una carga de arena de 10 toneladas una distancia de 20 kilómetros podrías
> lograrlo haciendo muchísimos viajes con una carretilla, o muchísimos menos
> viajes utilizando un camión de carga grande.
>
> Yo no transportaría esa carga en carretilla, preferiría toda la vida
> utilizar el camión, pero si tú quieres usar las carretillas, allá tú ...
> alguna vez alcanzarás tu objetivo.
>
> Si quieres meter miles de tablas en una Base de Datos puedes hacerlo ¿quién
> te lo impide? pero deberías preguntarte ¿es la mejor alternativa?
>
> Saludos.
>
> Walter.
>
>
>
>
> --
>
>
>
>

Neyger Pérez Mayo

unread,
Sep 12, 2012, 1:10:09 PM9/12/12
to publice...@googlegroups.com
Creo que hay que tomar en cuenta mucho el entorno donde se va a utilizar
 
Porque si seguimos la analogia de walter de los 20 kilometros, que pasa si en el inter hay un puente que cruzar y ese puente solo soporta una tonelada, pues obviamente seria muy arriesgado para el conductor (programador) ese pequeño cruce.

Fox Learner

unread,
Sep 12, 2012, 1:33:48 PM9/12/12
to publice...@googlegroups.com
Por qué no usar una DB distinta para cada empresa ? ...Pienso que para eso existen las DB. 

Claro que si hay campos comunes o más bien diría similares (porque comunes es que tienen relacion, pero por lo general la información de una empresa no tiene nada que ver con otra salvo por la similaridad de campos, incluso tratandose de sucursales de la misma empresa), lo que puedes hacer para evitar la fatiga es utilizar la sintaxis MySql para crear las bases y sus campos para generar la DB mediante una rutina de generación de DB. O bien esto:

Tener una DB generadora. Luego, cuando quieras crear otra empresa, utiliza un comando de MySql que crea una copia de esa DB y luego otro comando que renombra esa DB. Si los campos están atados por sus nombres a la DB, entonces te convendría hacer lo de generar la base a partir del script que te comentaron. No sé si workbench o algún programa de modelado sea 100% compatible con MySql y que indique en su documentación como sea haría mediante código.

El DBDesigner es bueno, pero da lata con los dobles paréntesis y algunos tipos de datos como como el BOOL que hay que cambiar a BOOLEAN antes de importar el script desde MySql.

La DB generadora debe estar limpia y la podrías usar para limpiar una DB que se corrompio, sobreescribiendo esa DB generadora sobre la que vas reparar, mediante algún proceso que inventes y cargando el respaldo de datos sobre esa estructura limpia.

Saludos!

Víctor Hugo Espínola Domínguez

unread,
Sep 12, 2012, 2:08:37 PM9/12/12
to publice...@googlegroups.com
Hola ZeRoberto

Yo también quería implementar lo que tu mencionas. Investigué un poco y parece que no todos los SMBD soportan consultas que involucren a tablas de diferentes bases de datos.

En SQL SERVER de Microsoft se puede acceder simultáneamente a tablas de diferentes bases de datos pero NO se puede implementar el control de integridad referencial automático:  http://www.todoexpertos.com/categorias/tecnologia-e-internet/bases-de-datos/sql-server/respuestas/169172/relacionar-2tablas-de-bds-con-integridad 

Creo que por ahora lo más sencillo y práctico (KISS) es tener todas las tablas de una empresa en una sola base de datos.

Saludos.
Víctor.


--




Claudio Luna

unread,
Sep 12, 2012, 2:41:33 PM9/12/12
to publice...@googlegroups.com
Estimados,

Les comento algo que tuve la oportunidad de probar, en SERVOY.. (lo probe en una empresa) el concepto de SAAS se maneja con con el identificador de empresa en cada tabla y cuando se pasa el login del sistema automaticamente se "filtran" los registros por la empresa para cada tabla.

Les comento como vi que lo hace SERVOY, no significa que sea la mejor opción.


Saludos

Claudio


--
 
 
 

Allan Raúl Acuña

unread,
Sep 12, 2012, 2:48:17 PM9/12/12
to publice...@googlegroups.com
Creo que lo mejor seria montar una base de datos por empresa, asi el tiempo de consultas es mas rapida que tener a todas en las misma.

Por otro lado una tabla con los datos de las empresas y los nombres de cada base de datos.

Al logearse se conectar a la de la empresas seleccionada.

Mi idea nada mas

Saludos cordiales;

Lic. Allan R. Acuña
Desarrollador Independiente
msn= allan...@hotmail.com
skype= niceasysoft
            +(505) 8 831 8191      
www.NicEasySoft.com
Managua, Nicaragua
Centroamérica



Date: Wed, 12 Sep 2012 15:41:33 -0300
Subject: Re: [vfp] Re: [VFP] Como hacer un sistema multiempresas con MySQL
From: thom...@gmail.com
To: publice...@googlegroups.com
--
 
 
 

Walter R. Ojeda Valiente

unread,
Sep 12, 2012, 2:51:19 PM9/12/12
to publice...@googlegroups.com
Exactamente, te tendrías que estar conectando a dos BD, la que mantiene las tablas comunes a todas las empresas y la que mantiene las tablas particulares de cada empresa ¿y cuál sería el problema?

Saludos.

Walter.




> Date: Wed, 12 Sep 2012 11:46:35 -0500
> Subject: Re: [vfp] Re: [VFP] Como hacer un sistema multiempresas con MySQL
> From: zero...@gmail.com
> To: publice...@googlegroups.com
> --
>
>
>

Walter R. Ojeda Valiente

unread,
Sep 12, 2012, 2:54:58 PM9/12/12
to publice...@googlegroups.com
Pues quizás para cruzar el puente la mejor alternativa sería descargar el camión, transportar la arena en carretillas hasta la otra orilla y luego volver a cargar el camión para que continúe su viaje. Pero de todas maneras la mayor parte del trayecto se hizo con el camión, no con las carretillas.

Saludos.

Walter.





Date: Wed, 12 Sep 2012 10:10:09 -0700
From: ney...@gncys.com
To: publice...@googlegroups.com
Subject: Re: [vfp] Re: [VFP] Como hacer un sistema multiempresas con MySQL
--
 
 
 

Walter R. Ojeda Valiente

unread,
Sep 12, 2012, 3:02:51 PM9/12/12
to publice...@googlegroups.com
Muchas veces tienes tablas estáticas que pueden ser utilizadas por todas las empresas, por ejemplo: BANCOS, PAISES, LOCALIDADES, DOCUMENTOS CONTABLES, etc.

Para evitar meter esos datos en cada Base de Datos la alternativa es tener una Base de Datos que los contenga. Entonces, tu aplicación usaría dos Bases de Datos: la general y la particular.

Saludos.

Walter.




Date: Wed, 12 Sep 2012 10:33:48 -0700
From: thenewin...@gmail.com

To: publice...@googlegroups.com
Subject: [vfp] Re: [VFP] Como hacer un sistema multiempresas con MySQL

--
 
 
 

Neyger Pérez Mayo

unread,
Sep 12, 2012, 3:07:23 PM9/12/12
to publice...@googlegroups.com
 
En este caso como es mySQL no es necesario hacer dos conexiones
 
 
simplemente hay que dar derechos al usuaurio que realiza la conexion para tener acceso a los n bases de datos que deseas
 
y las consultar van con prefijos de la base de datos
 
 
por ejemplo
 
select campo1 form base1.tabla1
 
donde base1 es el nombre de la base de datos1
 
 
claro siempre y cuando esten las base de datos en el mismo servidor.

Neyger Pérez Mayo

unread,
Sep 12, 2012, 3:19:57 PM9/12/12
to publice...@googlegroups.com
que buena respuesta.

tomcrux

unread,
Sep 12, 2012, 3:22:21 PM9/12/12
to publice...@googlegroups.com
 
Estimados foxeros!
Aqui mi humilde aporte!
 
Se podria tomar como sugerencia que la eleccion de una sola BD para varias empresas o varias BD para varias empresas, dependeria del tipo de proyecto que deseas encarar, teniendo en cuenta requerimientos del cliente, disponibilidad de recursos, crecimiento estimado del cliente a mediano y largo plazo. 
 
Un BD para todas las empresas trae como ventaja tener control en un solo lugar, esto disminuye la complejidad al trabajar en ciertos casos. La seguridad solo se aplicaria a esa BD. Lo mismo para los backups,  deberias preocuparte solo por esa BD. Se centralizarian datos por lo que el acceso a ciertos informes seria mas simple (no tendrias que buscar en varias BD, unir datos y producir resultados).
Como desventajas, seria el crecimiento de la misma con el paso del tiempo. Quizas en el mediano o largo plazo pueda traer aparejado problemas de performance. Seria necesario un "tunnig" en la BD, revisar indices, etc. cada tanto y de manera periodica.
Al trabajar con una sola BD, el id. de empresa debera estar en todos los registros de casi la totalidad de las tablas, esto para algunos seria algo engorroso, para otros seria algo util ya que no tendria que buscarse en otras BD si se necesita procesar datos de varias empresas.
 
Varias BD para varias empresas, permitiria aislar totalmente la informacion entre empresas, por un lado esto puede sonar mas seguro. Ahora la complejidad del trabajo aumenta a medida que las BD y las empresas aumentan, ya que se debe revisar la seguridad en todas las BD, lo mismo para los backups. Al momento de realizar reportes  con datos integrados de varias empresas, la aplicacion debe manejar está funcionalidad y podria no ser tan simple. La perfomance de seguro se beneficia con este ultimo modelo ya que cada BD crece por su cuenta. A medida que la empresa crece en el tiempo y la aplicacion no es afectada en sus procesos con el impacto que lo haria una sola BD con todos los registros de todas las empresas alli dentro.
 
Un tema relevante tambien es el de las actualizaciones. Al actualizar el producto que hemos construido de seguro mas de una vez la nueva version implicaria traer cambios a estructuras de tablas, agregar y/o eliminar tablas. En una sola BD solo debes trabajar en un solo lugar. En el otro caso la complejidad aumentaria se debe llevar la actualizacion a cada BD, una BD sin el cambio realizado o con una actualizacion de manera incompleta puede generar dolores de cabeza.
 
Ambos modelos son aplicables, no podria decir que existe una respuesta definitiva. No emitiria un juicio rapido justificando que un modelo sea mejor que otro. Ambos modelos se utilizan en la realidad y existira de seguro pensamientos encontrados entre desarrolladores. He trabajado en ambos bandos y cada uno tiene los suyo de
bueno y lo suyo de complejo.
 
Saludos desde
Cordoba, Argentina.
 
Tomas Cruz.
 
 
 

J. Enrique Ramos Menchaca

unread,
Sep 12, 2012, 3:37:12 PM9/12/12
to publice...@googlegroups.com
Si utilizas distintas bases de datos, puedes tener una opción de duplicar datos en una base de datos, ej. quiero que todos los clientes estén actualizados en todas las bases de datos, lo podrías hacer por medio de XML, con lo que actualizas en una tabla de clientes, exportas dichos clientes via XML a las demás bases de datos o vía odbc, también podrías realizarlo, esa parte es salvable.


El martes, 11 de septiembre de 2012 11:53:20 UTC-5, Roberto Reátegui Kanashiro escribió:

Luis Mata

unread,
Sep 12, 2012, 3:37:31 PM9/12/12
to publice...@googlegroups.com
No tiene sentido hacer una sola BD multiempresa si los rubros sin diferentes, con eso se esta tratando de indicar que en un solo saco vas a meter papas, cebollas.. Etc. Si las empresas son del mismo rubro esto aplica muy bien y definitivamente debe de ser una sola BD, pero si una empresa es retail, Un Grifo y restaurant.. las realidades y casos son totalmente distintas.
Pero para el caso de Multiempresas del mismo rubro y obviamente del Mismo dueño aplicara la siguiente jerarquía +-:
image
Lo cual, aplicaría perfectamente si vendes Hosting tipo SAP – IBM, pero ese ya es otro tema.
Por el tema de accesos a la información con una seguridad bien estructurada no debería de haber problemas. En este caso también la explotación de información es mucho mas rápido y el desarrollo menos complicado.
 
 


logo2 Mata Figueroa, Luis A.
Procesos y Tecnología
TELF: (00 51 1) 617-4667
RPC : (00 51) 993597297
lm...@cclf.com.pe
www.cclf.com.pe
imgfrm

 
From: tomcrux
Sent: Wednesday, September 12, 2012 2:22 PM
Subject: [vfp] Re: [VFP] Como hacer un sistema multiempresas con MySQL
 
--
 
 
 
image[7].png
logo2[3].png
imgfrm[3].png

Luis Mata

unread,
Sep 12, 2012, 3:38:48 PM9/12/12
to publice...@googlegroups.com
Claro pero son esto es como estar cargándote al muerto, estas haciendo cosas de mas invirtiendo tiempos y recursos.
 


logo2 Mata Figueroa, Luis A.
Procesos y Tecnología
TELF: (00 51 1) 617-4667
RPC : (00 51) 993597297
lm...@cclf.com.pe
www.cclf.com.pe
imgfrm

 
Sent: Wednesday, September 12, 2012 2:37 PM
Subject: [vfp] Re: [VFP] Como hacer un sistema multiempresas con MySQL
 
--
 
 
 
logo2[3].png
imgfrm[3].png

Carlos Miguel FARIAS

unread,
Sep 12, 2012, 5:04:13 PM9/12/12
to publice...@googlegroups.com
Aca el nudo del asunto es para que se quiere un sistema multiempresa.
El problema técnico de si tengo muchas tablas o no o si las tablas crecen mucho son 5 guitas aparte.
Si la aplicación necesita comparar datos de todas las empresas entre si, posiblemente sea mas simple utilizar una sola bd.
Pero cuidado!, creo que ya lo comento Walter, si te cae una inspección del ente impositivo (DGI, AFIP, o como se llame en cada pais), si los datos están en una misma base de datos, estás exponiendo a todas las empresa al ente de contralor.
O sea que, a mi entender, un sistema multiempresa (en una sola bd) puede justificarse para un estudio contable, donde el contador, tiene que manejar datos de sus clientes y entonces, en realidad maneja con una bd los datos profesionales de su estudio.
Pero si no se da ese caso, es preferible tener, los datos en diferentes base de datos (y los datos comunes pueden estar en una bd aparte y si no son datos criticos en archivos xml).
Teniendo las cosas por separado, y ante inspección inminente, drop database clienteAfipiado y YATA!
Saludos: Miguel, La Pampa (RA)

--
 
 
 

logo2[3].png
imgfrm[3].png

Luis Mata

unread,
Sep 12, 2012, 5:30:30 PM9/12/12
to publice...@googlegroups.com
Bueno de las auditorias estatales como en el caso de Perú, no les interesa ni miran el Sistema, esos tíos traen documentaciones Físicas y buscan en lo físico, Tu crees que un Auditor va a venir y se va a tomas el tiempo de aprender como funciona tu Sistema, creen que le interesara. Normalmente hacen cruces de documentos entre distintas empresas relacionadas por alguna transacción y tus declaraciones realizadas. Pero el sistema ni lo ven.
Además no recuerdo en que entidad pero ahí sale quien es el representante legal, testaferro, cuantas empresas diriges, si lavas dinero(jajajaja) pero definitivamente no se basan en tu sistema para ver cuantas empresas diriges.
Tener todo en una sola Base de datos ó tener disgregado por BD con una BD Maestro.. ambos funcionan pero la diferencia radica que el primero es mas fácil de controlar como analista, desarrollador ó consultor, tiene menos código y es de fácil crecimiento ante una empresa en expansión. Mientras lo otro mientras la empresa crece debes de estar metiendo mano a tu código y revisando integralmente si la data esta siendo bien explotada en los reportes.
 
Fuente:
Yo mismo, antes trabajaba con varias BD por empresa y cada vez que se abría otra del mismo rubro, copiaba la BD para la nueva sede, y cuando la parte de gestión, necesitaba consolidar datos, me llamaban indicándome que no sale aquí, allá.. etc. tenia que modificar mi código y revisar los reportes... un lio.
Unifique todo en  una BD bien estructurada y el crecimiento para la empresa fue transparente y mi soporte mas fácil, pero sigo cobrando lo mismo, me estreso menos y tengo mas tiempo para los míos.
 
image


logo2 Mata Figueroa, Luis A.
Procesos y Tecnología
TELF: (00 51 1) 617-4667
RPC : (00 51) 993597297
lm...@cclf.com.pe
www.cclf.com.pe
imgfrm

--
 
 
 
image[2].png
logo2[3].png
imgfrm[3].png
logo2[3].png
imgfrm[3].png

tomcrux

unread,
Sep 12, 2012, 6:38:16 PM9/12/12
to publice...@googlegroups.com
No diria "no tiene sentido" a una BD multiempresa. Vuelvo a repetir, depende del negocio/s y de los requerimientos del cliente.
No hice la salvedad de que al hablar en el mensaje anterior de BD multiempresa, estaria hablando de un mismo cliente que desee gestionar varias empresas.
El hecho de mezclar las empresas por mas que se traten de distinto rubro (para un mismo cliente), no es un argumento valido ya que se puede trabajar sin problemas siempre que se opere con id de empresa. La BD no se entera si trabaja con papas o cebollas. El id determina que son distintas empresas (con diferentes rubros o no), si la aplicacion esta preparada para trabajar asi, lo haria de manera transparente con la BD multiempresa, las papas y cebollas no juegan de manera determinante en ese partido.
El profesional de sistemas  de acuerdo a lo que requiera el cliente y a los recursos que le dispongan a mano, determinara que sera mas conveniente. 
 
Como ejemplo, tenemos el concepto de "ERP" que trabaja de esta forma, propone integrar todos los datos en una sola BD la cual puede ser multiempresa de ser requerido.
 
 
Saludos desde
Cordoba, Argentina.
 
Tomas Cruz.

Luis Mata

unread,
Sep 12, 2012, 7:09:29 PM9/12/12
to publice...@googlegroups.com
No mi estimado, un profesional no acepta automatizar un caos, sino de analizar y proponer mejoras y ordenar los procesos. Los procesos de negocios distintos como su nombre mismo lo dice son distintos. y al final los procesos llegan a ser automatizados teniendo como resultado el orden. ¿Como vas a automatizar en una sola Base de datos la venta de combustibles de un grifo con la venta de productos perecibles y no perecibles de un Super?, ¿como estandarizas las compras, distribución y ventas? .. ¿como profesional creas un desorden total en tu empresa para solucionar el caos del cliente? o mejor propones una mejor alternativa.
 


logo2 Mata Figueroa, Luis A.
Procesos y Tecnología
TELF: (00 51 1) 617-4667
RPC : (00 51) 993597297
lm...@cclf.com.pe
www.cclf.com.pe
imgfrm

 
From: tomcrux
Sent: Wednesday, September 12, 2012 5:38 PM
Subject: [vfp] Re: [VFP] Como hacer un sistema multiempresas con MySQL
 
--
 
 
 
logo2[3].png
imgfrm[3].png

Marcelo Barberis

unread,
Sep 12, 2012, 10:54:18 PM9/12/12
to publice...@googlegroups.com
Estimados
Lo que haria yo es de esta forma, como mi sistema trabaja con una sola BD y dentro de ellas tengo mis tablas con lo que voy a trabajar con mi sistema, dentro de esta BD por ej. la puedo llamar BDSISTEMA y alli tengo cantidad de tablas y con ello hago funcionar mi sistema y tambien dentro de mi sistema tengo tablas fuera de la BD que comunmente las llamo tablas libres, todo este conjunto de tablas y BD lo tengo en una carpeta que la denomino DATA\BASE.
Cuando creo una nueva empresa en una nueva carpeta, lo que hago es copiar de la carpeta DATA\BASE, todo el contenido que son las tablas y la BD y luego procedo a ingresar al sistema y selecciono la empresa, el cual se conecta a la base de datos guardada en la nueva carpeta, y no tengo problema con tener varias bases de datos, por que el sistema que es multiempresa que crea cada empresa en diferente carpetas trabaja con una sola BD la cual tiene sus tablas.
Con SQL lo que yo haria es tener un script con las definicion de la BD y sus tablas y cuando creo una nueva empresa en una nueva carpeta lo que hago es ejecutar el script y guardar la definicion de todas las tablas y BD en la nueva carpeta, y cuando ingresas al sistema selecciona la nueva empresa y el sistema tendria te abrir la BD guardada en la nueva carpeta.
Bueno es una idea lo que te muestro.

--
 
 
 

ZeRoberto

unread,
Sep 13, 2012, 3:31:58 PM9/13/12
to publice...@googlegroups.com
Excelente repuestas, con eso se evitaria hacer doble conexion.
 
Saludos

--
 
 
 

Luis Mata

unread,
Sep 13, 2012, 3:39:16 PM9/13/12
to publice...@googlegroups.com
ummm.. esto de ingresar de una BD a otra BD, repercute en el rendimiento, ya que por cada entrada valida los permisos y esos son tiempos valiosos..
 


Mata Figueroa, Luis A.
Procesos y Tecnología
TELF: (00 51 1) 617-4667
RPC : (00 51) 993597297
lm...@cclf.com.pe
www.cclf.com.pe


 
From: ZeRoberto
Sent: Thursday, September 13, 2012 2:31 PM
--
 
 
 

Neyger Pérez Mayo

unread,
Sep 13, 2012, 4:34:16 PM9/13/12
to publice...@googlegroups.com, lm...@cclf.com.pe
En pruebas que he realizado (hablando de MySQL), quizas no son pruebas con todo el rigor, mas bien pruebas caseras  o de aficionado.. por llamarlo de alguna manera,
 
 
he  visto que el impacto no es muy grande en la validacion de los permisos cuando ya se esta conectado, realmente la validacion de los permisos que tiene un usuario hacia determinada base de datos sencilla, casi casi es contra una tabla (llamada db) en la base de datos master  del motor de mysql , y casi siembre esta en memoria, y el acceso es muy rapido, no es despreciable, pero no imptanta tanto.
 
 
lo que si impacta es la configuracion que le tengas realizada al mysql, los indices y el tamaño de tus tablas, supongamos que le tienes asignado 64 MB de memoria al MySQL server, y esta trabajando con la base de datos1, el mysql al conectar levanta y lee tu archivo o tus archivos de la base de datos (dependiente del engine utilizado), y vamos a suponer que dentro de tus consultas que llevas en el sistema, entre caches, selects, updates, ya te llevas consumiendo unos 50 MB de la memoria asignada , y tratas de hacer un select a una tabla de otra base de datos 2, y si es la primera vez que se le realizad el acceso, pues el MySQL tiene que leer fisicamente el o los archivos de la otra base de datos, esto si tarda, bueno podemos decir solo pasa la primera vez, y dices solo va tardar la primera vez porque pues tiene que cargar los archivos, y bla bla.
 
pero si resulta que la tabla de la otra base de datos (base2)  es algo grande como unos 50 MB por decir (y como solo le tenemos asignado 64MB para el mysql). vas a empezar a ver que el degradamiento de performance es grande. vas empezar a ver como tu foquito del disco duro del servidor .  y adios al rendimiento.
 
 
 
Claro que esto se soluciona asignando mas memoria de trabajo al mysql, pero obviamente eso ya es otra cosa, ya es tunning que hacer al mysql, y claro lo puedes dejar como navajita.
 
 
Pero creo que nada es mejor que probar por cuenta propia, el mysql tiene varias variables que te permiten ver el performance de tus consultas, y que pues te permiten dar una idea  por donde ir para incrementar el rendimiento.

Luis Mata

unread,
Sep 13, 2012, 4:36:56 PM9/13/12
to publice...@googlegroups.com
Dependiendo cuantos objetos tiene tu BD, obviamente si tiene un solo objeto la validación será en milisegundos.. y si tienes... cientos, Miles de objetos?
 


Mata Figueroa, Luis A.
Procesos y Tecnología
TELF: (00 51 1) 617-4667
RPC : (00 51) 993597297
lm...@cclf.com.pe
www.cclf.com.pe


--
 
 
 

tomcrux

unread,
Sep 13, 2012, 5:47:18 PM9/13/12
to publice...@googlegroups.com, lm...@cclf.com.pe
Sobre este comentario, queria aclarar que estariamos hablando de sistemas preparados para llevar adelante procesos de distintos tipos de negocios. Estos sistemas son configurables, de manera que se adapten para que empresas de distintos rubros lo utilicen. Quizas me falto detallar esto que te comento en el mensaje anterior.
Un ABM de productos es esencialmente el mismo, existen detalles los cuales se configurarian por empresa. Pero por lo demas el trabajo es el mismo.
Un informe de ventas, gestion de pedidos, etc. etc. es en esencia lo mismo en cualquier rubro. Si se venden 2 litros de cierto combustible o 2 kilos de papas, es indiferente, si el sistema esta preparado para trabajar de acuerdo a la configuracion de dicha empresa.
Existen muchos ejemplos en el mercado de sistemas que un cliente puede adquirir y aplicar a su/s empresa/s, el cual se adecua a su negocio independientemente de su rubro. 

Luis Mata

unread,
Sep 13, 2012, 6:15:11 PM9/13/12
to publice...@googlegroups.com
En serio puedes dar ejemplo de uno de ellos, porque una cosa es un ERP y otra una empresa que da múltiples soluciones lo cual no significa que sea el mismo ERP, hay software que aplica para negocios particulares pero es totalmente distinto a los estatales.
Yo no digo que no se pueda hacer, por supuesto que se puede hacer meter todo en uno, pero lo engorroso que seria. Algo así como que te compras un SO operativo y con un check lo conviertas a Windows 2008/2012 y con otro check lo conviertas a W7/W8 y con otro a Linux, MS jamás trabajaría así.
Lo que yo digo es un tema de orden mas para ti como empresario, porque al cliente le va a dar igual que tengas 500 consultores soportando el sistema, al final pierdes el control y no sabes por donde empieza ni por donde termina.
 


Mata Figueroa, Luis A.
Procesos y Tecnología
TELF: (00 51 1) 617-4667
RPC : (00 51) 993597297
lm...@cclf.com.pe
www.cclf.com.pe


 
From: tomcrux
Sent: Thursday, September 13, 2012 4:47 PM
--
 
 
 

tomcrux

unread,
Sep 14, 2012, 8:30:55 AM9/14/12
to publice...@googlegroups.com, lm...@cclf.com.pe
Justamente de ese tipo de sistemas me estaba refiriendo. Sistemas ERP, los cuales trabajan con una unica BD.
Ahora, me parece bien tu comentario "no digo que no se pueda hacer", en la practica se hace y se utilizan. Grandes compañias dedicadas al desarrollo de productos ERP lo confirman.
En realidad lo que intento aclarar con mi aporte es que no digamos que una sola BD no es conveniente o que esta mal hacer algo asi (que es lo que lei varios comentarios atras) sino que es una alternativa. Como tal, esta alternativa trae sus pro y sus contras. Revisar requerimientos, disponibilidad de recursos y estimar crecimiento del cliente, es una de las claves para determinar que conviene en cada caso.
 
Sobre un caso real, comento que trabaje por 5 años en una empresa de software aqui en Argentina, la cual comercializa un producto ERP el cual trabaja de manera multiempresa. El producto se llama PREM y hasta el momento en que cambie de trabajo se encontraba en mas de 90 implementaciones de compañias de diferentes rubros. A su vez muchas de estas "empresas cliente" tenian  definidas varias empresas en su sistema para gestionar su negocio.
 
 
Saludos desde
Cordoba, Argentina.
 
Tomas Cruz.

Luis Mata

unread,
Sep 14, 2012, 9:53:28 AM9/14/12
to tomcrux, publice...@googlegroups.com
Te comento que estamos en plena  implementación del SAP, con servidores alojados en IBM, productos de Comercialización, Industrial y una minera, si bien están en el mismo servidor no están ligados el uno con el otro en ningún sentido.

Dante

unread,
Sep 14, 2012, 11:40:06 AM9/14/12
to publice...@googlegroups.com, tomcrux, lm...@cclf.com.pe
Cada ERP(SAP,DYNAMICS,EPICOR,ETC) tiene su manejo distinto de informacion, algunas dentro de una tabla de configuracion administran el ID de la empresa otras crean tablas por empresa dentro de una BD," miempresa01.ventasm miempresa02.ventas ".

Por eso en una implementacion Multiempresa ya sea en SAP u otros ERP conocidos siempre te preguntan el proceso en todas las empresas es el mismo o tiene un parecido del 90%?, porque de acuerdo a eso ellos deciden si es una sola instancia o son varias.

Pero tambien depende de la disponibilidad de la informacion de todas las empresas, Que pasa si se cae la BD toda el grupo de empresas se queda congelado en cambio si lo tienes en BD distintas se cae una las otras siguen trabajando igual hasta que se solucione la otra. Es por eso que muchos ERP conocidos te dan requerimientos recomendables de hardware para su implementacion y no cualquier hijo de vecino puede tocar esas BD.


Dante
Reply all
Reply to author
Forward
0 new messages