何时使用关系数据库结构?

时间:2014-04-22 14:08:52

标签: mysql database relational-database

我正在创建文件托管服务,但是现在我正在创建注册帐户电子邮件激活部分。所以我不得不想出一个数据库结构。

现在它:

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

最好的方法是什么?为什么?

3 个答案:

答案 0 :(得分:0)

如果一个用户可以进行多次激活,那么第二种情况才是明智的。你不能说这是真是假,所以我无法告诉你。

答案 1 :(得分:0)

如果每个人当时只有一个激活哈希活动,那么将它存储在与用户相同的表中是可行的。

但是,分离它的一个优点是用户只在短时间内拥有激活哈希值,因此为了使用户记录更小,您可以将哈希值存储在单独的表中。保持用户记录较小使其保持更高的性能。在这种情况下,您不会有active列。你只需删除不活动的哈希值。

如果确实将激活列存储在用户表中,请确保按名称选择列。例如。在大多数情况下,你会想要这样做:

SELECT id, first_name, last_name, email, password
FROM users

而不是:

SELECT *
FROM users

您只需要在需要时选择激活列。

答案 2 :(得分:0)

如果激活是暂时的,或者哈希将某人定义为活动,那么将它们区分开来。否则,那真的无所谓。

然而,没有更多或更少的关系,没有更多或更少的关系,没有更多的信息。如果对每行中的值组合设置唯一约束,并使用NOT NULL约束设置每个列,则第一个列将是非常关系的。

当数据的正确性随着时间的推移与应用程序对数据的重要性(如果不是更重要)和/或数据结构的正确性/一致性对于正确操作的关键时一样重要时,您使用关系设计应用程序,但可能不一定由应用程序自己的操作保证。