Sobre Relaciones en Access

Dándome una vuelta por los foros de Access me he encontrado la pregunta que ha motivado este post. A lo largo de los años he visto muchas veces que los usuarios se arrancan a desarrollar una base de datos en Access porque parece sencillo, y creedme que lo es, pero sin una buena base y se cometen muchos errores y nos da muchos quebraderos de cabeza.

Sobre Tablas Relaciondas

La base de Access son sus tablas relacionadas y entender las relaciones es fundamental para empezar con buen pie un proyecto en Microsoft Access.

De Muestra un Botón

Y como no hay mejor forma de ver las cosas que con un ejemplo, el que me he encontrado en los foros hoy me viene como anillo al dedo.

Tengo que controlar «Máquinas», cada una de ellas tienen varios «Elementos», algunas tendrán 2, otras 5 y otras 50 elementos. También tengo otra tabla «Elementos» donde daré de alta la descripción de los elementos mas comunes que tengan mis máquinas.

He aquí la construcción de las tablas del usuario, para el caso se ha creado una tabla «tblMaquinas» con el idmáquina, la descripción y una serie de campos «Elemento1″, Elemento2″, Elemento3″……..»Elemento30».

O sea, que tiene una tabla con mas de 30 campos. Cada uno de esos campo quiere relacionarlos con la tabla «tblElementos» para poder asignarles los elementos que están en esa tabla. El hecho de crearse tantos campos, aunque el usuario no lo especifica, doy por hecho de que es porque no puede determinar la cantidad de elementos por máquina, quizás algunas lleven 5 solo, o 3, o puede que tenga una hasta con 30 elementos y el usuario, para curarse en salud a añadido a su tabla hasta 30 campos, para que no le falten.

Errores de ese diseño

¿Si mañana añadimos una máquina con mas de 30 elementos, tenemos que añadir mas campos a la tabla?

¿Si la mayoría de las máquinas tienen un promedio de 10 elementos que hacemos con el espacio que no «Rellenamos» hasta los 30 elementos? Ah, vale, lo olvidaba, intuyo que no sabes que los campos, aunque no se introduzca información en ellos, Access se reserva el espacio que ocupan en cada registro nuevo. Por ejemplo, un campo Nombre de 50 caracteres, para que no me falte, si en un registro añadimos «Pepe», solo cuatro caracteres, el resto hasta los 50 seguirán ocupando espacio.

El diseño correcto

Lo correcto es tener una tabla «tblMaquinas» con los campos que sepamos que son fijos, por ejemplo el nombre de la misma, quizás su número de serie, su ubicación…etc. Y para los elementos otra tabla que llamaremos, por ejemplo «tblMaquinasElementos», esta tabla contendrá un campo «IdMaquina» que relacionaremos con la tabla «tblMaquinas» y otro campo «IdElemento» que relacionaremos con la tabla «Elementos»

Relaciones

 

Estas tres tablas podríamos verlas en un formulario, que es donde yo siempre veo mejor las ideas, de la siguiente manera:

Formularios

Como se puede observar, con esta construcción, me importa un pimiento la cantidad de elementos que pueda tener una máquina. A cada una le asignaré solo los que tenga, sin desperdiciar campos de mas.

Así de simple y sencillo. No obstante, si deseas ampliar información date una vuelta por los cursos de iniciación y avanzados que estamos preparando.

4 comentarios

  1. Hola, les agradezco esta web, aunque veo que tienen aún poco contenido me ha servido de ayuda para mi proyecto.

  2. Angel. Muchas gracias por tu enseñanza y compartir tus conocimientos, soy de cali valle colombia y aficionado a las bases de datos, soy contador publico pero mi aficion son las bd. Me encanto lo de filemarke, me estoy iniciando en bd, y esto me ilustra mucho.

    Gracias nuevamente.

    1. Gracias a ti Luis por leerme, son vuestros comentarios los que me animan a seguir escribiendo artículos.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.