2016-08-13 85 views
2

我剛剛開始使用NoSQL結構,特別是使用Firebase,這與MySQL或合理的DB非常不同。Firebase,NoSQL,數據結構

我正在開發一個將列出體育遊戲的應用程序;用戶可以檢索所有遊戲的列表並選擇他們想要參與的列表。

2012年,2013年,2014年,2015年,遊戲跨越或至少將跨越多年遊戲列表, 2016(目前),2017年(未來)等等

在我的MySQL表的表結構有如下主鍵組合(遊戲ID,yearid,sportType);原因是每個新的一年,而不是隻增加gameid,它將重新啓動在1需要一年一度,使其獨特和sportType,因爲它可以爲棒球,足球,曲棍球等條目...

我創建JSON結構和我想我在質疑自己,需要幫助,如果你可以檢查它是否是非規範化的,或者我能否以某種方式改進它?

我想我下面理性的方法,但我想有以下幾點:

{ 
    "games" : { 
    "year" : { 
    "sportType" : { 
     "desc" : "Week 1 ", 
     "teamid" : 123 
     "gameid" : 11111, 
     etc... 
     } 
    } 
}, 
"year" : { 
    "sportType" : { 
     "desc" : "Week 1 ", 
     "teamid" : 223 
     "gameid" : 22222, 
     etc... 
     } 
    } 

它種遵循主索引我做了MySQL,但我需要的是問題!?我想我不會,但我想其他人的意見,因爲我是新來這個...

我在想,我應該只是遵循:

{ 
    "games" : { 
    "gameid" : { 
     "desc" : "Week 1 ", 
     "teamid" : 123 
     "sportType" : "football", 
     "year" : 2016 
      etc... 

是否有人可以幫助指導我?

回答

1

我認爲你是對的。但是如果你有像teamDetail這樣的對象,你應該移動細節的另一個節點,並將其指向teamDetail。

{ 
    "games" : { 
    "gameid" : { 
     "desc" : "Week 1 ", 
     "teamid" : 123 
     "sportType" : "football", 
     "year" : 2016 
     "teamDetail": { 
      "name": team1, 
      "country": c1,.. etc 
      } 
      etc... 

以上針對teamDetail對象的非規範化版本。

{ 
    "games" : { 
    "gameid" : { 
     "desc" : "Week 1 ", 
     "teamid" : 123 
     "sportType" : "football", 
     "year" : 2016 
     "teamDetail": { 
      "team1id": true, 
      "team2id": true, ...etc... 
      } 
      etc... 

teamDetails:{ 

"team1id": { 
      "name": team1, 
      "country": c1,.. etc 
      } 
"team2id": { 
      "name": team2, 
      "country": c2,.. etc 
      } 

} 

所以我想有像你這樣的概括如下:
{ 「團隊」:{ 「teamid」:{ 「名」: 「胡說」, 「的TeamCity」:「LA 「 等...在遊戲JSON引用teamid爲了拉隊伍的細節,但它作爲實際的遊戲定義的一部分,因爲它會被重複和實例隊改變名稱或地點那就得在遊戲的所有條目中更改?我是對的嗎?