数据模型多租户站点

时间:2011-10-26 17:35:55

标签: sql data-modeling multi-tenant

我只是想让一些有能力的人在这里运行这个模型。

场景是我已经制作了一个ASP MVC 3网上商店,将由多家公司使用。

一个代码库,多个站点。

实施例。我有:

  • company1.acme.com
  • company2.acme.com

他们都应该使用相同的代码库,但对于用户来说,网店中的数据应该是不同的。

所以我做了这个简单的数据模型: enter image description here

Site我存储了有关公司的所有信息,例如。主持人=公司1。

在所有表中使用Host作为PK是否正确?

如何改进这个模型?

更新 enter image description here

2 个答案:

答案 0 :(得分:2)

如果主机不是密钥的一部分,则在所有表上存储主机是冗余/非规范化的。

SettlementSettlementLine为例。 SettlementLine只需了解SettlementID,就可以通过加入Settlement表来获取主机。

主机不应该位于其他表的PK中(仅FK),至少ID是自动编号。

我会有表格

Site
----
Host (PK)
Name

Item
----
ID Autonumber PK
Host (FK Site.Host)
Name

SettlementLine
--------------
ID Autonumber PK
SettlementID (FK Settlement.ID)
ItemID (FK Item.ID)

Settlement
----------
ID Autonumber PK
Host (FK Site.Host, Profile.Host)
UserName (FK Profile.UserName)

Profile
-------
UserName PK
Host PK (FK Site.Host)
Name

答案 1 :(得分:1)

我为你添加了一个“多租户”标签。

This SO answer简要介绍了结构方法,以及指向具有更多细节的文章的链接。