Foros del Web » Programando para Internet » PHP »

Perfil de usuario: me conviene hacer dos tablas o solo una con todos los datos?

Estas en el tema de Perfil de usuario: me conviene hacer dos tablas o solo una con todos los datos? en el foro de PHP en Foros del Web. Hola, estoy creando un perfil de usuario y quisiera saber q es mas conveniente, si hacer una tabla para usuarios y otra para perfil o ...
  #1 (permalink)  
Antiguo 18/12/2013, 05:52
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Perfil de usuario: me conviene hacer dos tablas o solo una con todos los datos?

Hola,

estoy creando un perfil de usuario y quisiera saber q es mas conveniente, si hacer una tabla para usuarios y otra para perfil o sacar todo de una misma tabla (usuarios)?

YO lo veo mas facil/accesible haciendo una sola tabla en donde tenga:
id
username
pass
nombre
apellido
email
ciudad
etc...

Gracias

pd: con perfil me refiero a mostrar sus datos, como en una red social
  #2 (permalink)  
Antiguo 18/12/2013, 05:56
Avatar de evolutionrgm  
Fecha de Ingreso: mayo-2011
Mensajes: 108
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Perfil de usuario: me conviene hacer dos tablas o solo una con todos los d

Si es lo mas recomendable , es realizar solo una tabla y evitar duplicidad de datos .. te recomiendo que revises algo acerca de las normalizacion de tablas en las cuales te puede resolver . algunas dudas que tienes ahora :)
  #3 (permalink)  
Antiguo 18/12/2013, 07:04
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Perfil de usuario: me conviene hacer dos tablas o solo una con todos los d

Cita:
Iniciado por evolutionrgm Ver Mensaje
Si es lo mas recomendable , es realizar solo una tabla y evitar duplicidad de datos .. te recomiendo que revises algo acerca de las normalizacion de tablas en las cuales te puede resolver . algunas dudas que tienes ahora :)
Ok.
Muchas gracias por tu respuesta
  #4 (permalink)  
Antiguo 18/12/2013, 07:31
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: Perfil de usuario: me conviene hacer dos tablas o solo una con todos los d

El tema no pasa por duplicidad de datos. Si los datos se duplican (eso sería provocar inconsistencia de datos), lo que tendrías sería un error de normalización.
La primera clave para resolver tu pregunta es determinar si hay un conjunto de 1+N datos que sean opcionales, es decir que puedan o no existir en todos los casos. Si existe un conjunto identificable de datos referidos a un determiando concepto del usuario (direcciones, por ejemplo, teléfonos, familiares), ese subconjunto debe separarse en una tabla dependiente.
Pero en este caso lo que debes definir es si es o no opcional. Si los datos fueran mandatorios (obligatorios), y su relacion fuese 1:1, no tiene ningún sentido separarlos, a excepción de simplicidad estructural y perfomance para las consultas.
En este último caso se refiere a que aún dentro de la misma entidad, tienes N datos que siempre se consultan, y M datos que se consultan esporadicamente y se modifican rara vez. Dada esa situación, por cuestiones de performance podría ser conveniente separarlos.

Una cosa que debes entender es que existen infinitas formas de resolver el diseño de datos para la misma aplicación, y que dos analistas, trabajando con el mismo sistema, con iguales requisitos y para el mismo cliente, pueden plantearte dos diseños completamente distintos e interexcluyentes (uno no incluye al otro e incluso lo contradirce), sin que eso signifique que uno es correcto y el otro no.
Todo depende de cómo se analiza. No existen modos "mejores", no existe en este ámbito "la mejor forma". Lo que sí existen son métodos para llegar a resultados optimizados, pero los resultados varían de uno a otro sistema.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 18/12/2013, 08:03
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Perfil de usuario: me conviene hacer dos tablas o solo una con todos los d

Cita:
Iniciado por gnzsoloyo Ver Mensaje
El tema no pasa por duplicidad de datos. Si los datos se duplican (eso sería provocar inconsistencia de datos), lo que tendrías sería un error de normalización.
La primera clave para resolver tu pregunta es determinar si hay un conjunto de 1+N datos que sean opcionales, es decir que puedan o no existir en todos los casos. Si existe un conjunto identificable de datos referidos a un determiando concepto del usuario (direcciones, por ejemplo, teléfonos, familiares), ese subconjunto debe separarse en una tabla dependiente.
Pero en este caso lo que debes definir es si es o no opcional. Si los datos fueran mandatorios (obligatorios), y su relacion fuese 1:1, no tiene ningún sentido separarlos, a excepción de simplicidad estructural y perfomance para las consultas.
En este último caso se refiere a que aún dentro de la misma entidad, tienes N datos que siempre se consultan, y M datos que se consultan esporadicamente y se modifican rara vez. Dada esa situación, por cuestiones de performance podría ser conveniente separarlos.

Una cosa que debes entender es que existen infinitas formas de resolver el diseño de datos para la misma aplicación, y que dos analistas, trabajando con el mismo sistema, con iguales requisitos y para el mismo cliente, pueden plantearte dos diseños completamente distintos e interexcluyentes (uno no incluye al otro e incluso lo contradirce), sin que eso signifique que uno es correcto y el otro no.
Todo depende de cómo se analiza. No existen modos "mejores", no existe en este ámbito "la mejor forma". Lo que sí existen son métodos para llegar a resultados optimizados, pero los resultados varían de uno a otro sistema.
Claro, mi pregunte fue dirigida principalmente a eso, por mas q no lo haya nombrado.

Si son datos opcionales, los agrego en la misma tabla o creo una aparte?

Lo hice de las dos formas, pero la q me resulto mas comoda para trabajar es la de poner los datos en la misma tabla. Cuando digo datos, me refiero a nombre, apellido, email, provincia, ciudad... esos son los datos q quiero agregar.

Todavia no hice un registro de usuarios, solo el super admin puede agregar usuarios, entonces cuando lo agrega solo se inserta el username, el password y el rol de usuario (root, admin, user) y los demas campos estan vacios.
Si el usuario quiere cambiar los datos de su perfil, lo mando a edit_perfil y si no, no se muestra nada.
Si un usuario quiere ingresar al perfil del otro y éste no lo completo o edito, le pondria un mensaje de "El usuario no edito su perfil" o algo similar...

No se si se entiende
  #6 (permalink)  
Antiguo 18/12/2013, 09:21
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: Perfil de usuario: me conviene hacer dos tablas o solo una con todos los d

Personalmente, lo que sean datos como Nombre, Apellido, documento, fecha de nacimiento, o cosas así, las considero parte de la entidad Usuario.
Pero la dirección o el resto de los datos que son extensivos, no. Para mi esos pertenecen al perfil.
En esencia la diferencia radicaría en que los primeros se tratan de datos que administrativamente son relevantes en la relción entre el usuario y el sistema o la empresa. Son importantes para el trato comercial, por ejemplo. Pero los otros tienen más que ver con su interacción social (incluso su ciudad de residencia.
El caso de los teléfonos o los eMails, es siempre convneiente ponerlos como tabla independiente porque no es un dato muy fiable, y además muede tener más de un telefono/e-Mail de contacto, por lo que obligatoriamente requiere una tabla especial.
de todos modos, son una decisión de diseño.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 18/12/2013, 09:32
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Perfil de usuario: me conviene hacer dos tablas o solo una con todos los d

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Personalmente, lo que sean datos como Nombre, Apellido, documento, fecha de nacimiento, o cosas así, las considero parte de la entidad Usuario.
Pero la dirección o el resto de los datos que son extensivos, no. Para mi esos pertenecen al perfil.
En esencia la diferencia radicaría en que los primeros se tratan de datos que administrativamente son relevantes en la relción entre el usuario y el sistema o la empresa. Son importantes para el trato comercial, por ejemplo. Pero los otros tienen más que ver con su interacción social (incluso su ciudad de residencia.
El caso de los teléfonos o los eMails, es siempre convneiente ponerlos como tabla independiente porque no es un dato muy fiable, y además muede tener más de un telefono/e-Mail de contacto, por lo que obligatoriamente requiere una tabla especial.
de todos modos, son una decisión de diseño.
Buenisimo, gracias por la explicacion. Sos muy claro.

Es verdad, todo depende de la decision del diseño y como se quieren manejar los datos.

En mi ejemplo es algo sencillo pero es aplicable de todas formas.
  #8 (permalink)  
Antiguo 22/12/2013, 09:54
 
Fecha de Ingreso: diciembre-2012
Mensajes: 178
Antigüedad: 11 años, 3 meses
Puntos: 2
Respuesta: Perfil de usuario: me conviene hacer dos tablas o solo una con todos los d

una sola tabla esta muy bien simplemente valida que no hayan dos iguales ya sea en el nombre o el email y todo bien..
__________________
clasificados nunca se sabe todo

Etiquetas: mysql
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 06:15.