我正在创建文件托管服务,但是现在我正在创建注册帐户电子邮件激活部分。所以我不得不想出一个数据库结构。
现在它:
users
id
first_name
last_name
email
password
since
active
hash_activate
但我也可以像关系数据库那样做:
users
id
first_name
last_name
email
password
since
activation
id
user_id
hash
active
最好的方法是什么?为什么?
答案 0 :(得分:0)
如果一个用户可以进行多次激活,那么第二种情况才是明智的。你不能说这是真是假,所以我无法告诉你。
答案 1 :(得分:0)
如果每个人当时只有一个激活哈希活动,那么将它存储在与用户相同的表中是可行的。
但是,分离它的一个优点是用户只在短时间内拥有激活哈希值,因此为了使用户记录更小,您可以将哈希值存储在单独的表中。保持用户记录较小使其保持更高的性能。在这种情况下,您不会有active
列。你只需删除不活动的哈希值。
如果确实将激活列存储在用户表中,请确保按名称选择列。例如。在大多数情况下,你会想要这样做:
SELECT id, first_name, last_name, email, password
FROM users
而不是:
SELECT *
FROM users
您只需要在需要时选择激活列。
答案 2 :(得分:0)
如果激活是暂时的,或者哈希将某人定义为活动,那么将它们区分开来。否则,那真的无所谓。
然而,没有更多或更少的关系,没有更多或更少的关系,没有更多的信息。如果对每行中的值组合设置唯一约束,并使用NOT NULL约束设置每个列,则第一个列将是非常关系的。
当数据的正确性随着时间的推移与应用程序对数据的重要性(如果不是更重要)和/或数据结构的正确性/一致性对于正确操作的关键时一样重要时,您使用关系设计应用程序,但可能不一定由应用程序自己的操作保证。