Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Database normalization for School Management System

I am creating system for a school management system and come up with the attached database schema.

Database diagram

Following is how the system works:

  1. A school has many students and teachers. It has also many courses(subjects) taught. A grade level can have many courses assigned. These courses in turn will be assigned to the students in that particular grade.
  2. The levels of students are categorized into grades and sections. A student can be in Grade 5, but if grade 5 students are huge in number, they are divided into sections. eg: Grade 5 section A, Grade 5 section B.
  3. Students are placed in unique classrooms. A classroom will be unique throughout. Classroom of Grade 5 Section A of year 2010 will be different from Classroom of Grade 5 Section A of year 2011.
  4. Students are assigned parents. A parent can have more than one student in the school.
  5. One or more classrooms can be assigned to a teacher.
  6. Attendance for students are taken by their teacher on a daily basis
  7. There will be many types of exams. Exam results are stored for each subject (course).

I am a beginner in database normalization and would be glad if anyone could give me some hints if the database looks alright or not.

EDIT:

Also, there will only be one point of login. In the above case, during login, a user will have to select the type of user from a dropdown list. That dropdown selection will be used to query to respective table to login to the system. Another alternative is to use a common user table, which will store the user_id, email, password, last_login_date, last_login_ip but will store other details in respective tables such as student, parent, teacher. So, what is the preferred/correct way to implement it?

like image 895
WebNovice Avatar asked Nov 03 '11 06:11

WebNovice


People also ask

Which database is used in school management system?

A database management system (DBMS) within school ERP software is a perfect tool for that. The student and employee data help organize school-related tasks and activities.

What is normalisation in database management system?

Normalization is the process of organizing data in a database. This includes creating tables and establishing relationships between those tables according to rules designed both to protect the data and to make the database more flexible by eliminating redundancy and inconsistent dependency.

What are the four 4 types of database normalization?

First Normal Form (1 NF) Second Normal Form (2 NF) Third Normal Form (3 NF) Boyce Codd Normal Form or Fourth Normal Form ( BCNF or 4 NF)

What are the 3 rules in normalizing database?

Normal forms Boyce defined the Boyce–Codd normal form (BCNF) in 1974. Informally, a relational database relation is often described as "normalized" if it meets third normal form. Most 3NF relations are free of insertion, updation, and deletion anomalies.


1 Answers

You don't model GRADE_SECTIONS at all.

Unless your school has a massive programmr of demolition and construction every summer holiday the classrooms will be the same. It is the assignments which change each year. So CLASSROOMS should be assigned to a separate GRADE_SECTION entity, instead of merging SECTIONS and CLASSROOMS as you do now.

Students should be assigned to GRADE_SECTIONS not CLASSROOMS.

COURSES should have many EXAMS rather than many EXAM_RESULTS. It simply doesn't make sense that a French Exam could be taken by students learning Maths and Russian.

like image 94
APC Avatar answered Sep 17 '22 11:09

APC