Firebase中架构的结构

时间:2015-10-27 13:32:38

标签: firebase

我在关系数据库方面有很强的背景知识。但是,我总是希望提高自己的技能。最近,我接触过Firebase。看起来很有意思。但是,我对"架构"稍微感到困惑。如果这甚至是正确的术语。

据我所知,每个Firebase" app"基本上代表一个"表"。因此,如果我正在构建一个具有两个相关但单独的实体的Web应用程序,我将不得不拥有两个firebase" apps"。例如,也许我正在构建一个拥有足球队,教练员和球员的网络应用程序。在关系数据库中,我可能会有这样的事情:

关系数据库

</head>
  <body bgcolor="#E6E6FA">
    <font color=black size=+3>Modifying Sentiment</font>
    <table>
      <tr>
        <td>Text to Save:</td>
      </tr>
      <tr>
        <td colspan="3">
          Add positive adjective:
          <img Adjective src="http://findicons.com/files/icons/2776/android_icons/96/ic_question_mark.png" alt="question" title="Adjective: is a word naming an attribute of a noun, such as sweet, red, or technical."
            width=20 />
          <br>
          <textarea cols=40 rows=3 id="textbox" ></textarea>
          <textarea id="textbox" style="width:512px;height:256px"></textarea>
        </td>
      </tr>
      <tr>
        <td>Filename to Save As:</td>
        <td><input id="inputFileNameToSaveAs"></input></td>
        <td><button onclick="saveTextAsFile()">Save Text to File</button></td>
      </tr>
      <tr>
        <td>Select a File to Load:</td>
        <td><input type="file" id="fileToLoad"></td>
        <td><button onclick="loadFileAsText()">Load Selected File</button>
        <td>
      </tr>
    </table>
    <script type='text/javascript'>
      function saveTextAsFile(){
        var textBoxes = document.querySelectorAll('textbox');
        var textToWrite;
        for(var i in textBoxes){
          textToWrite = textBoxes[i].value;
          window.alert(textToWrite);
        }
        var textToWrite = document.getElementById("textbox").value;
        var textFileAsBlob = new Blob([textToWrite], {type:'text/plain'});
        var fileNameToSaveAs = document.getElementById("inputFileNameToSaveAs").value;
      }
    </script>

以上显示了可能的关系数据库结构。有些人可能希望Team Coach TeamCoachLookup Player TeamPlayerLookup ---- ----- --------------- ------ ---------------- ID ID ID ID ID Name FirstName TeamID FirstName TeamID Location LastName CoachID LastName PlayerID 表格带有Person来表示此人是玩家还是教练。这是一种方法。不过,当我查看Firebase模型时,我无法理解上面的结构。它会是:

http://teams.firebaseio.com http://coaches.firebaseio.com http://players.firebaseio.com

每个项目的JSON代表数据库中的一行?或者,它应该只是RoleID,架构看起来像这样:

http://teams.firebaseio.com

第二种方法似乎对我更有意义。但是,我不知道Firebase如何支持它。相反,在我看来,Firebase看起来像每个&#34;表&#34;并且JSON不是真正的层次结构。我离开了吗?有没有人可以推荐给我的文件?

谢谢!

1 个答案:

答案 0 :(得分:4)

相应的概念应该是(Firebase&lt; =&gt; relational):

  • application&lt; =&gt;模式
  • 根节点&lt; =&gt;表
  • 子节点&lt; =&gt;行
  • 节点密钥&lt; =&gt;行ID(通常为push ids

在你的具体例子中:

  • football-app.firebaseio.com
      • fx7Q7q
        • 名称:“Foo”
    • 教练
      • ix0GWF
        • firstName:“Joe”
        • lastName:“史密斯”
    • 玩家
      • uQ8fJK
        • firstName:“Bill”
        • lastName:“Mans”
    • teamCoachLookup
      • QkW9uH
        • 团队:“fx7Q7q”
        • 教练:“ix0GWF”
    • teamPlayerLookup
      • BmI48N
        • 团队:“fx7Q7q”
        • 选手:“uQ8fJK”

另见https://www.firebase.com/docs/web/guide/structuring-data.html