2011-07-06 65 views
1

我正在爲SaaS應用程序創建多租戶(共享模式)數據庫。該應用程序將允許訂閱公司(租戶)與其他公司(賬戶 - 如供應商,業務合作伙伴,客戶等)進行協作。用戶將與租戶和帳戶相關聯。SaaS,多租戶(共享模式) - 一桌還是兩桌?

這是我的問題:從設計的角度來看,可以將租戶和帳戶放在一張表中嗎?我在想「是」,因爲公司是一家公司,不管他們是租戶還是帳戶。此外,我正在考慮用is_tenant(布爾)等字段解讀租戶,並可能將租戶特定信息放在單獨的表格中。這裏有一個建議方案:

  • 公司(COMPANY_ID,is_tenant,姓名,地址等)
  • 用戶(user_ID的姓名,電子郵件,用戶名,密碼等)
  • company_users(COMPANY_ID, USER_ID)
  • tenant_information(COMPANY_ID,billing_address,billing_state等)
  • tenant_accounts(tenant_id,ACCOUNT_ID) - 與相關聯的帳戶[其中tenant_id和ACCOUNT_ID將f_keys到公司表]
0租戶

我閱讀了MS文章Multi-Tenant Data Architecture,雖然很有幫助,但它提供的答案很短。

有關此模式的任何其他想法/意見/陷阱將不勝感激。

在此先感謝。

回答

0

我也同意...... 如果所有的屬性都是相同的,那麼就不需要爲該創建另一個表(數據契約)。

我們也在使用這種類型的東西。在SAAS框架中,您始終需要小心地創建表格,否則將需要花費巨大的努力來重構遷移過程&。

雖然我有一個問題!無法看到任何「Company_Information」表將具有公司的具體信息(這不是你的租戶)

+0

嗨Wali ...感謝您的答覆和投票的信心。很高興知道別人傾向於這種設計。而且,你對公司信息表是正確的。它在那裏,我只是沒有在例子中包含它。那裏有其他想法嗎? – Piet

+0

添加同一主題: 我們在「公司」 - 「供應商」,「客戶」和「租戶」中包含了更多類型,因此我們最終在**公司中添加了一個枚舉而不是bool字段表**。如果你預見到這樣的事情,那麼最好是枚舉。 – Wali

+0

Wali ...您是否願意擁有tenant_accounts表來將租戶與他們開展業務的帳戶(供應商,客戶等)相關聯?或者,你能否在公司表中添加parent_id創建關係?設計是否優越? – Piet