comme exemple hypothétique, j'ai un modèle TodoItem et un modèle todoliste. Un todoliste a une liste ordonnée de TODOITEMS et n'importe quel TODOItem peut appartenir à un nombre quelconque de todolistes (plusieurs à plusieurs). Aucune autre information n'a besoin d'être stockée sur leur relation autre que l'ordre de TodoItem dans un todoliste. Quelle est la meilleure façon de représenter cela dans le magasin de données?
Il existe deux façons de la mettre en œuvre - Donnez à la catégorie Todolist une listeProperty de DB.Key's qui se référera à TODOITEM: P>
class TodoListItem(db.Model): item = db.ReferenceProperty(TodoItem) list = db.ReferenceProperty(TodoList) order = db.IntegerProperty()
3 Réponses :
sauf dans un contexte relationnel où l'on pousse pour la normalisation (tout à fait conseillé dans le cas relectoral, bien sûr!) La "classe de relation" distincte de "la classe" semble être un peu surpeucissable et un peu "stillé" en termes de la façon dont une raison concerne le problème par rapport à la manière dont on les codise. Optimisation-sage Cela faciliterait certainement la recherche de toutes les listes sur lesquelles un article est cependant. P>
Cela dépend de quelques facteurs: P>
Si vous avez besoin d'informations supplémentaires ou si vous avez de nombreux éléments dans votre association ou que vous n'avez besoin que de récupérer quelques-uns d'entre eux, l'entité relativement est probablement un meilleur choix. Dans d'autres situations, la liste peut être à la fois plus facile et plus rapide. Dans le cas d'une liste de TODO, je dirais qu'une liste des clés est très définitivement la meilleure façon d'aller. P>
Étant donné que le Todolistitem peut appartenir à de multiples todolistes, je serais préoccupé par le fait qu'il serait valable d'avoir une propriété d'ordre unique qui fonctionnerait pour chaque liste à laquelle l'article appartient. Je penserais que l'article aurait besoin d'une commande pour chaque liste à laquelle elle appartient. P>