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
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