0

我正在尝试编写一个基于 Web 的应用程序来进行时间跟踪。我仍在研究我想用来构建应用程序的工具集,但我希望它是 NoSQL 数据库驱动的(在我的例子中是 MongoDB)。我根本没有使用 NoSQL 数据库的经验,因此是我的问题。让我们假设以下情况:

  1. 我想创建一个项目。一个项目可以包含一些元数据,如名称、url 等。
  2. 我想创建一个客户,并且我希望能够将客户分配给一个项目。
  3. 在完成之前,每个项目都可以完成不同数量的步骤。步骤属于一个项目。一个步骤可以包含更多事件,因为完成一个步骤可能需要更多天。
  4. 根据步骤中的信息,我希望能够计算我在项目上花费的总时间并计算我在每个步骤上花费的总时间(例如发票)。

在对 MongoDB 进行了一些研究之后,我的第一种方法看起来或多或少是这样的:

客户集合

{
    "_id": 4e91bcb40b7aab256c000000,
    "name": "Example",
    "address": "Some street"
}

项目集合

{
    "name": "My new Project",
    "customers_id": 4e91bcb40b7aab256c000000,
    "steps": [
        {
            "name": "Design",
            "desctiption": "Frontend design",
            "time_tracker": [
                {
                    "description": "designed home page"
                    "start": 2012-05-28 10:10:10
                    "end": 2012-05-28 15:15:15
                },
                {
                    "description": "designed home page buttons"
                    "start": 2012-05-29 10:10:10
                    "end": 2012-05-29 15:15:15
                }
            ]
        }
    ]
}

这是一个好的数据库设计吗?我应该标准化这些步骤吗?在此过程中我是否会遇到任何问题(例如计算大项目总数的性能问题等)?在这种情况下我应该坚持使用 RDBMS 吗?

你的经验有什么建议吗?

4

1 回答 1

0

这取决于您的用例、应用程序和数据。

为了避免重复,之前在 Stackoverflow 上已经进行了相当广泛的讨论——何时使用 MongoDB 或其他面向文档的数据库系统?以及何时使用 MongoDB

关于你上面提到的设计,我觉得很好。

于 2012-05-29T20:36:44.217 回答