用户,客户,租户,员工 - 所有在同一张桌子上?

时间:2013-03-21 21:00:56

标签: database structure multi-tenant

在这种情况下,让我更具体地解决问题

我有一个人员表(有客户和供应商),我有一个用户表(对于可以登录的用户)。

目前我有这个数据库结构

客户 - >组织 - >通过rel_customer_addresses链接到地址表。 (因为1个客户可以有delivery_address,发票地址等。)

用户 - >租户 - >通过rel_users_addresses链接到地址表 (因为1个用户可以拥有delivery_address,发票地址等。)

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

1 个答案:

答案 0 :(得分:0)

由于您正在查看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.

通过这种方式,您可以完全独立或一起控制情况。换句话说,您可以向表userID中的customer授予特殊权限,或者只是将其完全分开(类似于facebook如何为页面与帐户创建单独的'身份'它已注册)。

希望有所帮助!