What should be the best way to structure data for attendance

I want to built attendance feature in my app for school

There are around 100 class, 6-7 subjects a day(each class needs their attendance) per class that’s like 600-700 rows a day,the least ! &
I need to store them atleast 1 year

but it is consuming lot of rows !

I found some topics related this in community but none could found my solution.

I think one way, not an easy one, is to only store absence instances. Then, you have to be creative to dynamically generate an attendance report for let’s say a class or a student, but that depends on your use case and how you want the app to look like.

3 Likes

I didn’t get much
How would absence will reduce my rows?

My use case is
Teachers to give attendance within app to students for subject, editable in future if needed & there are several subjects in one class, & there are many classes
& Students can see their present & absent dates


Also I tried doing this using json, looking into forms how many are doing it

I though I could use make json object, use template & logic to make one big json data whenever attendance are added (though I’m not sure how I will edit the records in between dates )

Then trying using transform json & javascript
& I’m stuck and don’t know what to do :sweat_smile:

JSON

{
“subject_name”: “Chemistry”,
“attendance”: [
{
“date”: “2023-04-12”,
“attendance_data”: {
“present”: [“ID001”, “ID003”],
“absent”: [“ID002”]
}
},
{
“date”: “2023-04-13”,
“attendance_data”: {
“present”: [“ID001”, “ID002”, “ID003”],
“absent”:
}
},
{
“date”: “2023-04-14”,
“attendance_data”: {
“present”: [“ID001”, “ID002”, “ID003”],
“absent”:
}
}
]
}

Hi!

What Thinh said could be an interesting idea, requires more thinking on your side to define how it would work from a user perspective, but worth shot.

Another idea would be to not create row for attendances. Maybe in your class row, you could have columns with people following this class (and then needing to attend the class) and columns with attendees (student who sent to the class). In that way, if there are 100 student going to the class, you only have 1 row for the class, and when a student click on “I went to this class” it adds their ID in the attendees columns.

Then with relations you can access to the student list, and you can see how many student didn’t come.

The only inconvenient would be that you have to create classes in advance.

Let us know if this is a scenario that might work for you :slight_smile:

Hi Yohannan,

I have a template in the template store “Attendance Tracker”

It structures the data like this:
image

It allows for tracking attendance either by date or by class.

By DATE

Or by CLASS

You need a table for STAFF

You need a table for CLASSES

You need a table for STUDENTS

By building the proper relationships between your tables, you can get away with far fewer rows, as you can see. I end up with one row per day, or one row perday/perclass. I prefer one row per day, but I put both in the template so the developer could select.

I will redevelop this template for Apps as soon as the conversion capability is in place by Glide. For right now, it comes as a ‘Classic App’

1 Like

App looks really awesome & well designed,
But I am making this for Uni. which runs around 100 Course a day!
Having 6-7 classes per Course, each class having different attendance.

So that would make like 600-700 rows per day, I want to store the editable records for atleast 7 months

I liked the per day for minimising rows but attendance are recorded per class!

The concept is the same: you can reduce it to 100 rows per day (courses), if you stretch out the course with enough columns to hold the data for 7 classes on each line. There is a lot of repetition in building your data structure (including adding computed columns for each class of each course per row), but once it’s built it should work fine.