Ver Mensaje Individual
  #12 (permalink)  
Antiguo 18/09/2010, 10:37
Avatar de gnzsoloyo
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: Duda usar una o dos tablas

Hay un detalle que se debe recordar, muy importante, y que es una de las causas de normalización: LA consistencia de datos.
Cuando permites que un mismo tipo de datos se ingrese repetidamente en diferentes registros, como muestra rickyper, es muy habitual que haya ingresos incorrectos del mismo valor con pequeñas diferencias, que son importantes a la hora de las consultas. El mayor problema en estos casos es el factor humano.
Las personas no escriben igual, e incluso ciertas cosas las expresan de formas diferentes o simplemente lo hacen mal, y eso causa problemas constantemente. Si le permites escribir el nombre de un país, pueden hacerlo así:

PERU
Prú
Per
Peru
Perú
PERÚ
pERU
Argntina
Arg.
Rep. Arg.
Argentina
EEUU
EE.UU.
USA
U.S.A.
U.S.
ROU
R.O.U
Uuruguay
Uruguay
Ur.

¿21 países?
No. Sólo cuatro, pero escritos de formas tales que si quiero una selección de clientes y/o usuarios pertenecientes a un sólo país, por ejemplo, Uruguay, en lugar de salirme cinco (5) me saldría uno sólo, simplemente porque los datos no son consistentes.

¿Se ve, en este ejemplo, cómo afecta la consistencia de la información?

Todo esto desaparece con el ejemplo que da rickyper, y luego reconstruyes la tabla usando simplemente esto:
Código MySQL:
Ver original
  1. FROM usuario INNER JOIN pais USING(pais_id);

Tip: Siempre es importante que los nombres de los ID en su tabla origen sean los mismos que los campos usados como FK en las otras tablas; para ello es imprescindible que un ID jamás se llame ID simplemente, sino que lleve un nombre que mnemotécnicamente lo haga comprensible, tal como usuario_id, cliente_id, producto_id, pais_id, provincia_id, motor_id, etc.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)