-
Notifications
You must be signed in to change notification settings - Fork 1
Initial Design
Tool used: MockFlow
The system is intended to be a web application on which users can access and utilize accordingly. There are various entities for whom the system is built for, i.e the student, admin, quality assurance officer, etc. The details for the various entities who will be using the system are captured in the users table, with the distinguishing role details defined by the role id. A user can have only one role, and a role can be held by many users, constituting a one-to-many relationship between the two entities. The details for the roles are detailed in the user_roles table. In the design of the course entity and ensuing relationships, a course has only one instructor, but an instructor can be assigned to multiple courses. Moreover, each course has course exams that are outlined for the continual assessment of the students. A course must have an exam, and can have multiple exams, on the other hand, an exam can be shared among multiple courses resulting in a many-to-many relationship between the two entities. Each course and exam have objectives tied to it, whereby, an objective can be shared amongst multiple courses/exams, and a course/exam can have multiple objectives, resulting in a many-to-many relationship between the two instances of the entities, i.e between objectives entity and exam, and between objectives entity and course. A student is a user, but not every user is a student, owing to the definition of roles for users. A student is able to undertake an examination and have their score recorded for a given exam. Normally, a student can do multiple exams, and an exam is done by multiple students. This constitutes a many-to-many relationship between the users table and student performance table.
For all the tables within the system, default columns will be set up to ensure proper auditing of records and ensure records can be retrieved in case of accidental loss. Some of these columns include:
- created_at : details the time the record was created.
- updated _at: details the time the record was updated.
- deleted_at: details the time the record was deleted. These columns help in ensuring records are maintained within the system even after deletion, imagine the ‘trash’ concept in most modern devices.