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

Colocar datos en diferentes filas en lugar de columnas

Estas en el tema de Colocar datos en diferentes filas en lugar de columnas en el foro de Bases de Datos General en Foros del Web. Hola a todos! Mirando un poco la base de datos que genera wordpress (por curiosidad) me he dado cuenta de una cosa que ya había ...
  #1 (permalink)  
Antiguo 15/03/2013, 04:44
 
Fecha de Ingreso: octubre-2010
Mensajes: 5
Antigüedad: 13 años, 6 meses
Puntos: 0
Colocar datos en diferentes filas en lugar de columnas

Hola a todos!

Mirando un poco la base de datos que genera wordpress (por curiosidad) me he dado cuenta de una cosa que ya había visto en otras BDs y no entiendo el por qué...

Se trata de tablas que tienen los datos distribuidos en distintas filas, en lugar de en las columnas de una misma fila (en concreto, la tabla de wordpress que os digo es: wp_usermeta). Me explico:

Una tabla normal sería así:

Código:
id  nombre   email
-----------------------
1    pepe     [email protected]
2    luis     [email protected]
Y la tabla "rara" que os digo está de la siguiente forma:

Código:
id   atr   valor
-----------------
1    nombre   pepe
1    email    [email protected]
2    nombre   luis
2    email    [email protected]
Mi pregunta es: ¿Que ventajas tiene distribuir los datos de esta manera en una tabla?

Muchas gracias!
  #2 (permalink)  
Antiguo 15/03/2013, 06:19
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: Colocar datos en diferentes filas en lugar de columnas

No confundas lo que una interfaz como Worpress muestra, con lo que contienen las tablas de datos. Son cosas distintas, y depende del uso.
Las tablas "raras" que mencionas, son normalmente tablas usadas por Wordpress para crear los formularios, pero no son tablas de datos. Son lo que se denomina "tablas paramétricas" y su uso es específico de una aplicación dada. En otras palabras, no son tablas que sean modificadas por los usuarios comunes, y sólo sirven para personalizar le modo en que luego los datos son mostrados a los diferentes usuarios.
Algunas de estas tablas paramétricas pueden ser usadas (como en tu ejemplo) para contener ciertos datos que actúan como "diccionarios", destinados a administrar contingencias de distinto tipo (como por ejemplo, que nombres similares pueden aparecer en un dato determinado, o cosas así). Pero para entender su uso hay que analizar el funcionamiento de la aplicación en sí.
¿Se entiende?
Las otras tablas son realmente tablas de datos, que es de donde se tomarán los datos para los reportes y formularios que se configuran en base a las otras.
El propio MySQL tiene una base dedicada a contener la estructura de cada base, tabla y columna, así como todos los componentes. Es la base information_schema.

En definitiva, habría que analizar el funcionamiento de Wordpress y qué uso le da esas tablas, para entender por qué existen.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 15/03/2013, 07:15
 
Fecha de Ingreso: octubre-2010
Mensajes: 5
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Colocar datos en diferentes filas en lugar de columnas

Gracias por tu respuesta gnzsoloyo,

La tabla que indico en wordpress es solo un ejemplo, pero estas "tablas paramétricas" como las llamas las he visto en varias bases de datos.

Realmente lo que me interesaría saber (sólo para aprender algo nuevo :) son las ventajas de distribuir los datos de esa manera, frente a hacerlo de la forma habitual.

Por ejemplo, las consultas para obtener el email del usuario con id=1 en mi ejemplo sería:

1º- SELECT email FROM tabla WHERE id=1
2º- SELECT valor FROM tabla WHERE id=1 AND atr=email

A priori, la segunda tabla requeriría de una consulta más compleja para acceder a sus datos, no?
Por eso no se me ocurre la ventaja que podría tener...

Saludos!
  #4 (permalink)  
Antiguo 15/03/2013, 07:23
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: Colocar datos en diferentes filas en lugar de columnas

Cita:
Por eso no se me ocurre la ventaja que podría tener...
Son decisiones de diseño de sistemas. No es que tengan "ventajas" en el sentido que los piensas.
Se usan para evitar tener que crear parametrizaciones en el host o en la instalacion de la aplicación, pero no están vinculadas al resto de la base, y cuando mucho se las usa para simplificar ciertas validaciones.
Son en general una especie de "bolsa de datos" sin normalizar.
Generalmente ni siquiera integran el sistema (por definición, una tabla no relacionada o "huérfana" o es tabla de la base de datos, aunque se la cree en el mismo esquema).
__________________
¿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: columnas, filas, lugar, tabla
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 11:01.