Engineering
Design a database for an online assignment management system (think of it as Canvas with only assignment management features):Requirements:The system should be able to store and manage professor/student accounts, courses, assignments, submissions, grades, comments, and track email notification's delivery status.Professors are able to create and manage their courses (a professor can create multiple courses but one course can be owned/managed by only one professor).Students can enroll in multiple courses.For each course, multiple assignments can be created.A student can submit multiple times for an assignment. All the submissions will be saved but he will be graded only once.Students and professors can leave comments on assignments (like the Canvas system).To make sure comments are read in time, when a new comment is added, the system will notify the other party right away by email.In order to guarantee all email notifications are successfully delivered, the system needs to track and resend failed email delivery attempts (this is necessary as sometimes the target mail server could be temporarily down or offline or under maintenance).