タイムトラッキング用のWebベースのアプリケーションを作成しようとしています。私はまだアプリケーションの構築に使用したいツールのセットを研究していますが、それをNoSQLデータベース駆動型(私の場合はMongoDB)にしたかったのです。私はNoSQLデータベースをまったく使用した経験がないので、私の質問です。次の状況を想定しましょう。
- プロジェクトを作成したい。プロジェクトは、名前、URLなどのメタデータで構成できます。
- 顧客を作成し、顧客をプロジェクトに割り当てられるようにしたい。
- 各プロジェクトには、完了するまでに実行するさまざまなステップがあります。ステップはプロジェクトに属しています。1つのステップを完了するにはより多くの日数がかかる可能性があるため、1つのステップはより多くのイベントで構成できます。
- ステップからの情報に基づいて、プロジェクトに費やした合計時間を計算し、各ステップに費やした合計時間を計算できるようにします(たとえば、請求書の場合)。
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を使用する必要がありますか?
あなたの経験から何かヒントはありますか?