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

Duda sobre diseño de bbdd para aplicación

Estas en el tema de Duda sobre diseño de bbdd para aplicación en el foro de Bases de Datos General en Foros del Web. Hola a todos, Tengo una duda respecto al diseño de una base de datos (hasta este momento no me había tocado diseñar una, ya que ...
  #1 (permalink)  
Antiguo 12/12/2015, 07:42
 
Fecha de Ingreso: abril-2014
Ubicación: Madrid
Mensajes: 14
Antigüedad: 10 años
Puntos: 0
Duda sobre diseño de bbdd para aplicación

Hola a todos,

Tengo una duda respecto al diseño de una base de datos (hasta este momento no me había tocado diseñar una, ya que me han encargado programar una aplicación desde cero)

Se trata de los perfiles de los usuarios, me explico:

Existe una tabla Usuarios y otra Usuarios_meta
Empleados tiene unos datos (en total 18) como (id_usuario, nombre, apellidos, email, fecha de nacimiento, password...)
Empleados_meta tiene otros datos del usuario (en total 11 pero pueden aumentar en un futuro) son opcionales (nacionalidad, puesto, salario, etc...)

La pregunta es la siguiente, teniendo en cuenta su comodidad, escalabilidad, y rendimiento es más óptimo tener una tabla Usuarios_meta con varias columnas (una columna para cada campo) o una tabla con 3 campos (id_usuario, key, value) y almacenar el id del usuario, una key definiendo el dato (sueldo, puesto...) y en value el valor del dato...

El fin es para poder listar los usuarios y filtrar por los campos para hacer busquedas dependiendo de los campos de las dos tablas

Un saludo y gracias a todos!!

Espero sus comentarios
  #2 (permalink)  
Antiguo 12/12/2015, 16:35
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Duda sobre diseño de bbdd para aplicación

Hay pros y contras para cualquier opción, mucho depende del motor de base de datos que uses.

1. En el caso de ( ID_USUARIO, KEY, VALUE ) te favorece al momento de insertar, eliminar o modifcar valores para un usuario, ya que el bloqueo se puede hacer por fila y evitarias esperas cuando una sesión modifica el sueldo y otra sesión lee la nacionalidad. Pero te puede perjudicar al momento de leer todos los valores para un usuario dado ya que el motor debe devolver varias filas por usuario lo que implica una reducción en la eficiencia de los indices.

2. En el caso de COLUMNAS es lo opuesto, te perjudica en las sentencias DML y favorece en los SELECT, con una contra adicional, una tabla con muchas columnas puede generar filas migradas o encadenadas, esto es cuando una fila no entra en un bloque o pagina (unidad minima de almacenamiento) lo que produce una perdida de rendimiento en general para todas las operaciones sobre esa fila (DML y SELECT).


Saludos
  #3 (permalink)  
Antiguo 13/12/2015, 13:59
 
Fecha de Ingreso: abril-2014
Ubicación: Madrid
Mensajes: 14
Antigüedad: 10 años
Puntos: 0
Respuesta: Duda sobre diseño de bbdd para aplicación

Buenas Matanga,

gracias por tu respuesta, el motor que uso es InnoDb

Para las dos opciones tengo las lineas programadas para que funcione y haga lo que tiene que hacer, pero no se cual utilizar

En el caso de Id_usuario, key, value, he conseguido sacar la consulta en una sola fila usando lineas en php (con un foreach) y así sacar una lista de usuarios por ejemplo que tienen un salario igual a 1.500 y que tengan un puesto de comercial, aunque soy consciente que obtengo mas información de la que luego uso en la tabla.

En el caso de una tabla con columnas para cada dato, me facilita mucho el trabajo la verdad...

Mi pregunta ahora es:

¿Cual de las dos formas es mas optima para realizar busquedas?
Estamos hablando de una tabla que tiene cerca de 3.000 usuarios y puede subir mucho más

¿Y cual de las dos formas es mas escalable? teniendo en cuenta que en principio no pedirian muchos mas datos sobre los usuarios, (ahora mismo hay 11 datos mas pero podrian ser 12 o 14 en un futuro, no creo que se llegue nunca a pedir por ejemplo 30 o 40)

Muchas graciasss!!!

Espero vuestros comentarios
  #4 (permalink)  
Antiguo 14/12/2015, 04:16
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Duda sobre diseño de bbdd para aplicación

Por lo que planteas, te conviene usar COLUMNAS.

Saludos

Etiquetas: bbdd, campo, diseño, 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 10:27.