【问题标题】:Database structure for multi-users web application多用户 Web 应用程序的数据库结构
【发布时间】:2012-06-23 12:54:04
【问题描述】:

我正在开展一个以学习为目的的项目。由于这个项目因其主题而对我很有吸引力,我想建立良好的基础,并最终将其投入使用。

由于我的项目相当复杂,为了向您解释我的问题,我将使用一个虚构的项目,它是一个议程应用程序。

此 Web 应用程序将有一个日历,用户可以在其中添加事件和提醒。假设有 10,000 名用户使用它,而这 10,000 名用户将添加数千个事件和提醒。

我的问题是您会推荐与数据库结构相关的两种方法中的哪一种?

  • 我是否应该为每个用户(在创建用户时)创建一个包含提醒和事件表的单独数据库,并将数据库与单独数据库中的用户相关联
  • 或者我应该为事件、提醒和用户创建一个表,并在单个数据库中将它们相互关联?

到目前为止,我还没有做过任何多用户 Web 应用程序,而且对于许多用户,我不熟悉数据库结构方法。如果有任何你想到的设计模式,我会很感激分享:)

【问题讨论】:

    标签: database design-patterns


    【解决方案1】:

    这是我的看法:

    1. 不,您应该为每个用户创建单独的数据库。它无法扩展。意思是每次添加用户都要新建一个数据库?从不。
    2. 一个数据库,多个用户 - 这就是关系数据库的诞生。

    10,000 名用户并不是一个庞大的受众。每个创建数千个事件和提醒意味着 1000 万个事件,1000 万个提醒。这不被视为大型关系数据库。

    您可能需要担心分区和清除旧记录。您将制定什么样的政策来保留这些事件和提醒?一年后用户将拥有什么访问权限? 5年?十年?这些也是值得思考的好话题。

    获取一本关于实体/关系建模的好书并仔细阅读。亚马逊上的任何现代产品都可以。

    【讨论】:

      【解决方案2】:

      我曾经使用过一个数据库,其中每个用户数据都保存在一个单独的数据库中(您的选项 1),我相信这是一场噩梦,公司花费了大量资源将所有这些数据库整合到一个数据库中单个数据库,这不是一件容易的事。

      正如@duffymo 所说,一个数据库/多个用户就是关系数据库的用途。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-27
        • 2015-03-04
        • 2011-09-22
        • 1970-01-01
        相关资源
        最近更新 更多