В качестве гипотетического примера у меня есть модель TodoItem и модель TodoList. У TodoList есть упорядоченный список TodoItems, и любой TodoItem может принадлежать любому числу TodoLists (Many-to-Many). Никакая другая информация не должна храниться в отношении их отношений, кроме порядка TodoItem в TodoList. Каков наилучший способ представить это в хранилище данных?
Существует два способа реализовать это: присвойте классу TodoList ListProperty из db.Key, который будет ссылаться на TodoItem's:
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()
Я определенно буду оптимизировать это позже путем денормализации моделей, но предварительная оптимизация, имеет ли какое-либо одно представление преимущество над другим?