Firebase数据库结构审查
我已经设计了我的firebase数据库,如下所示。我需要建议。同时也指导我离子2的最佳分贝。。。我是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"
[
{
"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的新手,所以我无法从这里得到全部要点