gpt4 book ai didi

mysql - 单独的表或区分字段?

转载 作者:行者123 更新时间:2023-11-29 00:09:39 25 4
gpt4 key购买 nike

我有两个网站,它们都是基于订阅的服务。这两个站点都允许订阅者创建可以使用其订阅但具有不同登录名(出于安全和日志记录目的)的“子用户”。每个网站都有不同的实现方式。

分表

第一个系统有一个名为subsusers 的单独表。每个子用户都(通过外键)链接到一个用户。此设置需要在登录脚本以及需要访问用户信息的任何地方添加额外的代码。

区分字段

其他站点没有subusers 表。相反,users 表中的一个字段指向另一个用户作为其“父级”,表示它是一个子用户。这需要更少的登录和用户信息脚本编码。

这两种设置都功能齐全且运行良好。不过我想知道:它们各自的优缺点是什么(速度、编码、麻烦)?

最佳答案

选项 1:

优点:

  1. 如果您正确设置了 key ,则可以更轻松地实现级联删除/更新。例如,如果您的用户取消,删除他们将通过外键自动删除其他用户。如果您需要更新用户帐户并让这些更改影响他们的所有子用户,这里也非常简单
  2. 如果用户和子用户之间的数据要求有很大不同,您可以避免使用单表解决方案中需要的大量未使用字段

缺点:

  1. 基本上你描述的一切
  2. 如果子用户成为用户会怎样?或者用户成为子用户?您如何使应用程序逻辑保持整洁用户是用户表和子用户表的成员?

选项 2:

优点 1. 管理上述场景类型更容易,用户可能成为子用户,反之亦然。

  1. 应用程序逻辑简单明了,尤其是当您没有多个级别(例如子子用户和子子子用户)时

缺点

  1. 如果你有多个关卡(尤其是如果你有可变数量的关卡),这可能会有点痛苦
  2. 如果您的用户数据和子用户数据完全不同,并且您发现自己为每个用户和子用户插入了大量空值,这可能是一个很好的迹象,表明需要更改架构(使用用户-子用户设置) ,或者其他东西,比如将用户元数据与用户分开,等等)

在这两者之间,如果是我,我可能会选择选项 2。它在很多情况下更简洁,而且您可能没有多个级别和/或未知数量的级别。如果这两个陈述都是正确的,那么与选项 1 相比,您可能更容易坚持选项 2。

关于mysql - 单独的表或区分字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25771692/

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