Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase数据库结构审查_Firebase_Firebase Realtime Database_Ionic3 - Fatal编程技术网

Firebase数据库结构审查

Firebase数据库结构审查,firebase,firebase-realtime-database,ionic3,Firebase,Firebase Realtime Database,Ionic3,我已经设计了我的firebase数据库,如下所示。我需要建议。同时也指导我离子2的最佳分贝。。。我是firebase的新手。。。提前谢谢 我有月份、类别、实际预算金额和支出金额 [ { "months": { "month_1":"january", "month_2":"Februrary", "month_3":"March", "month_4":"April"

我已经设计了我的firebase数据库,如下所示。我需要建议。同时也指导我离子2的最佳分贝。。。我是firebase的新手。。。提前谢谢

我有月份、类别、实际预算金额和支出金额

[
    {
        "months": {
            "month_1":"january",
            "month_2":"Februrary",
            "month_3":"March",
            "month_4":"April"
        },
        "acutal": {
            "acutal_amount_1":"2000",
            "acutal_amount_2":"4000",
            "acutal_amount_3":"4000"
        }
        "spent": {
            "spent_amount_1":"1000",
            "spent_amount_2":"2000",
            "spent_amount_3":"3000"
        }
        "categories": {
            "category_1": {
                "categoryname":"Food",
                "amounts": {
                    "acutal_amount_2":true,
                    "spent_amount_3":true
                },
                "months": {
                    "month_1":true,
                    "month_3":true,
                    "month_4":true
                }
            }
        }
    }
]

处理firebase的关键是了解需要在一个对象中保存哪些信息,以便在另一个树中找到有关它的更多信息

尽管你可以这样做:

person:{
    name: "rob",
    gender: "male",
    children: {
       person: {
         name:"maria",
         gender:"female"
       },
       person: {
         name:"maria",
         gender:"female"
       }
   }
}
userID
|_ months
   |_ feb_2017
      |_ expense_1
         |_ expense data...
这可能不是最好的选择。你应该保持你的树像:

people: {

   person:{
      name: "rob",
      gender: "male",
      children: {
         name:"maria",
         name:"dasy"
      }
   },
   person: {
      name:"maria",
      gender:"female"
   },
   person: {
      name:"daisy",
      gender:"female"
   }
}
当你想知道孩子的性别时,你可以直接按名字过滤

我想你应该读一下:


他们在Firebase的文档中做得很好

关于Firebase,您需要知道的一件事是,您可以(而且必须)始终将所有内容保存在不同的节点中

因此,将所有数据放在一个用户节点中是一种不好的方式,如下所示:

person:{
    name: "rob",
    gender: "male",
    children: {
       person: {
         name:"maria",
         gender:"female"
       },
       person: {
         name:"maria",
         gender:"female"
       }
   }
}
userID
|_ months
   |_ feb_2017
      |_ expense_1
         |_ expense data...
因为在检索用户数据时,例如,您将检索其节点下的所有内容,并且在使用几个月后,用户一次加载所有内容可能会很繁重

因此,这里有一个想法,我认为这是最好的方式为你做你的火基结构

用户节点: 使用者 |_用户ID |_姓名:乔恩 |_文件:123456789 |_另一个数据

用户节点只需要有用户数据,除此之外,你只需要从应用程序中的用户那里得到他的UID。他的UID、姓名和其他所有信息都可以存储在本地,因此您无需每次都在数据库中获取

用户\u月节点:

User_months
|_user_uid
   |_ month_uid
      |_ amount: 2000
      |_ spent: 1800
      |_ month: sep_2017
      |_ other important things in general for the month expenses
用户_months将对用户有预算要花费的所有月份进行分组,并将保存该月份的所有其他重要数据,如他有多少钱、他花了多少钱、有问题的月份以及您需要的任何其他数据

在检索数据以填充月份列表时,您可能需要分离并返回要在标题中使用的完整月份名称。您将使用Firebase中返回的uid作为月份uid和费用uid(我将在下面显示)。您还可以通过查询来检索单个月份,如
firebase.database().ref('User\u months/'+User.id.)、orderByChild('month')、equalTo('sep\u 2017')…

“每月费用”节点:

Expenses_month
|_ user_uid
   |_ month_uid (same from the user month)
      |_ expense_uid (a new push())
         |_ category: 'food'
         |_ value: 34.55
         |_ date: 2017/09/27 - 11:30AM
         |_ description: ''
因此,在推送一个新月份时,您将获得push()callback上的键,并使用它推送您当月的所有开支

如果您的“类别”节点类似于“用户或公司在食品上花费了多少钱”,我建议您不要使用它,而是查询“食品”的子对象,并将这些值相加

因为我不知道你的应用程序将如何工作,这是我能做的最好的,但总的来说,我认为这将非常适合你的应用程序


希望这有帮助。

首先,我们需要知道您的应用程序是什么,并了解它的作用,以便我们可以组织您的firebase树。我们还需要知道哪些节点相互依赖。另外,问“什么是最好的数据库”也是一个个人意见问题,因为它取决于很多事情,比如你知道的后端语言,你的应用程序如何工作,是否需要实时。请提供更多信息。您的应用程序是否具有组织和显示用户或公司花费多少的功能?我正在开发用于learning Ionic2的预算管理应用程序。所有12个月可能有所有类别,也可能有额外类别。对于我们需要得到实际预算价值的每一种产品,以及他在这类产品上花了多少钱,我开始理解了。你将管理一个用户的花费和预算,是吗?我得到这个信息后再回答你。是的。每月预算,我根据我对该文件的理解,组织数据库设计。但我知道这可能不是一个好的设计。因为我是db的新手,所以我无法从这里得到全部要点