Sistema multi empresa con mysql
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Sistema multi empresa con mysql
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...
* 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!
Gracias a mi Dios ante todo!
Re: Sistema multi empresa con mysql
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 _ se llamen igual en cada tabla.
Dale una mirada al tipo de tablas MERGE.
Saludos y éxito
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 _ 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
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: Sistema multi empresa con mysql
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, graciasArmando 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 _ se llamen igual en cada tabla.
Dale una mirada al tipo de tablas MERGE.
Saludos y éxito
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
Re: Sistema multi empresa con mysql
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
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
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: Sistema multi empresa con mysql
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...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
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
Re: Sistema multi empresa con mysql
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
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
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: Sistema multi empresa con mysql
Saludos, el detalle de usar una sola BD es que ...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
* 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...
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
Re: Sistema multi empresa con mysql
Hola Ing. Jose Luis buenos dias que tal como esta, espero que bien.joseluisysturiz wrote:Saludos, el detalle de usar una sola BD es que ...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
* 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...
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.
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: Sistema multi empresa con mysql
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...ACC69 wrote:Hola Ing. Jose Luis buenos dias que tal como esta, espero que bien.joseluisysturiz wrote:Saludos, el detalle de usar una sola BD es que ...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
* 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...
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.
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
Re: Sistema multi empresa con mysql
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 pensarjoseluisysturiz wrote:Saludos, el detalle de usar una sola BD es que ...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
* 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...
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: Sistema multi empresa con mysql
Saludos, no hay problema, y no importa si las empresas son vinculadas o no, la idea es que el sistema sea multi empresa, gracias...
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
Re: Sistema multi empresa con mysql
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...
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...
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: Sistema multi empresa con mysql
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...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...
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
Re: Sistema multi empresa con mysql
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
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
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: Sistema multi empresa con mysql
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...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
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!