【发布时间】:2017-07-08 15:23:00
【问题描述】:
我正在尝试编写一个基于 Web 的应用程序来进行时间跟踪。我仍在研究我想用来构建应用程序的工具集,但我希望它是 NoSQL 数据库驱动的(在我的例子中是 MongoDB)。我根本没有使用 NoSQL 数据库的经验,因此是我的问题。让我们假设以下情况:
- 我想创建一个项目。一个项目可以包括 一些元数据,如名称、网址等。
- 我想创建一个客户并且我希望能够分配一个 项目的客户。
- 每个项目可以有不同数量的步骤来完成 直到完成。步骤属于一个项目。一个步骤可以包括 更多事件,因为完成一个步骤可能需要更多天。
- 根据我希望能够执行的步骤中的信息 计算我在一个项目上花费的总时间并计算一个 我在每个步骤上花费的总时间(例如发票)。
在对 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 吗?
您的经验有什么建议吗?
【问题讨论】: