c# - 如何在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 背景。
解决方案
例如,我有一个学生列表,这些学生列表每个都有一个锻炼。
Cloud Firestore和实时数据库这两个数据库都可以帮助您实现所需的目标。但是由于您使用了firebase-realtime-database标签,我将向您展示一个数据库结构,您可以在其中创建学生和锻炼之间的关系。
Firebase-root
|
--- students
| |
| --- $studentId
| |
| --- //student details
|
--- workouts
|
--- $studentId
|
--- //workout details
如您所见,不需要任何非规范化(复制数据)。要获取与特定学生对应的锻炼,您应该创建一个指向该workouts/$studentId
节点的引用。您还可以在每个特定学生下嵌套锻炼,但这意味着每次下载学生数据时,都会将其与所有锻炼一起下载。因此,由您决定哪种解决方案更适合您的应用程序。
推荐阅读
- java - 我可以在 Java 的旧版本中对 2 个案例使用相同的数字吗?
- php - 使用 phpMyAdmin 彻底卸载 XAMPP
- c++ - 用于 RGB 到 HSB 转换的 C++ 程序中的错误
- javascript - 类型“事件”不可分配给类型“字符串”
- sorting - 使用随机选择指数或中位数快速选择?
- r - 将数据分成多个时间序列 R
- reactjs - Django重定向或反应历史?
- javascript - 如何显示隐藏在颜色后面的折线图?
- javascript - Como posso excluir imagens especificadas de uma visualização?
- javascript - setTimeout 没有被触发