作为一个假设的例子,我有一个模型 TodoItem 和一个模型 TodoList。一个 TodoList 有一个 TodoItem 的有序列表,任何一个 TodoItem 都可以属于任意数量的 TodoList(多对多)。除了 TodoList 中 TodoItem 的顺序之外,不需要存储有关它们关系的其他信息。在数据存储中表示这一点的最佳方式是什么?
有两种方法可以实现这一点 - 给 TodoList 类一个 db.Key 的 ListProperty,它将引用 TodoItem:
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()
稍后我肯定会通过对模型进行非规范化来优化这一点,但是在优化前,任何一种表示都比另一种表示有优势吗?