relaciones de tablas de ACCESS (anecdota)

Estado
Cerrado para nuevas respuestas

george5107

Nuevo Miembro
Miembro
#1
hola compañeros, acudo a ustedes para ver si tienen tiempo de ayudarme con un problema de bases de datos en ACCESS.

el problema empezó con un maestro que nos da la clase de análisis de sistemas, que no nos ha sabido explicar como se hacen las relaciones con tablas de access, en principio expusimos en clase nuestro proyecto que consistía en los objetivos del sistema, sus requerimientos especificos y las tablas de entidad-relacion que son algúnos de los pasos para realizar un sistema de información de una empresa que vende equipo de computo y resultó que nos faltaron tablas, una de ellas fue la que relacionaria sucursales en caso de que la empresa tuviera varias sucursales; entre otros detalles que faltaban. por esta razon nos calificaron a mi equipo y a mi con 9 y se nos hizo justo pero después nos enteramos que los demás tenian 10 y no tenian tantos detalles como nosotros. entonces era injusto.

despues al día siguiente el profesor nos trató de explicar solo a mi equipo y a mi, la forma de relacionar las tablas que ya teniamos arregladas el problema era que él, solo nos preguntaba los factores que teniamos que tomar en cuenta para relacionar las tablas: por ejemplo, como podriamos saber que empleado vende más... y detalles así. sin embargo no le podiamos responder y se ponia a hacer las relaciones él solo y nos explicaba a medias. después de haber terminado todas las relaciones, hoy expusimos de nuevo nuestro tema con proyector y toda la cosa y resulta que: ¡ALGUNAS TABLAS ESTABAN MAL RELACIONADAS! pues segun la relacion entre las tablas, nosotros ya teniamos una factura antes de hacer el pedido. se imaginarán como nos sentimos en ese momento y lo peor de todo es que en frente de todos detuvo la exposicion final y se puso a corregir los errores que había tenido el dia anterior y luego nos dijo que teniamos que corregirlo, caray, nosotros apenas y entendimos como lo hizo, por eso y después de este choro quisiera saber de algún manual o algúna guia para saber hacer las relaciones de tablas entre access o su lógica no se, el chiste es sacarme de la duda y poder hacer el análisis completo y bien hecho.... espero no haberles quitado tiempo sino todo lo contrario, entretenerlos con esta anecdota que necesita solucion.

saludos"" :)
 

bres

Ex-Mod
Miembro
#2
Yo este año acabo de empezar introduccion a las bases de datos, y solo llevo 2 clases con access de 5 que haremos (luego pasaremos al SQL) y no entiendo muy bien lo que quieres hacer. Te paso algún manual que nos comentó el profesor que estaba bastante bien:

En castellano:

http://www.aulaclic.com/access2000/f_acces2000.htm

el tema de relaciones de este curso es:

http://www.aulaclic.com/access2000/t_5_1.htm

http://www.svetlian.com/msoffice/access.htm

En inglés:

http://www.functionx.com/access/
http://cisnet.baruch.cuny.edu/holowczak/classes/2200/access/accessall.html
http://mis.bus.sfu.ca/tutorials/MSAccess/tutorials.html


Espero que te ayuden.
 

george5107

Nuevo Miembro
Miembro
#3
muchas gracias por sus respuestas; hasta ahora logré entender mis problemas y solucionarlos. ya tengo mis relaciones hechas! y entendí lo de las relaciones una a una; una a muchas y muchas a muchas, lo unico que me falta es los detalles finales porque tengo que entregar un trabajo final bien hecho y corregido. en efecto no hay muchos manuales para access y los que hay todos son shareware, espero conseguir un manual en la biblioteca escolar, mi ultima peticion seria que si alguien ya ha hecho un analisis que se parezca al que yo hago (sistema de información para el manejo de una empresa que vende equipo de computo) les agradecería que me ayudaran con los detalles finales; por ejemplo algúnas reglas o tips para el mejoramiento de las bases de datos, cosas como: siempre escribe en mayusculas y minusculas para evitar los guines bajos ej.. en vez de COD_PRODUCTO que sea CodProd. les pido esto porque mi profesor me está jodiendo la existencia porque puse mis atributos así (COD_PRODUCTO) y no quiero que a la mera hora diga que algo está mal

bueno gracias por todo y cuentan conmigo cuando necesiten algo!!
 

soplo

Nuevo Miembro
Miembro
#4
Hola. Creo que a esto ya te respondí en otro sitio (y hace mucho tiempo), pero bueno, igual le sirve a alguien

Te explico como establecer una relación entre dos tablas

Para relacionar dos tablas es necesario que ambas tablas tengan un campo común. Este campo no tiene porque llamarse igual en ambas tablas, pero si debe tener el mismo tipo y tamaño en ambos. Para explicar llamaré al campo común en tabla A como 'codigoA' y al campo común en tabla B como 'codigoB'

Existen tres tipos de relaciones entre tablas.

Relacion UNO a UNO

Significa que a cada registro de una tabla A le corresponde como máximo un registro de una tabla B

Un ejemplo podría ser tabla A = personas tabla B = historial médico.

En este caso a cada persona le puede corresponder como máximo un historial y cada historial solo puede corresponder a una persona.

Si quieres establecer una relación de este tipo indexaremos codigoA y codigoB como indexadod sin duplicados.

Relación UNO a VARIOS

En este caso a cada registro de la tabla A le pueden corresponder infinitos registros de la tabla B, pero a cada registro de la tabla B le puede corresponder como máximo un registro de la tabla A.

Un ejemplo sería una tabla A con clientes y una tabla B con facturas. A cada cliente le pueden corresponder infinitas facturas en B, pero a cada registro en B solo le puede corresponder un registro en A.

Para conseguir esta relación entre dos tablas indexaremos codigoA como indexado sin duplicados y codigoB como indexado con duplicados.

Relación VARIOS a VARIOS

Este tipo de relación se da cuando a un registro de A le pueden corresponder varios registros de B y a cada registro de B le pueden corresponder varios registros de A.

Un ejemplo sería intentar establecer en un videoclub una relación entre clientes y películas. A cada cliente le pueden corresponder varias películas (porque puede coger varias) y a cada película le pueden corresponder varios clientes (porque puede ser vista por varios).

Este tipo de relaciones SIEMPRE se resuelven creando una tercera tabla que tiene al menos codigoA y codigoB.

En el caso mencionado se crearía una tabla 'préstamos' que tuviera codigoA, codigoB, fecha_de_préstamo, precio_de_prestamo

Ahora crearíamos una relación uno a varios entre clientes y prestamos y una relación uno a varios entre películas y préstamos.

Por lógica entonces en clientes codigoA indexado sin duplicados, en películas codigoA indexado sin duplicados y en préstamos codigoA y codigoB indexado con duplicados.

Establecimiento de la relación

Una vez creados los índices hay que establecer la relación. Para ello vamos a Herramientas - Relaciones y añadimos las tablas que queremos relacionar.

En el primer caso añadiríamos la tabla personas y la tabla historial.

Arrastramos codigoA sobre codigoB y contestamos al formulario (que explicaré posteriormente).

En el segundo caso añadimos la tabla clientes y facturas y arrastramos codigoA sobre codigoB y contestamos al formulario.

En el tercer caso añadimos clientes, películas y préstamos. Arrastramos codigoA de clientes sobre codigoA en préstamos y codigoB en películas sobre codigoB en préstamos y contestamos el formulario.

Formulario de establecimiento de relacion

Si lo hemos hecho bien, en la esquina inferior izquierda indicará el tipo de relación que vamos a crear. Si no lo pone bien o pone indeterminada debemos cancelar y revisar los índices.

Con pulsar aceptar ya estará establecida la relación, pero sin embargo hay una claúsula ahí aparentemente poco importante, pero con una importancia CAPITAL.

Esa claúsula es la de 'exigir integridad referencial'

La integridad referencial quiere decir que no puede haber un registro que no cumpla la condición de la relación.

Por ejemplo en una relación clientes/facturas (relación uno a varios) si yo borro un cliente pueden quedar facturas sin que les corresponda un cliente. Esto será posible si no hay integridad referencial, pero no lo será si se exige integridad referencial. En este caso saldrá un aviso al borrar al cliente que indica que no se puede borrar el cliente porque se infringen las reglas de integridad referencial (no puede haber factura sin cliente).

Este caso puede darse también en el caso de que yo modifique codigoA porque la relación se establece entre codigoA y codigoB. Si modifico codigoA ahora codigoB quedará sin su correspondiente registro en tabla A.

Por eso al activar la integridad referencial se activa la posibilidad de borrar en cascada (en este caso al borrar un cliente en clientes se borran TODAS sus facturas en facturas)

También se activa la posibilidad de actualizar en cascada (en este caso al modificar codigoA se actualiza codigoB en todos los registros que contenían el antiguo codigoB con el nuevo valor modificado).

Por eso pondremos integridad referencial cuando queramos tener la seguridad que no habrá factura sin cliente, pero entonces tendremos que decidir si queremos que no se pueda borrar un cliente que tenga facturas o bien si queremos que al borrar un cliente se borren todas sus facturas.

Un saludo
 
Estado
Cerrado para nuevas respuestas
Arriba Pie