Access. Relaciones en Base de datos dividida: con las tablas o con las consultas/formularios?

Estoy realizando una aplicación compleja con Access con idea de que sea multiusuario; lo tenía todo en una única base de datos y al dividir en tablas y consultas/formulario he visto que las relaciones se han movido al archivo de las tablas.

Las tablas estarían compartidas en red.

Mi lógica me dice que las relaciones entre tablas deberían de estar junto con las consultas... Pero realmente no sé qué sería lo correcto, cuál iría mejor, más rápido, qué opción genera a la larga menos errores de relaciones rotas, etc...

Se agradece cualquier consejo al respecto

Respuesta
2

Si haces relaciones entre las tablas, en la ventana de relaciones o creando campos de búsqueda con el asistente), éstas se guardarán en el archivo que contenga las tablas (el back end), lógicamente (las relaciones directas entre tablas forman parte de la estructura de tu archivo).

Si no relacionas las tablas directamente entre sí (es otra opción), y haces las relaciones por medio de consultas cuando lo necesites, o directamente en el origen de los formularios e informes, esas relaciones se guardan como parte de cada consulta, y por tanto, estarán en el front end (donde tienes las consultas, formularios e informes).

Yo personalmente prefiero relacionar las tablas a nivel de diseño (para algo access es una base de datos relacional), y así me despreocupo de crear consultas, hacer ciertas validaciones de datos...

¿Qué sistema es más correcto?, pues depende de a quien le preguntes, yo ya te comenté antes que prefiero hacer relaciones entre tablas, pero, por ejemplo Icue, te diría que no son necesarias y lo puedes hacer con consultas... Al final depende un poco de tus gustos y cómo te sientas cómodo trabajando.

Un saludo.


Muchas gracias Sveinbjorn,

al tener hechas ya todas las relaciones entre tablas entiendo más viable tenerlas en el back end.

Muy útil tu aclaración,

Saludos

1 respuesta más de otro experto

Respuesta
1

Yo siempre trabajo separando el front end y el back end, porqué además ser poder articular un entorno multi-usuario también es mucho más sencillo actualizar el front end sin preocuparme de los datos.

Las relaciones las tengo como tablas anexadas ya que así, cada vez que abro BDD, hago una verificación de que las conexiones no se hayan roto (a veces, por ejemplo, los informáticos me reconfiguran el servidor y me modifican el path del back end.

El todos mis front end tengo una tabla de parámetros con dos campos: IdParam que identifica el parámetro (p.e. "CarpetaBB") i Param que es el parámetro en sí (p.e. c:\aplicación). Esta table me es útil para muchas cosas que pueden ser distintas de una instalación a otra.

Entonces al abrir la BDD, en el primer formulario, evento Al Abrir, recorro todos TableDef y si la propiedad Connect no está vacía, sé que se trata de una table anexada y refresco la conexión con el parámetro correspondiente.

Sin embargo, antes de hacerlo, lanzo una función que me he constriodo que verifica que la ruta del parámetro exista, para detectar así cambios descontrolados en los servidores, y en caso de incidencia abro un formulario de mantrenimiento de los parámetros para que se puede actualizar la nueva ruta.

Si te interesa código de ejemplo me lo dices.

Muchas gracias,

Eso mismo es lo que tengo implementando en mi programa ya que además con el mismo frontend puedo configurar la consulta a distintos backends.

Gracias de nuevo por el interés y por compartir vuestras experiencias ya que así podemos aprender mucho todos,

Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas