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
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
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
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...
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...
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.
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...
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...
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
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 93 guests