【问题标题】:Users, Customers, Tenants, Employees - All in the same table?用户、客户、租户、员工——都在同一张表中?
【发布时间】:2013-03-23 20:37:47
【问题描述】:

在这种情况下,让我更具体地说明问题

我有一个 peoples 表(包含客户和供应商)和一个 users 表(用于可以登录的用户)。

目前我有这个数据库结构

客户 -> 组织 -> 通过 rel_customer_addresses 链接到地址表。 (因为 1 位客户可能有送货地址、发票地址等)

Users -> Tenants -> 通过 rel_users_addresses 链接到地址表 (因为 1 个用户可能有送货地址、发票地址等)

现在我已经在发票表 customer_key 中找到了。问题是当用户自己是客户并且发票来自他的一位客户时。如何指示我的网络应用查找用户而不是客户?

【问题讨论】:

  • 这真的取决于您将为每个任务存储多少数据。经验法则是只使用你需要的东西,但你也不想要一个大的、难以使用的数据库。
  • 仅供参考,这个问题是开放式的。这个网站主要是针对特定编程问题的问答式。如果你不小心,他们会否决你。祝你好运!
  • 感谢您的帖子。我已经重写了我的帖子以更具体

标签: database structure multi-tenant


【解决方案1】:

由于您正在查看 2 个单独的实体(客户和用户),我将继续使用 2 个单独的表并让它们共享一个唯一标识符(即用户名、SID)。

这样,如果没有适当的权限,一个人就不可能看到另一个人的信息。

有几种方法可以控制它,但逻辑是这样的。

If userID exists in table user, do this.
If userID exists in table customer, do this.
If userID exists in table user AND table customer, do this.

这样您就可以完全独立或共同控制局势。换句话说,您可以向表customer 中的userID 授予特殊权限,或者只是使其完全独立(类似于说,facebook 如何为页面与它注册的帐户创建单独的“身份”) .

希望有帮助!

【讨论】:

  • 您好,再次感谢您的帮助。我采用了使用角色的方法,并将所有用户类型放在一个表中。这是最简单的,因为在某些时候我需要让所有用户类型登录,并且他们现在在 users 表中使一切变得更容易。
猜你喜欢
  • 2017-01-24
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
  • 2016-10-28
  • 2011-03-31
  • 1970-01-01
  • 2021-02-28
  • 2022-06-14
相关资源
最近更新 更多