id (PK)nameemail (unique)password_hashrole {student|lecturer|admin}user_nostudent_noprogrammecreated_at, is_active
Classes:
id (PK)code (unique)nameprogrammes_csv
user_id (FK -> Users.id)class_id (FK -> Classes.id)PK: (user_id, class_id)
Campuses
id (PK)code (unique) {RIT, SBK, MLS}name, lat, lng
id (PK)class_code (FK -> Classes.code)campus_code (FK -> Campuses.code)start_at, end_at, base_tokencreated_at, created_by, status
Attendance:
id (PK)session_id (FK -> Sessions.id)user_id (FK -> Users.id)scan_type {entry|exit}scan_timelat, lngUNIQUE(session_id, user_id, scan_type)
by Cohan