gpt4 book ai didi

mysql - 每个用户的 "binary flags"应该放在主用户表中还是放在自己的 "binary flags"表中?

转载 作者:行者123 更新时间:2023-11-29 02:01:29 29 4
gpt4 key购买 nike

在我的一个站点上,我有一个主用户表,其中包含每个用户的唯一用户 ID、电子邮件地址、密码等。

我需要开始跟踪很多与每个用户相关的二进制标志,比如他们是否确认了他们的电子邮件,他们是否发布了消息,他们是否升级了他们的帐户,他们是否做了 X , 他们是否做了 Y 等。

这些标志中的每一个都是简单的“0”(假)或“1”(真),基于这些标志,我的网站向用户展示或做不同的事情。

我的问题是,将这些二进制标志添加到主用户表或为二进制标志或其他内容创建一个单独的表是否更有意义?

请尝试解释您的推理(以及您的方法的优势),以便我了解您的出发点。

最佳答案

是否需要存储所有这些标志,或者可以计算?例如,如果用户没有发布任何消息,这可以通过查询 MESSAGE 表轻松确定。

物理存储“可计算”标志是多余的,并可能导致数据不一致。例如,如果用户添加了一条消息但您的应用程序中的错误阻止了标志更新怎么办?出于性能原因,这种“非规范化”可能是合理的,但只有在您测量实际数据量和代表性工作负载的性能后才能做出此决定。

OTOH,一些标志可能是“真实的”(例如,用户是否已确认电子邮件)。如果此类标志是相对静态的(即您在设计数据模型时提前知道它们),请将它们作为简单的 bool (或等效)字段直接存储在 USER 表本身中。

仅当您需要具有相当大的运行时灵 active 时,才考虑使用与 USER 表成 N:1 关系的单独 FLAG 表。这是一种 EAV .

关于mysql - 每个用户的 "binary flags"应该放在主用户表中还是放在自己的 "binary flags"表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13880548/

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