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

Duda universal del SQL

Estas en el tema de Duda universal del SQL en el foro de Mysql en Foros del Web. Tengo una de esas dudas teoricas que en todo proyecto salen: El tipico caso de la tabla de usuarios, provincias, y paises. Hay dos formas ...
  #1 (permalink)  
Antiguo 30/09/2010, 12:38
 
Fecha de Ingreso: junio-2009
Mensajes: 309
Antigüedad: 14 años, 10 meses
Puntos: 5
Duda universal del SQL

Tengo una de esas dudas teoricas que en todo proyecto salen:

El tipico caso de la tabla de usuarios, provincias, y paises.

Hay dos formas de hacerlo, pese a tener las tablas de paises y provincias en las dos formas para hacer listados rapidos de provincias o paises.

Una de las formas de hacerlo seria: En la tabla de usuarios, en el campo PROVINCIA se guarda el ID de la provincia, y en el PAIS el ID del pais, que ambos corresponden a sus tablas(paises y provincias)

La otra seria guardar el nombre de la provincia y el nombre del pais directamente en la tabla en varchar, es decir PAIS='españa', PROVINCIA='valencia', por ejemplo.

Ahora es cuando viene la duda universal.
Cuando quieres sacar el nombre del usuario, el pais y la provincia...¿ Es preferible gastar recursos en hacer siempre una consulta a 3 tablas? o ¿una consulta a una tabla pero sacrificando espacio en la tabla usuario?

La teoria es no repetir cosas en la base de datos, o repetir lo minimo.... pero claro, como son nombres con pocos caracteres.... igual compensa pese a sacrificar bytes de mas...


Bueno que los gurus del sql comenten.

Un saludo!!
  #2 (permalink)  
Antiguo 30/09/2010, 14:09
Avatar de rickyper  
Fecha de Ingreso: abril-2009
Mensajes: 182
Antigüedad: 15 años
Puntos: 10
Respuesta: Duda universal del SQL

A lo que tu vas es si es mejor tener todo en una tabla o tener por separado pais, cuidad... todo eso, para mi siempre a sido mejor normalizar, cada cosa en su sitio.
__________________
www.granideamillonaria.com
  #3 (permalink)  
Antiguo 30/09/2010, 15:24
 
Fecha de Ingreso: junio-2009
Mensajes: 309
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: Duda universal del SQL

esa respuesta no me sirve de mucho :S
  #4 (permalink)  
Antiguo 30/09/2010, 15:36
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, 4 meses
Puntos: 2658
Respuesta: Duda universal del SQL

Cita:
Cuando quieres sacar el nombre del usuario, el pais y la provincia...¿ Es preferible gastar recursos en hacer siempre una consulta a 3 tablas? o ¿una consulta a una tabla pero sacrificando espacio en la tabla usuario?
Si pones un varchar con el nombre te arriesgas a perder consistencia de datos. Es precisamente para condervarla y asegurarla que esos valores no se incluyen como VARCHAR sino como FK hacia otra tabla.
La pérdida de performance que puedes tener por usar tres tablas es ínfima, y sólo llega a tener algún impacto cuando estás hablando de millones de registros.
Por otro lado, las búsquedas hechas con campos numéricos, como sería el caso de las PK de Provincia y Pais, son siempre mucho más rápidas que con campos VARCHAR, porque en un caso se trata de matching binario y en el otro tienes que ver su valor como byte, más las collation, charset, longitudes de clave, etc.

Resumen: Usa tres tablas y eventualmente puedes usar tablas TEMPORARY para acelerar algunos prefiltrados.
__________________
¿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: sql
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 21:53.