私は Google アプリ エンジンについて調べており、それをよりよく理解するためのサンプルを準備しています。
簡単に言えば、ユーザーはカレンダーのように、その月の毎日のエントリを記録できます。また、ユーザーは月単位でエントリを表示できます。したがって、一度に 30 個を超えることはありません。
最初に私は使用db
していましたが、1 対多の関係は簡単でした。
しかし、 に出会ってからndb
、1 対多の関係をモデル化するには 2 つの方法があることに気付きました。
1) 構造化されたプロパティは、User モデルで繰り返されるプロパティのように機能するようです。1 人のユーザーを取得すると、そのユーザーが入力したすべてのレコードが自動的に取得されるということですか? (例: 1 年中) でも、これはあまり効率的ではありませんね。利点は、関連するすべてのデータを 1 回の読み取り操作で取得できることだと思います。
from google.appengine.ext import ndb
class User(UserMixin, ndb.Model):
email = ndb.StringProperty(required = True)
password_hash = ndb.TextProperty(required = True)
record = ndb.StructuredProperty(Record, repeated=True)
class Record(ndb.Model):
notes = ndb.TextProperty()
2)代わりに、おそらくより古典的な方法を使用できます。
class User(UserMixin, ndb.Model):
email = ndb.StringProperty(required = True)
password_hash = ndb.TextProperty(required = True)
class Record(ndb.Model):
user = ndb.KeyProperty(kind=User)
notes = ndb.TextProperty()
私のユースケースではどちらがより良い方法ですか?