作为一个完全的新手,当谈到firebase时,我正在为整个数据结构概念而挣扎,就像这听起来可能很愚蠢一样。我是如此习惯于关系数据库,以至于我认为我错过了或者只是没有得到NOSQL的基本流程。所以我的问题是关于文档和子集合等的,我想知道我将如何结构化以下数据,因为我的头只是没有得到它。
我的结构是尽可能简单地说有些公司,有员工(驾驶员)。这些驾驶员将驾驶属于公司的车辆。这些车辆将安装有泵,而泵又会安装有管道(最多60个管道)这些车辆和泵应每天检查。最多检查10个项目。还需要单独记录在km或日期进行的车辆维护管道每月检查一次,所有管道(总共最多60个)现在有了关系数据库,使用key_fields和Primary_关键字。在firebase方面,一个人如何构建文档和集合,在什么时候子集合会进入这个结构,什么会适合子集合。正如我所说的,出于某种原因,我只是没有得到这些理念的
试过看教程,但仍然没有得到一分钱下降,因为他们是不同的术语和建议。
1条答案
按热度按时间kxkpmulp1#
正如我在评论中所说的:在NoSQL中,你通常为应用程序的用例建模数据,而不是为一些感知的数据库范式建模。
所以让我们从一个用例开始,比如说:“显示公司列表”。一个简单的模型是有一个顶级的集合“公司”。
现在转到下一个用例,比如说:“show the drivers for a single company”。这里变得很有趣,因为你需要决定是否将所有驱动程序存储在一个顶级集合中,或者将它们存储在每个公司文档下的子集合中。
在Firestore中,这两种方法在读取性能上没有区别,因为从集合中进行阅读并不**取决于该集合中的文档数量。这是与SQL数据库的最大区别之一。有关详细信息,请参阅Queries scale with the size of your result set, not the size of your data set
所以,相反,根据你的应用程序的用例来决定。
在这两种情况下,我都建议将公司ID存储在每个驱动程序文档的字段中。尽管在第一种情况下并不立即需要它,但随着用例的发展,它通常会派上用场。
通过这种方式,您将添加越来越多的用例,并发展您的数据模型。
如果你在为一个特定的用例建模时遇到了困难,这里有更多的人可以提供帮助。