3

Je conçois un projet simple basé sur la liste de faire. l'idée est de définir les tâches sous le projet (pas de workflow - juste "tâche est terminée" ou pas est nécessaire.) d'une manière hirarchial. c'est-à-dire que chaque tâche a plusieurs tâches et que cette tâche peut avoir d'autres tâches multiples. un projet peut être considéré comme achevé si toutes les tâches de ce projet sont achevées. , je pensais à utiliser la réfrenceproeperty pour créer la hiérarchie, mais je ne pouvais pas trouver de moyen facile (qui ne prend pas plus de 30 secondes pour trouver tous les enfants d'un projet et vérifier la météo, il est terminé ou non). pour détecter si le projet est terminé ou non. comment concevoir la base de données pour un tel travail? et aussi, si j'ai besoin de copier le projet pour définir un autre projet, comment copier des données hiérarchiques?conception de base de données dans le moteur de l'application google

Répondre

3

La philosophie dominante de l'App La banque de données du moteur, comme pour les autres bases de données nosql, consiste à écrire, pas à lire. En gardant cela à l'esprit, vous pouvez utiliser les relations avec les parents, comme le suggère Adam, et garder un «compte incomplet» sur chaque nœud, qui compte le nombre d'enfants immédiats qui ne sont pas encore terminés. Lorsque vous marquez un nœud complet, décrémentez le nombre de ses nœuds parents; Si cela l'amène à être complet, passez à son parent, et ainsi de suite. Avec une structure comme celle-ci, vous pouvez montrer instantanément si une tâche est terminée ou non.

+0

Pour en savoir plus sur la philosophie de «travailler sur l'écriture, pas sur la lecture», vous pouvez visionner la vidéo de l'application Google I/O de Bret Saltkin. Les liens pour les deux vidéos sont intégrés dans mon article de blog détaillé à ce sujet. http://akhilspassion.blogspot.in/2012/12/database-design-for-google-app-engine.html – nanospeck

0

Il est probablement préférable d'implémenter la hiérarchie des tâches en définissant le parent d'une entité de tâche sur l'entité de tâche ou l'entité de projet à laquelle elle appartient.

Je pense que l'astuce pour trouver si tous les enfants d'un projet sont complets ou non serait d'utiliser des requêtes ANCESTOR.

Si vous créez vos dossiers de tâches telles que leur parent est mis à la tâche ou d'un projet auquel ils appartiennent, vous devriez être capable d'écrire quelque chose comme ceci:

all_done = db.Query().ancestor(project_entity).filter('complete = ', False).count() 
if all_done > 0: 
    #Not all done 
else: 
    #All done 
Questions connexes