在Firebase中,我可以将用户连接到多个表吗?

时间:2018-06-11 19:41:29

标签: android firebase firebase-realtime-database

我的Firebase数据库中有两个表。在flighthistory我记录了飞机已经飞过的航班。在flightperformance中,我记录每架飞机的性能。

我认为应该有第三张表格,其中包含飞机的名称和ID,并且应在flighthistoryflightperformance中为飞机分配ID。

这是考虑在两个数据表之间进行协调的正确方法吗?如何使用Firebase对此进行编码?

1 个答案:

答案 0 :(得分:2)

如果我理解正确,你需要三个表: 1:飞机名称和ID。 2:Flighthistory。 3:Flightperformance。

而不是将表1中的平面id作为表2和3中的外键(因为它将在sql数据库中),你需要在firebase中使用相同的“解决方案”吗?

如果是这样的话: 创建一个包含所有平面的Plane表。创建新平面时,您将获得的密钥(通过使用getkey())将是该特定平面的firebase中的ID。您可以使用相同的密钥作为Flighthistory和Flightperformance中的参考,以将平面与历史记录和性能表连接起来。

Firebase“表格”将如下所示:

  • 平面 - >每个平面的ID /键 - >平面名称和型号(可能?)。

  • FlightHistory - >您可以在此处使用相同的ID /键作为平面 - >一些航班历史数据。这里一个好的解决方案是使用某种自动增量(或者日期+时间可能?),在这个数字内部,将有数据,如飞机来自哪里,以及目的地。

  • Flightperformance - >每个平面的相同ID - >一些飞行性能数据。

编辑:如何做到这一点的一个小例子:

//Get the firebase database reference in onCreate(). For this example, mDatabase will be the databasereference

public void createPlane() {
    //First getting the key which will be used as the reference between the tables
    String key = mDatabase.child("Planes").push().getKey();

    //Create a new plane
    Plane plane = new Plane("Coolplane", "Boeing 777-400");

    //Adding the plane to firebase, with the key as the reference
    mDatabase.child("Planes").child(key).setValue(plane);

    //Starting the methods that create the flighthistory and performance.Passing the key, which will be used as the ID in firebase (which connects the plane with the history and performance
    newFlightHistory(key);
    newPerformance(key);

//Not sure how your history and/or performance table will look like, but you 
just pass the key to these methods, and use these keys as the key when you 
create a new history / performance. 

}

注意:由于Firebase是基于JSON的数据库,因此通常不是构建数据的“正确”方法。这完全取决于您将要使用的查询以及您将如何使用这些数据。