我的Firebase数据库中有两个表。在flighthistory
我记录了飞机已经飞过的航班。在flightperformance
中,我记录每架飞机的性能。
我认为应该有第三张表格,其中包含飞机的名称和ID,并且应在flighthistory
和flightperformance
中为飞机分配ID。
这是考虑在两个数据表之间进行协调的正确方法吗?如何使用Firebase对此进行编码?
答案 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的数据库,因此通常不是构建数据的“正确”方法。这完全取决于您将要使用的查询以及您将如何使用这些数据。