COURSE MANAGEMENT SYSTEM
PROJECT BY: M.Haroon (2K23/BLCS/38) Raja Raimal(2K23/BLCS/49)
1. Identify All Entities
For a Course Management System in a university, some core entities could be:
• Student
• Course
• Professor
• Department
• Enrollment
• Classroom
2. Identify Types of Entities
In this context, the entities can be categorized into:
• Strong Entities: These have a primary key and can exist independently.
o Examples: Student, Course, Professor, Department,Classroom
• Weak Entities: These depend on a strong entity and usually lack a unique identifier on their own.
o Example: Enrollment (depends on both Student and Course)
3. Identify Attributes of Each Entity
Let's go through each entity with potential attributes:
• Student:
o student_id (Primary Key)
o name
o email
o phone_number
o address
o department_id (Foreign Key referencing Department)
• Course:
o course_id (Primary Key)
o course_name
o credits
o department_id (Foreign Key referencing Department)
o professor_id (Foreign Key referencing Professor)
• Professor:
o professor_id (Primary Key)
o name
o email
o phone_number
o department_id (Foreign Key referencing Department)
• Department:
o department_id (Primary Key)
o department_name
o location
• Enrollment (represents the many-to-many relationship between Student and Course):
o enrollment_id (Primary Key)
o student_id (Foreign Key referencing Student)
o course_id (Foreign Key referencing Course)
o semester
o grade
• Classroom ( for managing class locations and timings):
o classroom_id (Primary Key)
o course_id (Foreign Key referencing Course)
o location
o schedule (date and time)
4. Identify Types of Attributes (Key & Non-Key) in Every Entity
• Student:
o Key Attributes: student_id
o Non-Key Attributes: name, email, phone_number, address, department_id
• Course:
o Key Attributes: course_id
o Non-Key Attributes: course_name, credits, department_id, professor_id
• Professor:
o Key Attributes: professor_id
o Non-Key Attributes: name, email, phone_number, department_id
• Department:
o Key Attributes: department_id
o Non-Key Attributes: department_name, location
• Enrollment:
o Key Attributes: enrollment_id
o Non-Key Attributes: student_id, course_id, semester, grade
• Classroom:
o Key Attributes: classroom_id
o Non-Key Attributes: course_id, location, schedule
5. Identify Types of Key Attributes in Every Entity
• Primary Keys:
o Student: student_id
o Course: course_id
o Professor: professor_id
o Department: department_id
o Enrollment: enrollment_id
o Classroom: classroom_id
• Foreign Keys:
o Student: department_id (references Department)
o Course: department_id (references Department), professor_id (references Professor)
o Professor: department_id (references Department)
o Enrollment: student_id (references Student), course_id (references Course)
o Classroom: course_id (references Course)
6. Identify Possible Constraints on All Attributes in Every Relation
• Unique Constraints:
o student_id, course_id, professor_id, department_id, enrollment_id, and classroom_id
should be unique as they are primary keys.
o email for Student and Professor can also be unique.
• Not Null Constraints:
o Key attributes (student_id, course_id, professor_id, etc.) should not be null.
o name, course_name, department_name should not be null.
• Foreign Key Constraints:
o Foreign key attributes should reference their respective entities.
o Example: department_id in Student should refer to Department.department_id.
• Domain Constraints:
o credits (in Course) should be a positive integer.
o email attributes should follow a valid email format.
7. Identify Possible Relationships with Cardinality
• Student to Department: Many-to-One (N:1)
o Many students can belong to one department.
• Course to Department: Many-to-One (N:1)
o Many courses can belong to one department.
• Professor to Department: Many-to-One (N:1)
o Many professors can belong to one department.
• Professor to Course: One-to-Many (1:N)
o One professor can teach multiple courses, but each course is taught by only one
professor.
• Student to Enrollment: One-to-Many (1:N)
o One student can have multiple enrollments (for different courses in different semesters).
• Course to Enrollment: One-to-Many (1:N)
o One course can have multiple students enrolled in it.
• Student to Course (via Enrollment): Many-to-Many (N:N)
o A student can enroll in multiple courses, and each course can have multiple students.