我正在做一个学术项目。简单地说,这个想法是创建一个这样的考勤系统:
教师在网站登录他的帐户。
教师选择一个部分。
老师生成一个 QR 码,让学生扫描它参加。
学生使用android 应用程序登录他的帐户。
学生打开扫描仪以扫描 QR 码。
系统在该特定部分和特定日期标记该学生的出勤。
这是我使用的 firebase 数据库的设计
db{
Teachers{
"cEEbohuR2bK6opZJ1z5RoPrbbrx1":{ //auth uid
tchName:"Jason",
tchID:"24123"
}
Students:{
"GsBEVEtZ9CeqzztDWEQd9GluVJJ3":{ //auth uid
studentName:"Mark",
stuID:"37294"
}
Courses:{
"JA101":{ //courseID
courseName:"Java Programing",
}
Sections:{
"56345":{ //secID
tchID:"24123", //acts like a foreign key
courseID:"JA101", //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,date)将其插入到出勤树中,并使“attended
现在我的问题是:
有没有更好的方法来设计我的 DB?
是我上面的 qr 想法可能执行还是有更好的方法?
您是否需要教师检索出勤列表?如果您的需求不同,您在上面显示的嵌套对象可能会更平坦。在 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 中读取,而不会太深入嵌套对象。
您一定不要太害怕复制数据。根据应用中的视图更改数据库。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(48条)