我正在學習Firebase,并在Xamrain的表單設定中使用它。例如,我有一個學生串列,而這些學生串列中的每個人都有一個鍛煉的機會。
我的主要問題是如何設定一個關系表,我想當我通過使用c#的guid.newguid來創建我的學生時,我正在做正確的事情,這樣我就有辦法根據該學生來過濾出鍛煉。
另外,當我們最終將表交付給客戶時,如何創建一個沒有資料的表呢?例如,在SQL中,我可以為客戶準備好空表來使用他們的應用程式,我是否還可以用Firebase來實作。
public async Task AddStudent(Guid studentId, string name)。
{
DateTime date = DateTime.Now;
await firebase
.Child("學生")
.PostAsync(new Student() { Id = Guid.NewGuid(), FirstName ="Matt", LastName="Smith", DOB=date.AddDays(-43) }) 。
await firebase
.Child("學生")
.PostAsync(new Student() { Id = Guid. NewGuid(), FirstName = "Martha", LastName = "Jones", DOB=DateTime.Now.AddDays(-36) })。)
}
我的學生班
public class Student
{
public Guid Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set; }
public string EmailAddress { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
public DateTime? DOB { get; set; }
public bool? isActive { get; set; }
}
public class Workout
{
public Guid Id { get; set; }
public Guid StudentId{ get; set; }
public decimal PB { get; set; }
public decimal PU { get; set; }
我想列出每個學生的鍛煉情況,我很難理解Firebase和其他資料庫不喜歡關系資料。因為我有多年的SQL背景。
uj5u.com熱心網友回復:
NoSQL資料庫中沒有表,所以這些與結點表的關系是不存在的。當使用NoSQL資料庫(任何NoSQL,不僅僅是RTDB或Firestore)時,其結構和方法與你所習慣的SQL結構完全不同,所以你必須學會停止用SQL來思考。NoSQL 資料庫一般不包含高度結構化的表,而是包含結構松散的檔案(RTDB 有點不同)。
在NoSQL資料庫中跟蹤關系的方法是實際復制該資料的片段。例如,您有一個鍛煉和用戶的串列。每個鍛煉都與多個用戶相關聯。你要做的是在每個鍛煉中為每個用戶創建一個參考(例如,一個用戶 ID 陣列)。
由于你有SQL背景,可能值得你花時間去研究使用Firestore而不是RTDB。Firestore 的結構更加合理(使用集合和檔案,而不是 RTDB 的巨型 JSON 樹),并且允許更復雜的查詢,這對你來說可能更容易操作。這些資料庫之間還存在其他差異,因此請查看這里,以選擇最適合您專案的資料庫
。uj5u.com熱心網友回復:
例如,我有一個學生串列,這些學生串列中的每個人都有一個鍛煉的附件。
兩種資料庫,Cloud Firestore和Realtime Database都可以幫助您實作您的愿望。但是,由于你使用了firebase-realtime-database標簽,我將向你展示一個資料庫結構,你可以在其中創建學生和鍛煉之間的關系。
Firebase root
|
---學生
| |
| --- $studentId
| |
|--- //student details --- //student details
|
---鍛煉
|
--- $studentId
|
--- //workout details --- //workout details
因此,正如你所看到的,沒有必要進行任何反規范化處理(重復資料)。為了獲得對應于特定學生的鍛煉,你應該創建一個指向workouts/$studentId節點的參考。你也可以在每個特定的學生下嵌套鍛煉,但這意味著每次你下載一個學生的資料時,你會把它和所有鍛煉一起下載。因此,由你來決定哪種解決方案更適合你的應用。
。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/325772.html
標籤:
