Sistema multi empresa con mysql

Sistema multi empresa con mysql

Postby joseluisysturiz » Mon Feb 22, 2021 6:51 pm

Saludos, tengo una pequeña duda y espero sus ayudas, tengo un sistema que usa mysql uniempresa, ahora debo pasarlo a multi empresa y debo emitir reportes y consultas consolidadas de todas las empresas , que sería mejor ..

* crear una database por cada empresa

* usar una sola database y en las tablas crear un campo que identifique a que empresa pertenece

* alguna otra sugerencia o recomendacion

Gracias...
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Sistema multi empresa con mysql

Postby Armando » Mon Feb 22, 2021 7:45 pm

José Luis:

Mis cinco cents, te recomiendo una base de datos por cada empresa, así la manipulación
sería más eficiente.

Respecto a los reportes, no vas a tener ningún problema pues puedes tomar información
de diferentes tablas ubicadas en diferentes bases de datos, además esa tarea se la dejas
al motor de MySQL, solo te recomiendo que los campos se llamen igual en cada tabla.

Dale una mirada al tipo de tablas MERGE.

Saludos y éxito
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Sistema multi empresa con mysql

Postby joseluisysturiz » Mon Feb 22, 2021 7:59 pm

Armando wrote:José Luis:

Mis cinco cents, te recomiendo una base de datos por cada empresa, así la manipulación
sería más eficiente.

Respecto a los reportes, no vas a tener ningún problema pues puedes tomar información
de diferentes tablas ubicadas en diferentes bases de datos, además esa tarea se la dejas
al motor de MySQL, solo te recomiendo que los campos se llamen igual en cada tabla.

Dale una mirada al tipo de tablas MERGE.

Saludos y éxito


Armando, estas conformando mi iniciativa de usar database por empresa, las tablas y sus campos seran ños mismos, en relación a los reportes y consultas ya revisare, gracias
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Sistema multi empresa con mysql

Postby hmpaquito » Mon Feb 22, 2021 8:33 pm

Hola,

Además de tus dos propuestas hay otra que sería "intermedia": Crear tablas por empresa: Ventas001 / Ventas002. Esto requeriría tener "alias" para cada tabla cTablaVentas:= "Ventas"+ oEmpresa:CodEmp

Partiendo de tu situacion, para ser lo más compatible posible, lo más rápido y limpio en el código existente es una bb.dd. por cada empresa.

Mis dos céntimos
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Sistema multi empresa con mysql

Postby joseluisysturiz » Tue Feb 23, 2021 2:54 am

hmpaquito wrote:Hola,

Además de tus dos propuestas hay otra que sería "intermedia": Crear tablas por empresa: Ventas001 / Ventas002. Esto requeriría tener "alias" para cada tabla cTablaVentas:= "Ventas"+ oEmpresa:CodEmp

Partiendo de tu situacion, para ser lo más compatible posible, lo más rápido y limpio en el código existente es una bb.dd. por cada empresa.

Mis dos céntimos


Saludos, no entiendo bien tu opción, creo lo mas aceptable y funcional es una DB por empresa..por eso fue mi primera idea, igual gracias por tu sugerencia..Saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Sistema multi empresa con mysql

Postby artu01 » Tue Feb 23, 2021 5:08 am

Jose Luis:
Para mi seria una sola BD, una sola tabla ventas y agregar un campo codemp en la tabla vtas para que en cada movimiento transaccional en la tabla guardes el codemp que lo actualizo, es alli que si variaría ligeramente tu código fuente pero para los reportes no sufrirían ningún cambio el código fuente
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 397
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: Sistema multi empresa con mysql

Postby joseluisysturiz » Tue Feb 23, 2021 11:59 am

artu01 wrote:Jose Luis:
Para mi seria una sola BD, una sola tabla ventas y agregar un campo codemp en la tabla vtas para que en cada movimiento transaccional en la tabla guardes el codemp que lo actualizo, es alli que si variaría ligeramente tu código fuente pero para los reportes no sufrirían ningún cambio el código fuente


Saludos, el detalle de usar una sola BD es que ...
* voy a teber todos los datos en una solatabla, eso sumentatria el tanaño de las misnas y el tiempo de respuesta
* tengo que agregar en todas lad tablas el campo que identifique a que empresa pertenece
* tengo que modificar todas las consultas y reportes con WHERE para saber a queempresa pertenece
* cuando haga respaldo como debe ser por empresa debo modificar el sistema de respaldo para que solo seleccione los registros de la empresa que respaldo
* otros

Todo eso lo evito usando una BD por empresa, solo debo al seleccionar la empresa cambiar la conexión a esa BD y listo...sin ningun cambio en códigos...es mi punto y análisis que hice..igual gracias por tu sugerencia...Saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Sistema multi empresa con mysql

Postby ACC69 » Tue Feb 23, 2021 3:05 pm

joseluisysturiz wrote:
artu01 wrote:Jose Luis:
Para mi seria una sola BD, una sola tabla ventas y agregar un campo codemp en la tabla vtas para que en cada movimiento transaccional en la tabla guardes el codemp que lo actualizo, es alli que si variaría ligeramente tu código fuente pero para los reportes no sufrirían ningún cambio el código fuente


Saludos, el detalle de usar una sola BD es que ...
* voy a teber todos los datos en una solatabla, eso sumentatria el tanaño de las misnas y el tiempo de respuesta
* tengo que agregar en todas lad tablas el campo que identifique a que empresa pertenece
* tengo que modificar todas las consultas y reportes con WHERE para saber a queempresa pertenece
* cuando haga respaldo como debe ser por empresa debo modificar el sistema de respaldo para que solo seleccione los registros de la empresa que respaldo
* otros

Todo eso lo evito usando una BD por empresa, solo debo al seleccionar la empresa cambiar la conexión a esa BD y listo...sin ningun cambio en códigos...es mi punto y análisis que hice..igual gracias por tu sugerencia...Saludos... :shock:


Hola Ing. Jose Luis buenos dias que tal como esta, espero que bien.

En mi punto de vista yo te sugiero crear tablas pada cada empresa, no es recomendable crear una sola tabla para multiempresas, imaginese si tendria que reindexar una sola empresa o darle mantenimiento a una sola empresa de los 99 empresas que contiene en una sola tabla y mientras otros estan usando misma tabla compartiendo para muchos usuarios se estaria alentando demasiado la velocidad cuando algun usuario detecte que esta lento al abrir la base de datos, yo tengo sistema de contabilidad de compac y he visto como esta el contenido de la BD y por cada nueva empresa se crea una nuevas tablas.

Otro punto y si el usuario desea trasladar su informacion completa o sea toda la tabla a otra empresa, le estaria trasladando todas las empresas a otra computadora y si se daña la tabla se dañaria toda la informacion dentro de esa tabla imaginese como se sentiria el usuario o el dueño del sistema.

Asi que lo mas recomendable y sano es crearte una tabla para cada empresa y evitar modificar tu reporte condicionando para cada ID de empresa.

Otra sugerencia podrias crear carpeta por cada empresa y dentro de esa carpeta las tablas sin ningun problema.
Ejemplo:

C:\EMP01\TABLAS
C:\EMP02\TABLAS
C:\EMP03\TABLAS
C:\EMP04\TABLAS

Sin necesidad de crear alias, simplemente identificando a que carpeta esta alojada las tablas para cada empresa....mi punto de vista
y las ideas...


Saludos y mi punto de vista y las ideas.

Atte: Adriano C. C.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: Sistema multi empresa con mysql

Postby joseluisysturiz » Tue Feb 23, 2021 3:23 pm

ACC69 wrote:
joseluisysturiz wrote:
artu01 wrote:Jose Luis:
Para mi seria una sola BD, una sola tabla ventas y agregar un campo codemp en la tabla vtas para que en cada movimiento transaccional en la tabla guardes el codemp que lo actualizo, es alli que si variaría ligeramente tu código fuente pero para los reportes no sufrirían ningún cambio el código fuente


Saludos, el detalle de usar una sola BD es que ...
* voy a teber todos los datos en una solatabla, eso sumentatria el tanaño de las misnas y el tiempo de respuesta
* tengo que agregar en todas lad tablas el campo que identifique a que empresa pertenece
* tengo que modificar todas las consultas y reportes con WHERE para saber a queempresa pertenece
* cuando haga respaldo como debe ser por empresa debo modificar el sistema de respaldo para que solo seleccione los registros de la empresa que respaldo
* otros

Todo eso lo evito usando una BD por empresa, solo debo al seleccionar la empresa cambiar la conexión a esa BD y listo...sin ningun cambio en códigos...es mi punto y análisis que hice..igual gracias por tu sugerencia...Saludos... :shock:


Hola Ing. Jose Luis buenos dias que tal como esta, espero que bien.

En mi punto de vista yo te sugiero crear tablas pada cada empresa, no es recomendable crear una sola tabla para multiempresas, imaginese si tendria que reindexar una sola empresa o darle mantenimiento a una sola empresa de los 99 empresas que contiene en una sola tabla y mientras otros estan usando misma tabla compartiendo para muchos usuarios se estaria alentando demasiado la velocidad cuando algun usuario detecte que esta lento al abrir la base de datos, yo tengo sistema de contabilidad de compac y he visto como esta el contenido de la BD y por cada nueva empresa se crea una nuevas tablas.

Otro punto y si el usuario desea trasladar su informacion completa o sea toda la tabla a otra empresa, le estaria trasladando todas las empresas a otra computadora y si se daña la tabla se dañaria toda la informacion dentro de esa tabla imaginese como se sentiria el usuario o el dueño del sistema.

Asi que lo mas recomendable y sano es crearte una tabla para cada empresa y evitar modificar tu reporte condicionando para cada ID de empresa.

Otra sugerencia podrias crear carpeta por cada empresa y dentro de esa carpeta las tablas sin ningun problema.
Ejemplo:

C:\EMP01\TABLAS
C:\EMP02\TABLAS
C:\EMP03\TABLAS
C:\EMP04\TABLAS

Sin necesidad de crear alias, simplemente identificando a que carpeta esta alojada las tablas para cada empresa....mi punto de vista
y las ideas...


Saludos y mi punto de vista y las ideas.

Atte: Adriano C. C.


Saludos colega, todo lo que me dice es correcto y válido...si yo usara DBF, pero estoy usando MySql, y la forma de hacer lo que sugieres es creando Base de Datos por emptesa (BD), que harían la función de directorios por cada empresa, gracias... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Sistema multi empresa con mysql

Postby artu01 » Tue Feb 23, 2021 7:19 pm

joseluisysturiz wrote:
artu01 wrote:Jose Luis:
Para mi seria una sola BD, una sola tabla ventas y agregar un campo codemp en la tabla vtas para que en cada movimiento transaccional en la tabla guardes el codemp que lo actualizo, es alli que si variaría ligeramente tu código fuente pero para los reportes no sufrirían ningún cambio el código fuente


Saludos, el detalle de usar una sola BD es que ...
* voy a teber todos los datos en una solatabla, eso sumentatria el tanaño de las misnas y el tiempo de respuesta
* tengo que agregar en todas lad tablas el campo que identifique a que empresa pertenece
* tengo que modificar todas las consultas y reportes con WHERE para saber a queempresa pertenece
* cuando haga respaldo como debe ser por empresa debo modificar el sistema de respaldo para que solo seleccione los registros de la empresa que respaldo
* otros

Todo eso lo evito usando una BD por empresa, solo debo al seleccionar la empresa cambiar la conexión a esa BD y listo...sin ningun cambio en códigos...es mi punto y análisis que hice..igual gracias por tu sugerencia...Saludos... :shock:

Sorry jose luis no habia leido bien yo me referia a una empresa con sucursales o tiendas, pero si son empresas no vinculadas entonces estoy de acuerdo con tu forma de pensar
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 397
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: Sistema multi empresa con mysql

Postby joseluisysturiz » Tue Feb 23, 2021 8:07 pm

Saludos, no hay problema, y no importa si las empresas son vinculadas o no, la idea es que el sistema sea multi empresa, gracias... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Sistema multi empresa con mysql

Postby cmsoft » Tue Feb 23, 2021 10:57 pm

Jose Luis, mis 2 ctvos.
Creo que si tienes acceso ilimitado a la base de datos, es una muy buena opción una base por cada empresa. El sistema es el mismo, solo tiene que saber a que base conectarse para cada empresa.
Claro que todo depende de la cantidad de información que genere cada empresa, y la capacidad de tu servidor.
Yo tengo algo similar armado, y funciona muy bien.
Como aporte, te cuento de mi experiencia, tengo una base de datos de CONTROL donde tengo en ella cada empresa identificada, en una tabla. Dicha tabla me dice de cada empresa, cual es su identificación, estado, etc. e incluso me dice en que hosting y que base de datos usa. De esta manera, puedo tener las bases de datos en diferentes servidores.
Espero te sirva...
User avatar
cmsoft
 
Posts: 1189
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Sistema multi empresa con mysql

Postby joseluisysturiz » Tue Feb 23, 2021 11:13 pm

cmsoft wrote:Jose Luis, mis 2 ctvos.
Creo que si tienes acceso ilimitado a la base de datos, es una muy buena opción una base por cada empresa. El sistema es el mismo, solo tiene que saber a que base conectarse para cada empresa.
Claro que todo depende de la cantidad de información que genere cada empresa, y la capacidad de tu servidor.
Yo tengo algo similar armado, y funciona muy bien.
Como aporte, te cuento de mi experiencia, tengo una base de datos de CONTROL donde tengo en ella cada empresa identificada, en una tabla. Dicha tabla me dice de cada empresa, cual es su identificación, estado, etc. e incluso me dice en que hosting y que base de datos usa. De esta manera, puedo tener las bases de datos en diferentes servidores.
Espero te sirva...


Saludos colega, por los momentos el sistema está en iba red Local, pero para no tener que hacer instalación de mysql en cada pc, se consideró hacer el sistema multi empresa para cuando se lleve a web, lo cual ya trabajo en ello, este adelantado esa parte. Lo otro es que es un mismo dueño de todas las empresas, por esi a él hay que hacerle reportes consolidados e individuales por empresa, solo me faltan los consolidados, cualquier duda por aca la haré saber, gracias por tus 2 ctv... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Sistema multi empresa con mysql

Postby cmsoft » Tue Feb 23, 2021 11:32 pm

José Luis, para cualquier consulta que necesites, cuenta conmigo.
Los consolidados simplemente tienes que anteponer el nombre de la base de datos a cada tabla (ya que todas las tablas se llaman igual en las distintas bases de datos) y hacer el UNION de los datos que quieres sacar.
Ejemplo :
SELECT res.* FROM ( SELECT SUM(importe ) as importe, 1 as empresa FROM base1.ventas WHERE fecha BETWEEN '2020-01-01' AND '2020-12-31' UNION SELECT SUM(importe ) as importe, 2 as empresa FROM base2.ventas WHERE fecha BETWEEN '2020-01-01' AND '2020-12-31') AS res
User avatar
cmsoft
 
Posts: 1189
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Sistema multi empresa con mysql

Postby joseluisysturiz » Tue Feb 23, 2021 11:58 pm

cmsoft wrote:José Luis, para cualquier consulta que necesites, cuenta conmigo.
Los consolidados simplemente tienes que anteponer el nombre de la base de datos a cada tabla (ya que todas las tablas se llaman igual en las distintas bases de datos) y hacer el UNION de los datos que quieres sacar.
Ejemplo :
SELECT res.* FROM ( SELECT SUM(importe ) as importe, 1 as empresa FROM base1.ventas WHERE fecha BETWEEN '2020-01-01' AND '2020-12-31' UNION SELECT SUM(importe ) as importe, 2 as empresa FROM base2.ventas WHERE fecha BETWEEN '2020-01-01' AND '2020-12-31') AS res


Buenisimo cmsoft, y lo de la BD control no se me había ocurrido y es lógico, una sola tabla con los datos de las empresas que sirva como eje para cambio de una a otra y que puedo controlar cual fue la última que el usuario entró y traer esa empresa por defecto para no tener que preguntar cada ves que el usuario salga a que empresa va y si se quiere cambiar de empresa lo haga dentro de la que está trabajando...se me vino esa idea, veré cómo me va..y aviso...Gracias... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 84 guests