作为一个假设的例子,我有一个模型TodoItem和一个模型TodoList。 TodoList具有TodoItems的有序列表,并且任何一个TodoItem可以属于任意数量的TodoLists(多对多)。除了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()
我肯定会通过对模型进行非规范化来优化它,但是预优化,任何一种表示都比其他表示有优势吗?