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

[SOLUCIONADO] en una tabla 'usuarios' cual campo conviene tomar como PK?

Estas en el tema de en una tabla 'usuarios' cual campo conviene tomar como PK? en el foro de Bases de Datos General en Foros del Web. tal cual, a la hora de trabajar con bases de datos mysql... (en este caso para trabajar sobre un blog de noticias) que campo me ...
  #1 (permalink)  
Antiguo 12/05/2016, 23:02
 
Fecha de Ingreso: diciembre-2015
Mensajes: 115
Antigüedad: 8 años, 4 meses
Puntos: 2
Pregunta en una tabla 'usuarios' cual campo conviene tomar como PK?

tal cual, a la hora de trabajar con bases de datos mysql... (en este caso para trabajar sobre un blog de noticias) que campo me convendria mas a futuro como primary key? el campo 'usuario'(nombre de usuario), el campo 'email', o el propio campo 'id'? espero puedan aclarar mi duda
  #2 (permalink)  
Antiguo 13/05/2016, 00:28
gdipaolo59
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: en una tabla 'usuarios' cual campo conviene tomar como PK?

Cita:
Iniciado por kukiko11 Ver Mensaje
tal cual, a la hora de trabajar con bases de datos mysql... (en este caso para trabajar sobre un blog de noticias) que campo me convendria mas a futuro como primary key? el campo 'usuario'(nombre de usuario), el campo 'email', o el propio campo 'id'? espero puedan aclarar mi duda

Saludos! yo particularmente haría una tabla de clasificación y una tabla de noticias ya que estas noticias deben pertenecer a una clasificación en particular por ejemplo (Política, espectáculo, sucesos, deporte etc) que tenga su ID como Primary key. y una tabla noticias que tendría su propio Id (Primary Key), TituloNoticia, Noticia, IdClasificacion. y asi las vas enlazando. si cada noticia es publicada por un usuario especifico debes crear una tabla usuarios (Id, usuario) y a la tabla noticias meterle también el IdUsuario.

es posible que una tabla noticias tenga muchas publicaciones por el mismo usuario por lo que te recomiendo que el campo primario sea el ID

espero entiendas la idea.

Última edición por gdipaolo59; 13/05/2016 a las 00:30 Razón: corrección
  #3 (permalink)  
Antiguo 13/05/2016, 08:22
 
Fecha de Ingreso: diciembre-2015
Mensajes: 115
Antigüedad: 8 años, 4 meses
Puntos: 2
Respuesta: en una tabla 'usuarios' cual campo conviene tomar como PK?

Cita:
Iniciado por gdipaolo59 Ver Mensaje
Saludos! yo particularmente haría una tabla de clasificación y una tabla de noticias ya que estas noticias deben pertenecer a una clasificación en particular por ejemplo (Política, espectáculo, sucesos, deporte etc) que tenga su ID como Primary key. y una tabla noticias que tendría su propio Id (Primary Key), TituloNoticia, Noticia, IdClasificacion. y asi las vas enlazando. si cada noticia es publicada por un usuario especifico debes crear una tabla usuarios (Id, usuario) y a la tabla noticias meterle también el IdUsuario.

es posible que una tabla noticias tenga muchas publicaciones por el mismo usuario por lo que te recomiendo que el campo primario sea el ID

espero entiendas la idea.
jaja si te entiendo pero me referia a los usuarios que se registran en dicho blog! no a los que mencionas que serian mas como autores... o redactores, me refiero mas a un visitante que cree su usuario y tal...
  #4 (permalink)  
Antiguo 13/05/2016, 09:57
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: en una tabla 'usuarios' cual campo conviene tomar como PK?

Hay dos criterios básicos para tu caso:
1) Usas el nick o username con el que se registra.
2) Usas el e-Mail (los foros de la pagina oficial de Oracle usan el e-Mail, por ejemplo).
En cualquier caso, lo que es INNECESARIO es crear un campo "id" numérico, dado que de todos modos tendrás que declarar UNIQUE el username y/o el e-Mail.

TEn en cuenta que el modelo E-R dice expresamente que una PK es un campo o conjunto de campos que identifica UNIVOCAMENTE un único registro en una tabla. No existe ninguna regla que diga que tal campo o conjunto de campos deba ser ni numérico ni incremental, eso es un invento heredado de la programación y no parte del modelo relacional de BBDD.

Ahora bien, si sólo declaras PK un campo numérico incremental, y no declaras UNIQUE el username o el e-Mail (o los dos), tendrás que además programar validaciones adicionales para evitar que dos o mas usuarios se registren con el mismo username o e-mail, dado que no habrás protegido la unicidad de tales valores.

¿Se entiende?

En síntesis: Si no vas a restringir a los usuarios registrados por e-Mail, al menos hazlo por username, y usa el username como PK.

Yo te sugeriría usar, como te digo, el username como PK, pero de todos modos dejaría como UNIQUE al e-Mail, para evitar que un mismo email pueda ser usado para múltiples cuentas de usuario...
__________________
¿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: bd, 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 04:56.