gpt4 book ai didi

mysql - 数据库设计 : Register and Verification

转载 作者:可可西里 更新时间:2023-11-01 08:01:31 24 4
gpt4 key购买 nike

将未经验证的用户放入 users_table 是一个不错的选择,还是我应该创建一个 temp_users_table 来添加未经验证的用户?

第一个选项是在 users_table 上创建包含一列的行,例如 account_activated 来保存一个整数,该整数定义帐户是否已验证.

第二个选项是有两个相同的表,users_tabletemp_users_table。最后添加未验证的用户。验证后,该行将被复制到 users_table 并从 temp_users_table 中删除。

哪个更好,为什么?

编辑:

第二张表并不意味着永远留在那里,它是临时的,只会在用户未激活时存在。当用户被激活时,它将被迁移到“主”user_table。

所以:

users_table: Will have the users that have been verified.
temp_users_table: Will have ONLY the users that are not verified.

最佳答案

我从不同的角度看待这个问题。

在您的情况下,一张 table 可能就足够了。但还有其他考虑因素。

1) 体积。在小表中,过滤标志不会显着影响性能。在一个大表(数百万行)中,您必须将标志放在索引中。在大表的索引中放置低基数标志会降低性能。

2)缺陷。在表中有一个标志要求几乎每个查询都使用该标志。对于一个足够大或足够复杂的系统,有人会错过那个标志。确定风险取决于意外选择未激活用户的成本。

减轻风险的一种方法是使用 View 。如果您实现双表解决方案,请使用使用 UNION ALL 的 View (All_Users)。如果您实现单表解决方案,请仅为激活的用户创建一个 View 并改用该表。只有维护功能需要修改核心表。

关于mysql - 数据库设计 : Register and Verification,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1699740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com