| free hosting image hosting hosting reseller online album e-shop famous people | ||
![]() ![]() |
||
| Docencia | Autor |
Relaciones entre tablas
Una base de datos tiene mas de una tabla y además las tablas están relacionadas entre si. La relación de las tablas tiene un objetivo: evitar duplicar información.
Observe la siguiente tabla de ventas:
| Vendedor | Ciudad | Producto | Fecha | Unidades Vendidas |
| Pedro Perez Buendia | Jamundí | Sardinas La Española | 12-Jun-2005 | 12 |
| Pedro P. Buendia | Jdí | Atun Atunete | 15-Jul-2005 | 30 |
| P.P. Buendia | Jdí | Sardinas La Espanola | 07-Ago-2005 | 18 |
| Carlos Andres Suarez | Jdí. | Atún Atuente | 08-Ago-2005 | 25 |
| Carlos A. Suarez | Jamundi | Sardinas Espanola | 01-Ago-2005 | 30 |
| Pedro Buendia | Cali | Atunete | 02-Abr-2005 | 17 |
| Pedro Perez Buendía | Jamund. | Atún Atunete | 10-Abr-2005 | 40 |
Ahora el gerente quiere el siguiente informe:
1. ¿Cuanto vendió Pedro Pérez Buendía?
2. ¿Cuanto se vendió en el municipio de Jamundí?
3. ¿Cuanto se vendió de "Sardinas Española"?
El problema es que en cada registro a "Pedro Pérez Buendía" se le nombra como: "Pedro Perez Buendia", "Pedro P. Buendia", "P.P. Buendia", "Pedro Buendia", es decir no hay ninguna regulación, luego es imposible sacar un informe así, imagínese que no sean solo 7 registros sino 100.000 registros con el mismo problema. Igual sucede con "Jamundí" que se llama "Jdí", "Jdí.", "Jamund.". Ni hablar del Producto.
Por esa razón nacen las tablas relacionales. Ahora se cambia un poco.
I. Una tabla llamada Vendedores
| Código | Nombre |
| V1 | Pedro Pérez Buendía |
| V2 | Carlos Andrés Suárez |
II. Una tabla llamada Municipios
| Código | Nombre |
| M1 | Jamundí |
| M2 | Cali |
III. Una tabla llamada Productos
| Código | Nombre |
| P1 | Sardinas La Española |
| P2 | Atún Atunete |
IV. Luego la tabla de Ventas queda así:
| Vendedor | Ciudad | Producto | Fecha | Unidades Vendidas |
| V1 | M1 | P1 | 12-Jun-2005 | 12 |
| V1 | M1 | P2 | 15-Jul-2005 | 30 |
| V1 | M1 | P1 | 07-Ago-2005 | 18 |
| V2 | M1 | P2 | 08-Ago-2005 | 25 |
| V2 | M1 | P1 | 01-Ago-2005 | 30 |
| V1 | M2 | P2 | 02-Abr-2005 | 17 |
| V1 | M1 | P2 | 10-Abr-2005 | 40 |
La nueva tabla de ventas tiene grandes ventajas: primero ya no ocupa tanto espacio porque solo son códigos, segundo los datos son precisos. Ahora si es posible sacar los informes pedidos.
La integridad referencial
En la tabla de ventas NO es posible colocar un vendedor V5 porque NO existe este en la tabla de vendedores. Tampoco puedo colocar una ciudad M8 porque NO existe en la tabla de Ciudad. Eso se conoce como integridad referencial.
Otra característica de la integridad referencial se puede ver aquí: en la tabla de vendedores, yo NO puedo borrar al vendedor V1 porque esta siendo usado en la tabla de ventas.
¿Cómo se implementa esto en Microsoft Access?
Tanto en Microsoft Access como en otros motores de bases de datos, uno puede configurar la integridad referencial. Estos son los pasos:
1. Crear las tablas




2. Crear la referencia, dando clic en el botón de relaciones como se ve en la imagen

Seleccione todas las tablas y oprima el botón agregar


Así se ve el mapa para crear las relaciones

Acomode un poco las tablas

Arrastre del campo Código de Vendedores al campo Vendedor en Ventas porque esa es la relación a crear.

3. Hacer que se valide la integridad referencial


Puede ver claramente la relación.

Se hace lo mismo con el resto



Guarde la relación

4. Pruebas de la integridad referencial.
Intente llenar la tabla de Ventas sin haber llenado las otras tablas.

Y este es el mensaje del error.

Ahora se llenan las tablas básicas

Y se puede llenar sin problemas la tabla de ventas

Si observa las tablas como Municipios verá que Access nos muestra la relación directamente en los datos

Si intenta eliminar un registro, Access evita el borrado porque hay datos relacionados.

