2014-09-10 49 views
1

我有两个网站,我都是基于订阅的服务。这两个网站都允许订户创建可使用其订阅但具有不同登录名的“子用户”(用于安全性和日志记录目的)。每个网站都有不同的实现方式。单独的表格或区分字段?

单独的表

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

区分字段

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

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

+0

您应该将您的问题更改为“一个与另一个的优点是什么”,因为没有总是一个“更好”的解决方案。只有利弊。 – Nico 2014-09-10 17:42:35

+0

好点。我编辑了我的问题。 – 2014-09-10 17:44:48

回答

1

选项1:

优点:

  1. 如果您设置的密钥正确,就可以实现级联删除/更新更容易。如果您的用户取消,例如,删除它们将通过外键自动删除其他用户。如果您需要更新的用户帐户,并将这些变化影响到他们所有的subusers,这也是非常简单的在这里
  2. 如果用户和subusers之间的数据要求,基本上是不同的,你能避免大量未使用的字段,否则将被要求在一个表中的解决方案

缺点:

  1. 你描述基本上一切,
  2. 如果subuser成为用户,会发生什么?或者一个用户成为一个子用户?你如何保持应用程序逻辑的整洁用户是用户表和子用户表的成员?

选项2:

优点 1.它更容易管理上述方案中,其中用户可能成为一个subuser或反之亦然的类型。

  • 应用逻辑是简单明了的,特别是如果你没有几个层次(分subusers和子 - 子subusers,例如)
  • 缺点

    1. 如果你有多个级别(特别是如果你有一个可变数目的水平),这可以得到是一种痛苦
    2. 如果您的用户数据和subuser数据是完全不同的,你会发现自己插入大量空值fo对于每个用户和子用户,这可能是一个很好的指示,表明模式需要更改(或者用户 - 用户设置,或者其他内容,如将用户元与用户分开,等等)

    在这两者之间,如果是我,我可能会选择选项2.在很多情况下它更干净,并且您可能没有多个关卡和/或未知数量的关卡。如果这两个陈述都是真实的,那么您可能会更容易维护选项2,而不是选项1.

    +0

    感谢您的回答。只有两个级别(用户和subsuser),数据几乎完全相同,所以选项2是最好的选择。 – 2014-09-11 01:09:01

    相关问题