PDA

Ver la Versión Completa : diseño base de datos


cval
18-03-2004, 13:09:25
Hola,

Tengo que realizar una aplicación para un grupo de empresas 5, estas empresas están ubicadas en el mismo despacho o conectadas a el de forma remota, pero son practicamente independientes, pero comparten una misma tabla de clientes y posiblemente alguna otra más,
mi pregunta es si es preferible utilizar una única base de datos para todas las empresas o una diferente para cada empresa.
si son varias bases de datos, se pueden hacer consultas entre ellas?

Gracias

guillotmarc
18-03-2004, 14:58:06
Hola.

No se pueden realizar consultas cruzadas entre dos bases de datos. Las dos alternativas (1 única base de datos o 5 bases de datos independientes) tienen sus propias ventajas y inconvenientes.

Normalmente me inclinaría por las Bases de Datos independientes (y acaso poner los datos comunes en otra base de datos general). Aunque el hecho de que no se puedan realizar consultas que unan datos de tablas en distintas bases de datos, te fuerza bastante a usar una única Base de Datos (en el caso de que vayas a necesitar consultas de ese tipo).

Saludos.

cauce
19-03-2004, 13:55:21
Ciertamente resulta complicado de analizar. Yo personalmente haría lo posible por tener centralizadas, al menos, las tablas comunes en una base de datos central. Las consultas que afectaran a estas tablas y a la base de datos local, deberías de realizarla en dos pasos. Una primera query a la BD central, y una sgte query a la local filtrando por los resultados obtenidos en la primera.

Fijate que tendrás que hilar muy fino en los algoritmos y las conexiones. Si vas a trabajar con delphi tendrás que ser especialmente cuidadadoso y no permitir que por ejemplo un grid esté continuamente pidiendo datos ante un scroll. Personalmente me inclinaría por un desarrollo sobre .NET, mucho más eficiente en este sentido ya que encapsula los resultados obtenidos de una consulta a la BD en un xml en local. Cualquier movimiento que efectues en el grid (incluso filtros y ordenacions) los aplicas sin conectarte nuevamente a la BD remota. Claro que usando esta tecnología y contando con una conexión punto a punto decente, se podría centralizar en una sola BD.

Si se trata de una VLAN sobre ADSL, probablemente te encuentres con la limitacion de 128kb de comunicación real bidireccional, salvo que contrates una 2048kb que te proporcionan una velocidad bidireccional de 300kb. Vamos, que yo haría pruebas exhaustivas durante un periodo inicial de consultoría orientado a seleccionar la tecnología más adecuada.

No descartaría la posibilidad de trabajar con BD's independientes y una central para los datos comunes que tb estarían duplicados en local en cada sede, de modo que en las sedes se trabajaría en local. Mediante tareas programadas podrías realizar exportaciones/actualizaciones de datos comunes. Bien mediante accesos a BD o mediante exportacion de ficheros xml que luego se cargan en la bd central, se procesan y se vuelven a repartir en las sedes para la carga/actualización de datos. Esto puede ser una complicación tremenda para evitar inconsistencia en datos, duplicidad...etc

guillotmarc
19-03-2004, 14:14:03
Hola.

Personalmente me inclinaría por un desarrollo sobre .NET, mucho más eficiente en este sentido ya que encapsula los resultados obtenidos de una consulta a la BD en un xml en local. Cualquier movimiento que efectues en el grid (incluso filtros y ordenacions) los aplicas sin conectarte nuevamente a la BD remota.
Delphi ya hace años (desde Delphi 3) que permite trabajar de esta forma, con la tecnología MIDAS (ahora Datasnap) y los Clientdatasets.

No descartaría la posibilidad de trabajar con BD's independientes y una central para los datos comunes que tb estarían duplicados en local en cada sede, de modo que en las sedes se trabajaría en local. Mediante tareas programadas podrías realizar exportaciones/actualizaciones de datos comunes. Bien mediante accesos a BD o mediante exportacion de ficheros xml que luego se cargan en la bd central, se procesan y se vuelven a repartir en las sedes para la carga/actualización de datos. Esto puede ser una complicación tremenda para evitar inconsistencia en datos, duplicidad...etc
Ciertamente es una buena alternativa. La hemos comentado en algunos hilos, por ejemplo, http://www.clubdelphi.com/foros/showthread.php?t=5546 (Si usas la opción de Buscar en el Foro, encontrarás más hilos dedicados al tema).

Saludos.