2011-06-04 2 views
0

Je travaille sur une application d'achèvement d'objectif, où il peut y avoir des objectifs, des jalons et des tâches. Les jalons appartiennent à des objectifs, les objectifs peuvent avoir de nombreux jalons, et les tâches peuvent appartenir à l'un ou l'autre des buts, aux jalons ou se suffire à eux-mêmes. Les informations que je veux stocker dans chaque modèle est la suivante:Comment modéliser les associations pour une application de tâche?

Goal  content:string, est_completion_date:date completed:boolean, completion_date:date 
Milestone content:string, est_completion_date:date completed:boolean, completion_date:date 
Task  content:string, occur_on:date completed:boolean, completion_date:date, days:? 

Le champ « occur_on » pour le modèle de la tâche est de planifier la tâche pour une date personnalisée. Le champ 'jours' stocke les jours de la semaine où la tâche devrait se produire, si elle est récurrente.

J'ai deux questions.

1) J'ai lu sur l'héritage de table unique et je me demandais si cela fonctionnerait pour moi. Chaque modèle est à peu près le même, sauf que le modèle de tâche a 'days' et 'occur_on', mais n'a pas 'est_completion_date'. Quelle est la meilleure façon de modéliser toutes ces associations? 2) Je ne sais pas exactement comment stocker les informations concernant les jours de la semaine où une tâche devrait se produire. Devrais-je en faire un tableau associatif avec des valeurs booléennes pour chaque jour, ou devrais-je avoir des champs séparés pour chaque jour dans le tableau?

Répondre

0

1) Votre question de l'héritage de table unique est bien répondu here.

2) Je recommande de garder les choses simples pour votre colonne days. Il suffit de stocker une chaîne de chiffres, avec chaque chiffre représentant un jour. Donc 245 peut représenter lundi, mercredi & jeudi. Pour trouver les tâches qui se produisent le mercredi, vous pouvez interroger avec une expression régulière, par ex. select * from tasks where days regexp("4");

Questions connexes