我正在为学校的网站和移动应用程序构建一个新的API和数据库。因为该应用程序适用于尚未完全识字的幼儿,它使用单一登录学校,然后允许学生通过选择他们的老师的图标然后自己的图标登录,而不是输入用户名或搜索他们的名字。
为了适应这种情况,我们收集了大约1200个儿童友好图标,以确保一个学生拥有与另一个学生相同的图标时没有重叠。
问题是,无论何时创建新学生或教师想要更改学生的图标,我们都必须取消选择该学校其他学生已经使用的任何图标的选项。
我解决问题的第一个倾向是将我的学校表链接到一个单独的“availableIcons”表,其中每一行都以可能的图标的完整列表开头,每次添加学生时,图标都会从已删除学生的可用图标列表,反之亦然。
这会阻止服务器查看所有当前使用的图标并将它们与完整的图标列表进行比较,这听起来可能非常慢,特别是我们的一些学校大约有500个生。
我对这种方法的关注是存储完整的图标列表,即使是数字键,似乎会占用相当多的空间。根据我的计算,每个学校就像2-4mb。这不是一个大问题,但如果有办法有效地做到这一点而不必存储每所学校的完整名单,我宁愿这样做。
这都是使用SailsJS / MongoDB / waterline。
有什么建议吗?
谢谢!
答案 0 :(得分:1)
可用图标是派生数据。我宁愿不将它存储在数据库中。
我的方法:
_.difference
在内存中处理1200个图标并不是一个很大的数字。