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

Relación Tablas

Estas en el tema de Relación Tablas en el foro de Mysql en Foros del Web. Hola buenas dios, espero puedan ayudarme, la verdad apenas voy empezando en el mundo la programación y base de datos, lo que dese saber es ...
  #1 (permalink)  
Antiguo 02/01/2013, 11:22
 
Fecha de Ingreso: diciembre-2012
Ubicación: Mexico
Mensajes: 28
Antigüedad: 11 años, 4 meses
Puntos: 0
Pregunta Relación Tablas

Hola buenas dios, espero puedan ayudarme, la verdad apenas voy empezando en el mundo la programación y base de datos, lo que dese saber es como puedo relacionar 2 tablas, una se llama: ALUMNOS y la otra FAMILIARES.
ALUMNOS guarda información de un alumno, pero FAMILIARES, guarda a varios parientes del alumno, como puedo hacer una relación para que por ejemplo cuando se aga una consulta del alumno de igual manera me muestre todos los familiares registrados.

NOTA:La consulta no la genero en mysql, la genero en una pagina web

si pudieran decirme por medio de que tengo que hacer la relación y si pudieran darme un ejemplo pequeño para entenderlo bien, se los agradecería mucho, espero puedan ayudarme, gracias por leer mi comentario
  #2 (permalink)  
Antiguo 02/01/2013, 12:04
 
Fecha de Ingreso: julio-2012
Mensajes: 14
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Relación Tablas

Hola, hace poco que comence con MySql, pero creo que puedes hacer lo siguiente, aunque deberias plantear la estructura de tus tablas:
SELECT * FROM familiares WHERE id_alumno = alumnos id_alumno

Feliz añ0 2013.
  #3 (permalink)  
Antiguo 02/01/2013, 12:37
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Relación Tablas

Bueno para empezar no nos das datos sobre los campos de las tablas alumnos ni familiares, pero supongo que como decis en la tabla alumnos tenes todos los alumnos con sus datos, id, nombre etc... y en familiares tenes el id de los alumnos y el id de los familiares con los que se relacionan, algo como id_alumno id_familiar etc...

Igual creo que está mal la estructura de tu base de datos si es así, porque deberías tener 1 tabla alumnos como ya tenes, otra sola para los datos de los familiares, y otra que se llamaría alumnos_familiares en la que solamente tendrás 2 columnas: los id de los alumnos y los id de los familiares, teniendo en cuenta que también tendrías que tener 1 tabla llamada "personas" por ejemplo en donde tendrás los id de todas las personas en tu base de datos sean alumnos o familiares, pero en fin.
Intenta ser mas claro con lo que quieres y dar mas datos así te podremos ayudar.
  #4 (permalink)  
Antiguo 02/01/2013, 12:52
 
Fecha de Ingreso: diciembre-2012
Ubicación: Mexico
Mensajes: 28
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Relación Tablas

Hola muchas gracias por contestar, lamento no haber sido un poco mas explicito en mi comentario, en la tabla alumnos tengo los siguientes compos: nombre, apellidoM, apellidoP, sexo, nacionalidad, direccion, estado, municipio,codigop, etc... entre otros, son datos personales, y son los mismo datos en la tabla de FAMILIARES solo que en esa tabla se le agrega un dato mas que es el de PARENTESCO, el unico campo que no tenia es el de ID, como lo mencionaste RODRIGO791 pero ese ahora mismo se lo agrego.
La duda que tengo es que si al agregar una llave foranea por medio de los ID´s por ejemplo:
el alumno OSCAR ser registra y ahora registra a sus familiares, al tener ya las llavez primarias y foraneas las tablas, en los familiares tendrian el mismo numero ID todos los que el registre para poder identificarlos?
  #5 (permalink)  
Antiguo 02/01/2013, 13:18
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Relación Tablas

Mira el ID es necesario en cada tabla, la que sea de tu base de datos, tiene que ser Primary key y autoincrementable númerico, de otra forma no podes identificar ningún dato de tus tablas.

Una vez tengas en tu tabla alumnos id_alumno del tipo numerico, autoincrementable y Primary key, entonces en tu tabla familiares también tendrás que tener un id_familiar.

Por otro lado para relacionar los alumnos con los familiares vas a tener que tener otra tabla algo como "alumnos_familiares" en donde tendrás como como campos/columnas: id_alumno, id_familiar, donde estas 2 serán cada 1 una clave foránea de sus tablas correspondientes, o sea el id_alumno es una clave foranea de la tabla alumnos haciendo referencia al campo id_alumno y lo mismo para id_familiar con respecto al campo id_familiar en la tabla familiares.

alumnos:
id_alumno, nombre, apellidoM, etc

familiares:
id_familiar, nombre, etc

alumnos_familiares: id_alumno, id_familar

y en tu tabla alumnos_familiares debes de indicar que tanto el id_alumno como id_familiar son claves foraneas de sus tablas correspondientes como te dije arriba, y no solo eso, las 2 tienen que formar parte de la clave primaria ( primary key ) así podes permitir en ésta tabla varias combinaciones de alumnos-familiares.

algo como:
id_alumno id_familiar
1 ------------- 2
1 ------------- 3
2 ------------- 3
4 ------------- 5
1 ------------- 6

a lo que me refiero con varias combinaciones es que si declaras que lo 2 campos de ésta tabla sean la clave primaria entonces podes permitir estas combinaciones que te muestro que para 1 valor este relacionado con varios otros, por ejemplo el alumno con id 1 se relaciona con el id fam 2, 3 y 6.

http://es.wikipedia.org/wiki/Clave_for%C3%A1nea
si tenes alguna duda de fk, ahí te dejo para que leas.
Simplemente una clave foránea es una clave primaria de una tabla "hija" digamos que está asociada a una clave primaria en una tabla "padre".
Si no estoy diciendo lo correcto que alguien me corrija.
  #6 (permalink)  
Antiguo 02/01/2013, 14:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Relación Tablas

Una relación de parentescos basada en una sola tabla donde se registren las personas, es en realidad, para ser eficiente, un esquema a tres tablas: Persona, Pariente_De y Categoria_Pariente.
En ese esquema la tabla Pariente_De sólo contiene tres campos mandatorios: persona_id, Pariente_id y Pariente_categoría_id.
La idea es que cada persona es pariente de N personas, y que cada uno de esos parientes lo puede ser de N personas, por lo cual al ser una relación N:N, requiere una tabla para admiistrar el vinculo.
La tabla Categoría_Pariente es una tabla necesaria por normalización, y sirve para determinar qué parentesco está definido en esa relación (padre, hija, tío, abuelo, prima, etc.).

Finalmente, el tema del ID, por modelo E-R una PK no debe ser necesariamente un campo numérico y autoincremental, eso es un hábito de programadores, pero no es un requisito del modelo (este tema lo hemos tratado innumerables veces).
Una PK es un campo o conjunto de campos que identifica univocamente un registro en una tabla (o una tupla en una relación del modelo lógico).
En ese contexto, la PK será aquel atributo de la entidad representada en la tabla que mejor se ajuste a las necesidades del sistema, y sólo se requiere de campos numéricos si no hay atributos que puedan cubrir los requisitos de PK: Único, irrepetible y no nulo.
Sería buena idea que antes de avanzar le dieses una leída al tema de Modelo Entidad-Relación, donde se fundamentan las bases de datos relacionales, como MySQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: Ninguno
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 03:31.