多用户应用程序如何使用数据库?

问题描述 投票:0回答:2

对于具有多个用户的服务,在数据库层如何转换? 采用一个使用三列表的简单键值存储:

ID
(充当主键,我知道这是一件事),
key
value

如果您现在支持多个用户,您会:

  1. 具有相同的架构和每用户表;
  2. 在上面的表格中添加一个
    owner
    列;
  3. 完全是另一回事。

我的直觉倾向于解决方案(2),所有查询都会受到

owner = "foo"
的限制。 但正如我所说,我几乎没有任何直觉。 如果您确实选择(2),那么 ID 仍然是一个不断增加的整数,还是
(owner, ID)
是一种复合主键?

database database-design
2个回答
0
投票

如果您选择 3,那么您将必须在运行时创建和删除表,并将它们命名为用户特定的名称。这是最好避免的事情。 2更实用。保留一个由序列生成的值的主键,并为您的所有者 ID 保留一个外键。


0
投票

您所指的概念的正确术语是“租户”,而不是“用户”。 “用户”一词有如此多的其他用途,以至于实际上无法使用。 (看看我在那里做了什么?)

那么,问题是“如何在数据库中实现多租户?”

答案当然是“tenant_id”字段。总是。

从关系的角度来看,任何涉及每个事物一个表的解决方案都是错误的。 不管那是什么东西。

© www.soinside.com 2019 - 2024. All rights reserved.