elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Relaciones entre tablas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Relaciones entre tablas  (Leído 7,176 veces)
Tlecoatl

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Relaciones entre tablas
« en: 23 Abril 2011, 06:17 am »

Hola! hace un poco tiempo unos me comentaron que para hacer una relacion de uno a muchos se podria utilizar una tabla intermedia basada en los ids de las tablas a relacionar:

La tabla cliente se relaciona con la tabla telefono con la llave foranea de esta.

En el ejemplo que me exponian estas tablas se relacionaban con una tercera...

CLIENTE con su id--------------TABLA INTERMEDIA con dos columnas ID CLIENTE y ID TELEFONO-----------------------y la tabla TELEFONO con su id...

me comentaron que esto permitia hacer consultas un poco mas rapido...pero aun no termino de comprenderlo.....

Si alguien me pudiera explicar, o poner un ejemplo lo agreadeceria mucho. Gracias ;)
 


En línea

Kase


Desconectado Desconectado

Mensajes: 1.288


programa bonito ¬¬


Ver Perfil WWW
Re: Relaciones entre tablas
« Respuesta #1 en: 23 Abril 2011, 09:05 am »

consultas mas rapido no
si tienes los sig
cliente  60 datos
telefono 120 datos
telefonocliente 100 datos

un select * from cliente, telefono,telefono cliente
tendria que multiplicar 60 x 120 x 100

si tubieras solo
cliente 60
telefono 60
tendrias que multiplicar solo 60 x 60

la diferencia es que
el primer modelo te permite que un cliente tenga varios telefonos o  varios clientes tengan un solo telefono

el segundo  modelo te limita  dependiendo de donde esta la clave foranea : por ejemplo si la clave foranea esta en telefono, un telefono acepta un cliente, pero un cliente puede tener varios telefonos,
y alrreves con la clave foranea en cliente, un cliente solo puede tener un telefono pero un telefono puede tener varios clientes

asi que no te complikes la existencia y usa el primer modelo

telefono x cliente x telefonocliente

donde
telefono {idtelefono primary key, mas datos}
cliente {idcliente primarykey, mas datos}
telefonocliente{idtelefono clave foranea, idcliente clave foranea}

y la consulta te keda algo asi como

Citar
select *
from telefono, cliente, telefonocliente
where  telefono.idtelefono = telefonocliente.idtelefono
and cliente.idcliente = telefonocliente.idcliente

si no recuerdo mal, puede expresar un natural join si tienen los mismos nombres. pero asi como te lo exprece no puedes errarle..

y es posible optimizar consultas con consultas anidadas =p
eso me lo enseño un maestro que tiene doctorado en bases de datos
pero no es para mortales


En línea

Tlecoatl

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Relaciones entre tablas
« Respuesta #2 en: 23 Abril 2011, 18:51 pm »

Gracias! =)
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Relaciones entre tablas
« Respuesta #3 en: 23 Abril 2011, 19:25 pm »

La pregunta es, ¿tendrás teléfonos que no serán de clientes? Porque si la respuesta es no, entonces tendrás dos tablas y no tres

Por otra parte, muchos desaconsejan el uso de NATURAL JOINS, ya que sin querer puedes terminar con el producto cartesiano de las tablas

Saludos
« Última modificación: 23 Abril 2011, 19:28 pm por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: Relaciones entre tablas
« Respuesta #4 en: 23 Abril 2011, 19:35 pm »

Buena explicación la de Kase, esa tabla intermedia lo que te permite es crear una relacion de muchos a muchos entre las dos tablas.

No es necesaria la tabla intermedia si rigurosamente tu caso es:
muchos clientes comparten un mismo número de telefono.. o muchos números de teléfonos seran usados por un mismo cliente.

Si el caso es que muchos clientes pueden usar diferentes números de teléfonos, ya la relación sería de muchos a muchos.
En línea

[u]nsigned


Desconectado Desconectado

Mensajes: 2.397

JS/Node developer


Ver Perfil WWW
Re: Relaciones entre tablas
« Respuesta #5 en: 27 Abril 2011, 17:44 pm »

No se si viene la caso, pero por que no agregar 'telefono' como un campo a la tabla cliente?  :P

Si la relacion es 1:1 simplemente declaras el campo 'telefono' como UNIQUE.

Saludos!!
En línea

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Relaciones entre tablas
« Respuesta #6 en: 27 Abril 2011, 19:34 pm »

Citar
Hola! hace un poco tiempo unos me comentaron que para hacer una relacion de uno a muchos se podria utilizar una tabla intermedia basada en los ids de las tablas a relacionar:

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.336

he vuelto :)


Ver Perfil WWW
Re: Relaciones entre tablas
« Respuesta #7 en: 30 Abril 2011, 22:20 pm »

eh? de uno a muchos con una tabla extra? eso es de muchos a muchos como si un cliente tuviese varios telefonos y un telefono le perteneciera a varios clientes :P asi que no :xD te han engañado jaja
En línea

Ojo por ojo, y el mundo acabará ciego.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
(SQL) Diferencias entre tablas de una misma tabla? « 1 2 »
Bases de Datos
Karman 16 14,888 Último mensaje 26 Mayo 2009, 05:16 am
por Toxico
Problemas con Relaciones entre tablas y Reconocimiento de FK (Clave Foranea)
.NET (C#, VB.NET, ASP)
Megan 6 8,570 Último mensaje 13 Agosto 2009, 19:35 pm
por Hadess_inf
¿Join entre tres tablas?
Bases de Datos
javirk 1 3,845 Último mensaje 12 Febrero 2012, 15:01 pm
por ‭lipman
relaciones entre clases
Java
ALBUR 2 2,381 Último mensaje 5 Mayo 2012, 10:46 am
por ALBUR
Paginacion salteada entre dos tablas
PHP
Graphixx 3 1,946 Último mensaje 16 Noviembre 2012, 15:12 pm
por Graphixx
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines