我正在编写软件,以向许多类别的人提供反馈。例如,我可能有30名员工和40项评估标准(例如“准时到达”、“礼貌”、“似乎在刷牙”等等)。在任意情况下,主管可以提交一条反馈信息,比如"employee 3获得标准8的5/5 (他闻起来很棒)“或"employee 10获得标准12的1/5 (他刚刚称客户为白痴)”。
我的想法是通过保留userId和standardId字段,将这些小反馈单独存储起来,链接到员工和标准。
当我想看看所有30名员工和40名标准的反馈时,问题就来了。我的当前方法需要1200个查询才能检索所有这些数据。我在找更好的方法。我正在使用谷歌应用程序数据库,这是一个非关系数据库。
我一直在想的事情,以及我欢迎反馈的事情:
因此,我问题的简短版本是:我应该如何存储这些数据,以便在快速检索一个大子集和快速插入各个反馈片段之间取得最佳平衡?
发布于 2010-10-06 18:32:37
您可能可以使用RelationIndex来完成这个任务。取决于您希望如何允许用户查看和查询数据,它应该工作。
这个想法非常直截了当,基本上你会为每个员工存储一个“标准”列表。可能还有每个标准的员工名单。然后你就可以问一些问题,比如所有员工的“气味很好”。
因为每个标准都有分数,所以您可能需要在列表("3: 12 ")中将“分数”和“标准数字”作为一对进行存储,这样您就可以找到在标准12上得分为3分的每个人。
编辑:基于评论更新。
听起来你需要处理几个不同的问题。首先,您需要处理数据的编辑和维护。其次,您需要处理数据查询。第三,您需要处理显示数据的问题。
为了有效地查询数据,您可能需要一些类似于我最初建议的方法。什么是更常见的,编辑或查看数据?这将影响您如何设置您的模型。
如果你只与30或40名员工和30或40名标准打交道,也许你可以使用以下内容:
class Evaluations(db.Model):
period = db.StringProperty()
standards = db.TextProperty()
scores = db.TextProperty()
class EvaluationsIndex(db.Model):
index = db.StringListProperty()使用计算中的“标准”属性存储评估标准的列表。然后将员工标准分数网格存储在分数属性中。显然,您需要同时序列化标准列表和评估网格,可能需要使用类似于JSON的方法。正如我前面提到的那样,使用EvaluationsIndex模型。
有了这个(或类似的东西),您就可以非常容易地编辑、非常容易地显示和支持查询。
您可以添加一个额外的模型来跟踪哪个主管输入了评估和她的说明。
https://stackoverflow.com/questions/3874022
复制相似问题