Ver Mensaje Individual
  #4 (permalink)  
Antiguo 13/05/2016, 09:57
Avatar de gnzsoloyo
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, 5 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)