0

タイムトラッキング用のWebベースのアプリケーションを作成しようとしています。私はまだアプリケーションの構築に使用したいツールのセットを研究していますが、それをNoSQLデータベース駆動型(私の場合はMongoDB)にしたかったのです。私はNoSQLデータベースをまったく使用した経験がないので、私の質問です。次の状況を想定しましょう。

  1. プロジェクトを作成したい。プロジェクトは、名前、URLなどのメタデータで構成できます。
  2. 顧客を作成し、顧客をプロジェクトに割り当てられるようにしたい。
  3. 各プロジェクトには、完了するまでに実行するさまざまなステップがあります。ステップはプロジェクトに属しています。1つのステップを完了するにはより多くの日数がかかる可能性があるため、1つのステップはより多くのイベントで構成できます。
  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 で以前に非常に広範囲に議論されています - When to use MongoDB or other document oriented database systems? ここでは、MongoDB をいつ使用するかを示します

上記のデザインに関しては、私には問題ないようです。

于 2012-05-29T20:36:44.217 に答える