多用户Web应用程序数据库设计

时间:2009-07-14 17:00:25

标签: database-design saas

我正在开发一个Web应用程序,它将在完成后成为托管的多用户解决方案。我正在试图找出处理我的应用程序的数据库设计的最佳方法。具体来说,我需要弄清楚如何处理多个独立的帐户。

我看到它的方式,有几个选择: 1)有一组数据库表。在每个表中,包含一个“用户”列或类似的列,将每行映射到正确的用户帐户。 2)为每个用户创建一个完全独立的数据库。出于性能原因,这似乎不是一个非常好的主意。 3)为单个数据库中的每个用户创建单独的模式。每个模式都包含每个用户的表。

你会如何处理这个问题?有没有我错过的选择?我正在使用PostgreSQL作为我的数据库,如果这对你如何处理这个问题有任何不同。

2 个答案:

答案 0 :(得分:7)

我几乎总是选择#1选项。如果你设计得恰到好处,你可能只需要几个关键表中的“用户”列作为你的入口点,然后其他一切都可以从这些关键表中加入。

答案 1 :(得分:6)

作为一般经验法则,您几乎不希望拥有具有相同结构的多个表(或数据库)。如果您发现自己正在考虑创建单独的stuff_for_user_astuff_for_user_b表(这是您的选项#2和#3听起来很像),那么您可能只想创建一个{{1} } table包含一个stuff列(即您的选项#1)。