首页 > 解决方案 > 如何在firebase中设置关系表

问题描述

我正在学习 Firebase,并在 Xamrain 表单设置中使用它。例如,我有一个学生列表,这些学生列表每个都有一个锻炼。

我的主要问题是如何设置一个关系表我认为当我使用 c# 中的 guid.newguid 创建我的学生时我正在做正确的事情,以便我有一些方法可以过滤掉基于该学生的锻炼。

此外,当我们最终将其发送给客户端时,如何创建没有数据的表。例如,在 SQL 中,我可以准备好空表供客户使用他们的应用程序,我仍然可以在 firebase 中使用它吗?

public async Task AddStudent(Guid studentId, string name)
{
        DateTime date = DateTime.Now;
        await firebase
          .Child("Students")
          .PostAsync(new Student() { Id = Guid.NewGuid(), FirstName ="Matt",LastName="Smith",DOB=date.AddDays(-43) });

        await firebase
          .Child("Students")
          .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 背景。

标签: c#firebasefirebase-realtime-databasegoogle-cloud-platformxamarin.forms

解决方案


例如,我有一个学生列表,这些学生列表每个都有一个锻炼。

Cloud Firestore实时数据库这两个数据库都可以帮助您实现所需的目标。但是由于您使用了标签,我将向您展示一个数据库结构,您可以在其中创建学生和锻炼之间的关系。

Firebase-root
  |
  --- students
  |    |
  |    --- $studentId
  |           |
  |           --- //student details
  |
  --- workouts
       |
       --- $studentId
              |
              --- //workout details

如您所见,不需要任何非规范化(复制数据)。要获取与特定学生对应的锻炼,您应该创建一个指向该workouts/$studentId节点的引用。您还可以在每个特定学生下嵌套锻炼,但这意味着每次下载学生数据时,都会将其与所有锻炼一起下载。因此,由您决定哪种解决方案更适合您的应用程序。


推荐阅读