仮想の例として、TodoItemモデルとTodoListモデルがあります。 TodoListにはTodoItemの順序付きリストがあり、任意の1つのTodoItemは任意の数のTodoLists(多対多)に属します。 TodoList内のTodoItemの順序以外の関係については、他の情報を格納する必要はありません。これをデータストアで表現する最良の方法は何ですか?App Engineの多対多キーのリストプロパティ
これを実装するには2つの方法があります - todolistのクラスにTodoItemのを参照しますdb.KeyののListPropertyを与える:
class TodoList(db.Model):
items = db.ListProperty(db.Key)
かも発注情報を含んでいるのListItemのモデルを作る:
class TodoListItem(db.Model):
item = db.ReferenceProperty(TodoItem)
list = db.ReferenceProperty(TodoList)
order = db.IntegerProperty()
モデルを非正規化することによってこれを後で最適化することは間違いありませんが、事前最適化は、いずれかの表現が他の表現よりも利点を持っていますか?