Table: gibbonattendancecode
Purpose: Records the attendance code and its corresponding descriptive name (text format).
- gibbonAttendanceCodeID: Attendance Code ID
- nameShort: Attendance Name
- type: Attendance Type
- direction: Indicates whether the attendance is on campus
- active: Indicates whether the attendance code is active
Table: gibbonattendancelogperson
Purpose: Stores each student’s attendance record.
- gibbonAttendanceLogPersonID: Attendance Record Serial Number
- gibbonAttendanceCodeID: References gibbonattendancecode.gibbonAttendanceCodeID
- gibbonPersonID: References gibbonperson.gibbonPersonID (person information table)
Note: The student’s name can be obtained via gibbonperson.surname
- type: Attendance Type
- reason: Reason for attendance (not used in this application)
- date: Attendance Date
- gibbonPersonIDTaker: Attendance Teacher, references gibbonperson.gibbonPersonID (person information table)
- gibbonCourseClassID: Attendance Course ID
- gibbonTTDayRowClassID: Course Schedule, references gibbonttdayrowclass.gibbonTTDayRowClassID
- timestampTaken: Attendance Timestamp (records the exact time the attendance was taken)
Table: gibboncourse
Purpose: Records course information.
- gibbonCourseID: Course ID, referenced by gibbonattendancelogperson.gibbonCourseClassID
- gibbonSchoolYearID: Course School Year ID (not used in this application)
- gibbonDepartmentID: Learning Area ID
- nameShort: Course Name
Table: gibboncourseclass
Purpose: Records course group information (treated as an attendance unit, similar to a class).
- gibbonCourseClassID: Course Class ID, referenced by gibbonattendancelogperson.gibbonCourseClassID
- gibbonCourseID: Course ID, references gibboncourse.gibbonCourseID
- nameShort: Class Name; should be concatenated as gibboncourse.nameShort + gibboncourseclass.nameShort
Note: The concatenation of gibboncourse.nameShort + gibboncourseclass.nameShort represents a specific class for a subject; a student may be assigned to multiple classes for a course.
- attendance: Indicates whether attendance is required; courses generally marked as “N” will not have attendance records, so this field can usually be ignored
Table: gibboncourseclassperson
Purpose: Records registration information for each course class.
- gibbonCourseClassPersonID: Registration Entry ID
- gibbonCourseClassID: Course Class ID, references gibboncourseclass.gibbonCourseClassID
- gibbonPersonID: References gibbonperson.gibbonPersonID (person information table)
- role: Role (usually only “Student” requires attendance)
- dateEnrolled: Date the person was assigned to the class; attendance records are typically recorded only after this date
Table: gibbonperson
Purpose: Stores all personnel information including names and identity details.
- gibbonPersonID: Unique User ID, referenced by various tables
- surname: In this application, stores the full name rather than just the surname
- officialName: Essentially the same as surname; use surname whenever possible
- nameInCharacters: User’s English Name
- gender: User’s Gender (not always accurate and generally not used)
- username: User Login Username
- gibbonRoleIDPrimary: User Role ID, references gibbonrole.gibbonRoleID
Table: gibbonrole
Purpose: Records the identity information for personnel, primarily used for access control; for attendance, it mainly denotes student identity.
- gibbonRoleID: User Role ID (currently, only users with ID “003” are considered students requiring attendance)
- category: Role Category, typically indicating whether the role is for a teacher, student, or parent
Table: gibbonschoolyear
Purpose: Records school year information.
- gibbonSchoolYearID: School Year ID
- name: School Year Name (e.g., “2024 School Year”, “2025 School Year”)
- status: Status (only one “Current” represents the current school year)
- firstDay: Start Date
- lastDay: End Date
Table: gibbonyeargroup
Purpose: Records grade level information.
- gibbonYearGroupID: Grade Level ID
- name: Grade Name (e.g., Grade One, Grade Two, Grade Three)
Table: gibbontt
Purpose: Records the timetable name; each grade can only have one timetable.
- gibbonTTID: Timetable ID
- gibbonSchoolYearID: School Year ID, references gibbonschoolyear.gibbonSchoolYearID
- name: Timetable Name
- nameShort: Timetable Abbreviated Name
- gibbonYearGroupIDList: Grade Level ID, references gibbonyeargroup
- active: Indicates whether the timetable is active (Y = active, N = inactive)
Table: gibbonttday
Purpose: Records the daily timetable schedule.
- gibbonTTDayID: Timetable Day ID
- gibbonTTID: Timetable ID, references gibbontt.gibbonTTID
- gibbonTTColumnID: Schedule Column ID (associated with a timetable column)
- name: Timetable Name; typically, one timetable corresponds to a specific day of the week, indicating the start and end times. For a day with N periods, there will be N start times and N end times
Table: gibbonttdaydate
Purpose: Records the natural date corresponding to the timetable information.
- gibbonTTDayDateID: Day Date ID
- gibbonTTDayID: Timetable Day ID, references gibbonttday.gibbonTTDayID (indicates which timetable is used on that day)
- date: Calendar Date
Table: gibbonttcolumn
Purpose: Records timetable column names used for storing scheduling information.
- gibbonTTColumnID: Timetable Column ID
- name: Timetable Column Name (e.g., indicates grade level and day of the week; note that elementary schools may not have classes on Friday while high schools might have an extra evening study session on Monday, hence the differentiation)
Table: gibbonttcolumnrow
Purpose: Records the scheduling details for each timetable row.
- gibbonTTColumnRowID: Timetable Row Scheduling ID
- gibbonTTColumnID: References gibbonttcolumn.gibbonTTColumnID
- name: Scheduling Information Name (e.g., period number, lunch break, evening study, etc.)
- timeStart: Start Time
- timeEnd: End Time
Table: gibbonttdayrowclass
Purpose: Records the course information corresponding to a timetable slot, i.e., which classes are scheduled during that time period. For example, on Monday, during Grade Three’s first period from 10 to 11, assume three classes are in session.
- gibbonTTDayRowClassID: Timetable Row Class Scheduling ID
- gibbonTTColumnRowID: Timetable Row Scheduling ID, references gibbonttcolumnrow.gibbonTTColumnRowID
- gibbonTTDayID: Timetable Day ID
- gibbonCourseClassID: Course Class ID
- gibbonSpaceID: Classroom ID (generally, a classroom can only host one class during a given time slot)
Table: gibbonspace
Purpose: Records classroom information.
- gibbonSpaceID: Classroom ID
- name: Classroom Name
- type: Classroom Type