13/05/2016, 09:57
|
| Moderador criollo | | Fecha de Ingreso: noviembre-2007 Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 2 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) |