1

次のようにモデルを設定しています。

class Day(db.Model):
    date = db.DateProperty()
    total = db.FloatProperty()

class Event(db.Model):
    desc = db.StringProperty()
    amount = db.FloatProperty()

階層は次のとおりです: ユーザー > 日 > イベント (ユーザーには日があります。日にはイベントがあります。)

ユーザーがログインするとき、私は自分の日を選択したいと思います(日付ごとの範囲について)。そして、日ごとにイベントを取得したいと思います。今のところ、これらがリストに表示されているとしましょう。

親プロパティを使用して明示的なエンティティ グループを作成する必要がありますか? または、ユーザーの日に参照プロパティを追加し、日のイベントに参照プロパティを追加する必要がありますか?

各方法の長所と短所は何ですか? パフォーマンスの考慮事項? スケーラビリティの考慮事項? また、可能な限り最善の方法でこれを照会するにはどうすればよいでしょうか。

ありがとう!

4

1 に答える 1

1

Day モデルと Event モデルを一緒にトランザクションで更新する必要がある場合 (たとえば、「total」フィールドをイベントごとに更新する必要がある場合)、エンティティ グループを使用します。それ以外の場合は、参照プロパティを使用します。

日付範囲内のすべてのイベントを最も効率的に選択するには、ある程度非正規化して、イベントに「日付」プロパティも配置するのが最善の方法です。次に、指定された範囲内の指定されたユーザーのすべてのイベントに対してクエリを実行し、必要に応じてそれらから Day エンティティを取得できます。

于 2010-03-03T10:41:17.467 に答える