Come un esempio ipotetico, ho un modello TodoItem e un modello TodoList. Un TodoList ha un elenco ordinato di TodoItem e qualsiasi TodoItem può appartenere a qualsiasi numero di TodoList (Molti a molti). Non è necessario archiviare altre informazioni sulla loro relazione diverse dall'ordine di un TodoItem in un TodoList. Qual è il modo migliore per rappresentarlo nell'archivio dati?ElencoProperty of keys vs Many-to-Many in App Engine
Ci sono due modi per implementare questo - dare alla classe ToDoList un ListProperty di db.Key di che fare riferimento al TodoItem di:
class TodoList(db.Model):
items = db.ListProperty(db.Key)
o fare un modello di ListItem che contiene anche informazioni per gli ordini:
class TodoListItem(db.Model):
item = db.ReferenceProperty(TodoItem)
list = db.ReferenceProperty(TodoList)
order = db.IntegerProperty()
Io sicuramente lo ottimizzerò più tardi denormalizzando i modelli, ma pre-ottimizzazione, una qualsiasi rappresentazione ha un vantaggio rispetto all'altra?