11
votes

LISTPROPERTY DES KEYS VS BEAUCOUP-TOIX IN APP MOTEUR

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()


0 commentaires

3 Réponses :


1
votes

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.


0 commentaires

10
votes

Cela dépend de quelques facteurs:

  • Avez-vous besoin de stocker des informations sur la relation elle-même, autre que sa commande? Par exemple, un grand nombre de commandes et de produits devraient stocker la quantité de chaque produit.
  • Avez-vous besoin d'associer plus de mille points ou donc d'éléments sur le côté de la relation avec «plus petit» cardinalité (par exemple,> 1000 articles TODO, ou> 1000 listes pour un article)?
  • Voulez-vous généralement récupérer tous les éléments associés à la fois, ou voulez-vous être plus sélectif?

    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.


0 commentaires

0
votes

É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.


0 commentaires