2016-11-24 98 views
0

我想开始使用Firebase。Firebase中的数据结构

我将从一个简单的漫画数据库开始。

哪个结构最好?

备注结构1:如何获得系列清单?

备注结构2:太接近sql数据库了吗?

结构1:

{ 
    "comics" : { 
    "1" : { 
     "serie" : "Batman", 
     "nr" : "1", 
     "title" : "Title of issue 1" 
    }, 
    "2" : { 
     "serie" : "Batman", 
     "nr" : "2", 
     "title" : "Title of issue 2" 
    }, 
    "3" : { 
     "serie" : "Spiderman", 
     "nr" : "1", 
     "title" : "Title of issue 1" 
    } 
    } 
} 

结构2:

{ 
    "issues" : { 
    "1" : { 
     "serie" : "1", 
     "nr" : "1", 
     "title" : "Title of issue 1" 
    }, 
    "2" : { 
     "serie" : "1", 
     "nr" : "2", 
     "title" : "Title of issue 2" 
    }, 
    "3" : { 
     "serie" : "2", 
     "nr" : "1", 
     "title" : "Title of issue 1" 
    } 
    }, 
    "series" : { 
    "1" : { 
     "title" : "Batman" 
    }, 
    "2" : { 
     "serie" : "Spiderman" 
    } 
    } 
} 
+2

都没有。 Firebase中的阵列不灵活,请不要使用它们。节点名称应该用childByAutoId创建。另外,您使用的结构由您希望从数据库中获取的内容决定;关系,非规范化的数据,查询等等,所以没有这个信息就没有办法回答这个问题, – Jay

+0

我想要获得系列列表,当你点击一个系列时,你会看到该系列的问题列表。 – Filip

+1

所以即使是一个简单的数据库(电影的例子列表)你不使用一个整数作为关键,但由childByAutoId生成的东西? – Filip

回答

2
  • 我会先在文档看看this page

  • 然后按照Jay的建议,让firebase为您的记录生成唯一的密钥。

  • 保留每个series的记录,作为孩子,您可以保留其相关剧集的列表 。

  • 保留每个episode的记录,在这里您可以保留关于它的更多细节 (年份,演员,评级等)。如果需要的话,你甚至可以跟踪它所属系列的ID。

你的数据结构可能是这个样子:

{ 
    "series": { 
    "58371074b694fc9c35ec8891": { 
     "name": "Batman", 
     "episodes": { 
     "583710741ffbf07cfccf7ba2": true, 
     "58371074539dde71b245d5a1": true, 
     "583710744b14fd3a654a6d75": true 
     } 
    }, 
    "58371074898bed03d73cd12c": { 
     "name": "Spiderman", 
     "episodes": { 
     "58371074b63304e2617b558e": true 
     } 
    } 
    }, 
    "episode": { 
    "583710741ffbf07cfccf7ba2": { 
     "name": "Batman Begins" 
    }, 
    "58371074539dde71b245d5a1": { 
     "name": "Batman Returns" 
    }, 
    "583710744b14fd3a654a6d75": { 
     "name": "Batman Forever" 
    }, 
    "58371074b63304e2617b558e": { 
     "name": "The Amazing Spider-Man" 
    } 
    } 
} 

注:显然在上面的例子中键没有被火力产生的,但你如何使你的数据的想法结构可能看起来。