Me preguntaba un lector recientemente cómo debía crear las tablas para gestionar su biblioteca y decidí escribir este artículo ya que la mayoría de las veces abarcamos temas más complejos olvidándonos de los que empiezan a utilizar Access, así pues ¿Qué tablas necesito para poder gestionar mi biblioteca?
La pregunta la vamos a responder de forma genérica pues desconozco los pormenores de su aplicación cómo tampoco sé si se trata de una biblioteca particular o una pública donde se requiera un control sobre el alquiler de los libros. Empecemos por lo principal, “Los Libros”.
Los libros
En una biblioteca lo que queremos controlar son los libros que tenemos en ella, hagamos un ejercicio y pensemos en los datos que necesitamos almacenar de ellos:
Nota: he utilizado espacios en los nombres de las tablas para que se entienda mejor, lo cual, aunque funcional, nos es lo correcto. En la normalización de los nombres de las tablas se aconseja no usar espacios, por ejemplo: “FechaDeLanzamiento”
Lo primero que tenemos que definir es un campo clave. Un campo por el que identifiquemos inequívocamente cada uno de los libros… ¡EL TÍTULO, EL TÍTULO! Aguaaaaaanta, que has corrido mucho, el título podría ser pero no nos vale porque se puede repetir. Te puedes encontrar con el mismo título en ediciones de años diferentes por lo que no nos valdría. Un dato que sería único para cada libro puede ser el número ASIN o ISBN, que tiene cada libro que debería ser único.
El segundo punto es determinar si hay datos que debieran de ir en tablas aparte, veamos un ejemplo:
ASIN |
Título | Autor |
B0046H9ZE0 |
Confieso | Ramón Cerda |
B00J2B17IK |
La ira de los Caídos | Daniel Granados Rodríguez |
B00634ILGW |
El arqueólogo | Martí Gironell |
B0062XCKWA |
Dime quién soy | Julia Navarro |
B00ATT9QRK |
El Fantasma de los sueños | Ramón Derda |
El primero y el último son del mismo autor “Ramón Cerda”. Ahora supongamos que queremos hacer una búsqueda de todos los libros que tenemos de dicho autor. ¿Cuál crees que me va a aparecer? Si te fijas bien verás que sólo aparece el primero porque el último contiene una errata en el nombre que evitará que aparezca en nuestra búsqueda. ¿Cómo evitamos en la medida de lo posible esos errores?
Teoría de la división de tablas
Si prevemos que en uno de nuestros campos puede repetirse la información de un registro a otro, y con ello, cometer nosotros errores a la hora de escribir los datos, debemos dividir la tabla.
¿Y si tenemos una tabla donde dar de alta los autores? Si fuera así, sólo necesitaríamos dar de alta una sola vez al autor en vez de tantas veces como libros suyos tengamos en la base de datos.
Crearemos una tabla para los autores con los siguientes campos:
Vamos a rellenarla:
Relacionando las dos tablas
Ahora debemos de cambiar la forma en la que, desde la tabla Libros, hacemos mención a su autor. En vez de escribir su nombre lo que haremos será escribir el código del autor de la tabla autores que identificará el autor inequívocamente. Lo primero es cambiar el Tipo de Datos del campo autor, de la tabla Libros, de texto a numérico puesto que ahora no almacenaremos el nombre sino el código del autor.
Mi consejo es que este tipo de operaciones se piensen concienzudamente antes de empezar a crear tablas. Una vez creadas y con datos introducidos, cambiar un campo de tipo texto a numérico provocará que todo el texto que hubiera en dicho campo se pierda, por ello, coge bolígrafo y papel y dedica un rato a apuntar tus necesidades.
Y ahora relacionamos las tablas:
Esa sería la estructura correcta, y el mecanismo para introducir el autor en la tabla Libros sería configurar, en dicho campo un cuadro combinado para que muestre los nombres de los autores en vez de su código, pero eso lo trataremos en otro artículo.
Ahora, sobre lo que se ha explicado, observa del resto de campos de la tabla Libros y determina, cuáles de ellos podríamos dividir. Aquí la pista:
Como extra, si lo que necesitamos es controlar el alquiler/préstamo de los libros debemos de crear dos tablas más. Una para los lectores que se llevarán los libros y otra que relacione los lectores con los libros, más o menos así:
Con esta estructura estaríamos diciendo que un libro se puede alquilar varias veces y que un Lector puede alquilar varios libros. La tabla alquileres tiene relaciones de uno a varios con los Libros y los Lectores.
Hasta aquí un análisis sencillo, el lector tendrá que identificar todas sus necesidades y determinar si es necesario dividir tablas o no.
Otras referencias
En el blog de programadordepalo puedes encontrar una serie de cuatro artículos que complementan lo visto en este artículo sobre la normalización y relaciones de las tablas en Microsoft Access.
esta interesante esta informacion deseo que me ayuden para enviar desde los primeros pasos para una base de datos ya que no he manipulado.
Hola qué tal podrías ayudarme necesito ayuda acerca de esto!
BUEN PROGRAMA
buena la explicación pero el sonido muy defectuoso, me gustaría profundizar mas sobre el tema de BD.
Hola, soy administrador de sistemas en una preparatoria. Y me están solicitando una aplicación para gestionar una biblioteca por lo que realicé las tablas tal y como aquí se muestra pero al momento de establecer la relación entre la tabla libros/editorial con la tabla editorial/IdEditorial me aparece el siguiente error:
«La relación debe ser sobre el mismo número de campos con el mismo tipo de datos»
Activé las siguientes opciones al relacionar:
-Exigir integridad referencial
-Actualizar y eliminar en cascada los campos relacionados
Y en tipo de combinación selecciones la opción 3: Incluir todos los registros de libros.
Gracias por publicar este tipo de tutoriales que sirve de mucha ayuda para aprender cosas nuevas. Espero me puedan ayudar. Saludos cordiales!
Eso es porque el tipo de datos no es el mismo entre los campos que estás relacionando. Revisa eso.
Hola,
Estoy intentando realizar una base de datos para mi biblioteca siguiendo estas instrucciones, pero no sé cómo crear un formulario con el cuadro combinado que comentas para los autores.
Muchas gracias por tu artículo.
Saludos.
Buenas noches.
Existe un programa gratuito llamado Biblio 8.26 y está disponible desde biblio.vzpla.net
Un saludo.