Mysql 单独的表格还是区分字段?

Mysql 单独的表格还是区分字段?,mysql,Mysql,我运行的两个网站都是基于订阅的服务。这两个站点都允许订阅者创建“子用户”,这些“子用户”可以使用他们的订阅,但具有不同的登录名(出于安全和日志目的)。每个网站都有不同的实现方法 单独表格 第一个系统有一个单独的表,名为subsusers。每个子用户(通过外键)都链接到一个用户。此设置需要登录脚本中的其他代码以及需要访问用户信息的任何位置 区分字段 另一个站点没有子用户表。相反,users表中的字段指向另一个用户作为其“父用户”,表示它是子用户。这需要更少的登录和用户信息脚本编码 这两种设置功能齐

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

单独表格

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

区分字段

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


这两种设置功能齐全,工作正常。我想知道:每种方法(速度、编码、麻烦)的优缺点是什么?

选项1:

优点:

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

  • 基本上你描述的一切
  • 如果子用户成为用户会发生什么?或者用户变成了子用户?如何保持应用程序逻辑整洁用户既是用户表的成员又是子用户表的成员
  • 选项2:

    专业人士 1.更容易管理上述场景类型,其中用户可能成为子用户,反之亦然

  • 应用程序逻辑简单明了,尤其是在没有多个级别(例如子用户和子用户)的情况下
  • 缺点

  • 如果你有多个关卡(特别是如果你的关卡数量可变),这可能会让你感到痛苦
  • 如果您的用户数据和子用户数据完全不同,并且您发现自己为每个用户和子用户插入了大量空值,这可能是需要更改模式的一个很好的指示(可以使用用户-子用户设置,也可以使用其他方法,例如将用户元与用户分开,等等)

  • 在两者之间,如果是我,我可能会选择选项2。它更干净,在很多情况下,你可能没有几个级别和/或未知数量的级别。如果这两种说法都是正确的,那么您可能更容易维护选项2,而不是选项1

    你应该把你的问题改为“一个对另一个有什么好处”,因为并不总是有“更好”的解决方案。只有正反两方面,说得对。我编辑了我的问题。谢谢你的回答。只有两个级别(用户和子用户),数据几乎完全相同,因此选项2是最佳选项。