Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Ayuda para comprender base datos relacionales.

Estas en el tema de Ayuda para comprender base datos relacionales. en el foro de Bases de Datos General en Foros del Web. Hola a todos. Agradecería vuestra ayuda y que tuvierais un poco de paciencia conmigo, me estoy iniciando en el mundo de las bases de datos, ...
  #1 (permalink)  
Antiguo 19/05/2010, 11:59
 
Fecha de Ingreso: mayo-2010
Mensajes: 8
Antigüedad: 14 años
Puntos: 0
Ayuda para comprender base datos relacionales.

Hola a todos.
Agradecería vuestra ayuda y que tuvierais un poco de paciencia conmigo, me estoy iniciando en el mundo de las bases de datos, aunque para Tengo algo de experiencia en Visual Basic.net, pero nunca hasta ahora había tenido la necesidad de usar BDs.
La cuestión es que he creado una base de datos con varias tablas, por ejemplo,
Tabla PERSONAS,
Tabla VEHÍCULOS,
Tabla EXPEDIENTES,
Tabla VehicAVERIADOS,
Tabla VehicBAJA, etc.
Todas las tablas tienen su correspondiente campo clave con autoincremento (IDPersonas, IDVehículos, IDExpedientes, IDVehicAVERIADOS, IDVehicBAJA)

Lo que quisiera es relacionar las tablas de forma que si abro un nuevo expediente, y le agrego dos o tres vehículos y sus respectivos titulares (personas), que cuando consulte dicho expediente pueda saber cuales son los vehículos relacionados con dicho expediente.

Para ello pensaba añadirle en la tabla EXPEDIENTES un campo IDVehiculos y otro IDPersonas, y relacionar los campos iguales pero no me sirve porque solo habría un vehículo y una persona en el expediente, y debe de poder haber más de uno, y ahí es donde me pierdo.

Y la pregunta es: ¿como puedo hacer para crear una relación de éste tipo?, ¿tendría que crear una nueva tabla con más relaciones?, ¿como puedo hacer esto?.
¿alguien me puede explicar esto?
He leído varios cursos en Internet sobre bases de datos y explica como relacionar los datos, pero la verdad es que no me saca de éstas dudas.

Gracias por vuestra paciencia y agradecería cualquier colaboración al respecto.
  #2 (permalink)  
Antiguo 19/05/2010, 13:29
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 9 meses
Puntos: 66
Respuesta: Ayuda para comprender base datos relacionales.

El tema es muy amplio, pero en tu caso concreto puedes:

4 tablas
Tabla PERSONAS (id_persona)
Tabla VEHÍCULOS (id_vehiculo)
Tabla EXPEDIENTE (id_expediente)
Tabla EXPEDIENTES (id_expedientes, id_persona, id_vehiculo, id_expediente)

consulta= 'select * from expedientes where id_expediente=4'

resultados:
1-1-1-4
2-2-1-4
3-3-4-4

como puedes ver el expediente es el mismo(4) pero cambian las personas y los vehiculos.

Saludos
__________________
Tu álbum de cromos online!!
  #3 (permalink)  
Antiguo 20/05/2010, 13:58
 
Fecha de Ingreso: mayo-2010
Mensajes: 8
Antigüedad: 14 años
Puntos: 0
Respuesta: Ayuda para comprender base datos relacionales.

Muchas gracias por responder Santris.

Ok, entiendo el ejemplo, pero ahora viene el lío que tengo hecho en la cabeza y tengo que resolver.

En principio comentarte que he montado en el dataset (con los tableadapters las tablas igual que en el ejemplo, ahora me queda saber...
Cuando envío los datos de los textbox a la base de datos debo de resolver primero el número de ID que asigna cada columna ID y una vez conocidos...¿los tengo que enviar a la tabla EXPEDIENTES?, o hay otro método para recuperarlos al estar relacionados?

Una vez tenga los datos guardados en la base de datos, ¿cual es el método para moverme por los registros y que los cargue en textbox enlazados con datos de diferentes tablas y que al mover los registros con el bindingnavigator se muevan todos en consonancia?

No se si me explico... creo que la pregunta es un poco liosa...
En resumen, me gustaría saber, que una vez consiga introducir todos los datos en sus respectivas tablas (para ello no tengo problema), no se como desplazarme por los datos cargados en los controles del formulario si hay datos que provienen de la tabla PERSONAS otros de la tabla VEHÍCULOS y otros de la tabla expedientes...¿tendría que relacionar los textbox con la tabla EXPEDIENTES de forma tipada?

haber si alguien me puede sacar de dudas que estoy hecho un verdadero lio.

Gracias.
  #4 (permalink)  
Antiguo 20/05/2010, 15:09
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 9 meses
Puntos: 66
Respuesta: Ayuda para comprender base datos relacionales.

Bueno, no se que sistema de base de datos usas, pero lo normal sería usar las tablas para introducir datos y hacer consultas para ver, actualizar, borrar etc.

Las consultas puedes enlazarlas como origen de datos igual que una tabla. Un ejemplo de consulta sería:
Código PHP:
SELECT expediente.numvehiculos.matriculapersonas.nombre
FROM 
((expediente INNER JOIN expedientes ON expediente.id_expediente=expedientes.id_expedienteINNER JOIN vehiculos ON expedientes.id_vehiculo=vehiculos.id_vehiculoINNER JOIN personas ON expedientes.id_persona=personas.id_persona
WHERE 
(((expediente.num)=1)); 
Devuelve numero expediente, matricula vehiculos, nombre personas del expediente numero 1.

Access por ejemplo permite vincular las tablas automaticamente por medio de formularios y subformularios.
__________________
Tu álbum de cromos online!!
  #5 (permalink)  
Antiguo 20/05/2010, 15:23
 
Fecha de Ingreso: mayo-2010
Mensajes: 8
Antigüedad: 14 años
Puntos: 0
Respuesta: Ayuda para comprender base datos relacionales.

Ok, creo que descifrando el código SQL que aportas voy viendo más o menos lo que se puede hacer.
En mi caso, tengo los controles tipados con tableadapters lo que me obliga a tener que intentar descifrar como enlazar los documentos con los tableadapters.
Se me ocurre que sería lo mejor crear un nuevo tableadapter con una combinación de tablas y de ahí crear consultas para obtener los datos.

De todas formas, gracias por tu ayuda y paciencia...
Y si a alguien se le ocurre como puede montar esto con controles tipados, datasets tipados en Visual Basic 2008, cualquier información seguro que me irá de perlas.

Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:35.