我正在做一个学术项目。简单的想法就是创建一个像这样的考勤系统:
这是我正在使用的Firebase数据库的设计
db{
Teachers{
"cEEbohuR2bK6opZJ1z5RoPrbbrx1":{ //auth uid
tchName:"Jason",
tchID:"24123"
}
Students:{
"GsBEVEtZ9CeqzztDWEQd9GluVJJ3":{ //auth uid
studentName:"Mark",
stuID:"37294"
}
Courses:{
"JAVA101":{ //courseID
courseName:"Java Programing",
}
Sections:{
"56345":{ //secID
tchID:"24123", //acts like a foreign key
courseID:"JAVA101", //acts like a foreign key
Students:{
"37294":{
studentName:"Mark"
}
}
}
Attendance:{
"56345":{ //secID
"1-8-2018":{ //auto generated date?
"37294":{ //stuID
attended:"true" // sets to true after scanning the qr code
}
}
}
}
}
我对qr代码事物的想法是,当老师生成它时,QR中的值将是部门ID,然后在学生扫描它时,我需要以某种方式将其与学生ID合并,获得两个值后,自动生成演讲日期 ,因此我将具有 3个值(secID,stuID,日期),将其插入到出勤树中,并使“ attended”属性设置为“ true”
现在我的问题是:
答案 0 :(得分:0)
您需要讲师检索出勤表吗?如果您的需求不同,则上面显示的嵌套对象可能会更扁平。在Firebase中,您需要在视图之后创建数据库结构(例如,将从数据库检索以显示给用户的内容)。强烈建议不要嵌套,并且可以重复数据。
例如,如果我希望用户通过选择部分ID和日期来阅读与会者列表,则可以创建一个像这样的表:
Attendance:{
"123456": //section ID
{"01-08-2019": //date
{"865768": true} //student ID: attendance status
}
}
我可以使用参考文献检索与会者列表:
`Attendance/${sectionID}/${date}/`
或者如果我希望我的用户单击学生的ID并检索该学生的所有出勤记录,我可以列出一个扁平的列表:
AttendanceRecord: {
"865768": { //student ID
"LxLy1a": { //unique attendance record key
date: "01-08-2019",
sectionId: "123456",
status: true
}
}
如果我的应用程序的视图不同,则我将不得不以不同的方式构造数据库,以便更轻松地从Firebase读取数据,而不会深入嵌套对象。
您一定不要害怕重复数据。根据应用程序中的视图更改数据库。