Untitled Document
Untitled Document
Bright Future Secondary School inspires students with its high-quality education.
Established in 1966, it serves the Salakpur community in Morang, Nepal. The school
nurtures young minds, equipping them with knowledge, skills, and values for a
bright future.
Bright Future College supports both undergraduate and postgraduate education,
shaping leaders through innovative teaching methods. The institution creates a
welcoming and inclusive environment for students and teachers alike.
The school celebrates academic success, cultural activities, and sports excellence.
It stands as a beacon of pride in Morang, earning respect as a top educational
institution in the region.
The E-Classroom Platform, introduced by Ms. Mary, the founder and principal of
Bright Future College, aims to transform teaching and administration. Ms. Mary
recognizes the need for a digital system to enhance learning and manage data
effectively.
Ms. Mary emphasizes using technology to achieve the school’s goal of academic
excellence and inclusivity.
1.3 Description of Current Business Activities and Operations
Currently, Bright Future College provides diverse academic programs, including BSc
in Computing, Networking, and Multimedia. Each program includes mandatory modules
to offer a well-rounded and standardized curriculum. Modules like Programming and
Databases overlap across programs to ensure flexibility.
Academic Programs
The college delivers undergraduate and postgraduate programs focusing on academic
success and competitive exam readiness. Each course combines theory and practical
methods to equip students with essential knowledge and skills.
Extracurricular Activities
The college encourages creativity and personal growth by organizing various
programs, such as:
• Sports Programs: Students join activities like football, cricket, volleyball, and
athletics to build teamwork and stay fit.
• Cultural Events: Students participate in annual programs, talent shows, and art
exhibitions to express their talents.
• Community Engagement: Students contribute to society through social awareness
campaigns, cleanliness drives, and charity events.
The school’s principal, Ms. Mary, recognizes the need for a structured database to
manage the platform’s operations effectively. The database will handle:
• Student Management: It will store records of student enrollment, attendance, and
academic performance.
• Module Tracking: It will link students and teachers to their assigned modules
and lessons.
• Resource Management: It will monitor educational resources associated with each
module.
• Assessment and Results: It will record assessments and calculate individual
student results.
This platform will modernize the college’s operations, offering students a smooth
educational experience and ensuring efficient administration.
Program Enrollment: Each student can only enroll in one program at a time.
Module Inclusion: A module can be included in multiple programs, ensuring
curriculum flexibility.
Assessment Linking: Each assessment must be uniquely linked to one module.
Resource Sequencing: Students must complete resources sequentially.
Announcement Association: Every announcement must be linked to a specific module.
Assessment Evaluation: Total marks and individual component scores are recorded for
each student to provide detailed performance insights.
A program can have many students enrolled.
Every program must have at least one module.
1.7 Assumption
The following assumptions are made according to the business rule: -
· Students cannot switch programs mid-term.
· Each module must have at least one assessment to ensure measurable learning
outcomes.
· Announcements are visible only to the relevant module's students and
teachers.
· Assessment components will include projects, and exams, with a proper
maintained in the database.
1.8 Introduction to Oracle SQL
Oracle Database is one of the most popular tools for managing data. Developed by
Oracle Corporation, it is known for being reliable, scalable, and packed with
features that make it a go-to solution for businesses of all sizes. Whether you’re
a small company or a large enterprise, Oracle Database makes it easier to store and
retrieve large amounts of information efficiently.
What makes it even better is its flexibility—it works just as well in the cloud as
it does in an office setup. That’s why so many industries depend on it for their
most important applications.
Oracle Corporation is the company behind this database, which was founded in 1977
by Larry Ellison, Bob Miner, and Ed Oates. Since then, it’s grown into one of the
biggest names in tech, offering software, hardware, and cloud services that help
businesses handle data and streamline operations.
While Oracle has also introduced other products like Oracle Cloud and Oracle Fusion
Middleware over the years, Oracle Database remains its most iconic and widely used
offering.
2. Initial ERD
The Entity Relationship Model (ER Model) is a conceptual framework for identifying
entities that will be represented in a database and the relationships between those
entities. It serves as a visual and structural tool for mapping out how data
elements interact within a database system. The ER data model specifies an
enterprise schema that graphically represents the overall logical structure of a
database.
Originally developed by Peter Chen in 1976, the ER model was created to provide a
simple and easily understandable method for representing the logical structure of
databases. Over the years, it has evolved into variations, such as the Enhanced ER
Model (EER) and the Object-Relational Model (ORM), which add more advanced features
and further refine the representation of data and relationships.
The ER Diagram itself is a schematic representation of how entities and their
relationships are structured. It is a powerful tool in database design,
particularly in relational databases, and is widely used in scenarios ranging from
modeling real-world objects (like a person, a car, or a company) to designing
complex enterprise systems. In short, the ER Diagram serves as a structural
blueprint for the database, defining how data should be stored, retrieved, and
related (geeksforgeeks, 2024).
Definitions
Entities:
Represent the primary objects, concepts, or tables within a database. Examples of
this are Students, Teachers, Programs, Modules or Resources. Finally. Entities are
frequently illustrated as rectangles.
Attributes:
Represent the properties or characteristics of each entity. For example, a student
entity might have attributes like StudentID, Name, DOB, and ProgramID.
3. Primary key:
A primary key is a column (or set of columns) in a database table that is used to
uniquely identify each record within that table.
4. Foreign key:
A foreign key is a column in a database table that is used to establish a link
between the data in two tables. It refers to the primary key in another table,
thereby creating a relationship between the two tables.
5. Composite key:
A composite key is a combination of two or more columns in a database table that,
together, uniquely identify a record in that table.
Relationships: Lines connecting two or more entities, showing how they are linked
or interact. Relationships describe the association between entities and can be:
One-to-One (1:1): A single entity on one side relates to a single entity on the
other side.
One-to-Many (1: N): One entity on one side relates to multiple entities on the
other side.
Many-to-Many (M: N): Multiple entities on both sides of the relationship interact
with each other.
STUDENT
S.NO.
Attribute Name
Data Type
Size
Constraint
1.
Student ID
Number
16
Primary Key
2.
Name
Character
51
Not Null
3.
Date of Birth
Date
Not Null
4.
Email
Character
66
Unique
5.
Phone
Number
10
Unique
Table 1 Identification of Entities and Attributes of Student
PROGRAMS
S.NO.
Attribute Name
Data Type
Size
Constraint
1.
Program ID
Number
16
Primary Key
2.
Name
Character
51
Not Null
3.
Duration
Date
Not Null
4.
Description
Character
66
Unique
5.
Total Modules
Number
10
Unique
Table 2 Identification of Entities and Attributes of programs
MODULES
S.NO.
Attribute Name
Data Type
Size
Constraint
1.
Module ID
Number
16
Primary Key
2.
Name
Character
51
Not Null
3.
Linked Program
Number
25
Not Null
4.
Description
Character
66
Unique
5.
Credit Hours
Number
10
Unique
Table 3 Identification of Entities and Attributes modules
…………………………..
TEACHERS
S.NO.
Attribute Name
Data Type
Size
Constraint
1.
Teacher ID
Number
16
Primary Key
2.
Name
Character
51
Not Null
3.
Department
Number
6
Not Null
4.
Email
Character
66
Unique
5.
Contact Info
Number
10
Unique
Table 4 Identification of Entities and Attributes of teachers
ASSESSMENTS
S.NO.
Attribute Name
Data Type
Size
Constraint
1.
Assessment ID
Number
16
Primary Key
2.
Title
Character
51
Not Null
3.
Deadline
Date
Not Null
4.
Weightage
Character
66
Unique
5.
Total Marks
Number
10
Unique
Table 5 Identification of Entities and Attributes of Assessments
RESULTS
S.NO.
Attribute Name
Data Type
Size
Constraint
1.
Result ID
Number
16
Primary Key
2.
Grade
Character
51
Not Null
3.
Total Marks Obtained
Number
3
Not Null
4.
Linked Module
Character
66
Unique
5.
Linked Assessment
Number
10
Unique
Table 6 Identification of Entities and Attributes of results
RESOURCES
S.NO.
Attribute Name
Data Type
Size
Constraint
1.
Resource ID
Number
16
Primary Key
2.
Title
Character
51
Not Null
3.
Duration
Date
Not Null
4.
Type
Character
66
Unique
5.
Sequence
Number
10
Unique
Table 7 Identification of Entities and Attributes of resources
ANNOUNCEMENTS
S.NO.
Attribute Name
Data Type
Size
Constraint
1.
Announcement ID
Number
16
Primary Key
2.
Title
Character
51
Not Null
3.
Date Posted
Date
Not Null
4.
Content
Character
66
Unique
5.
Linked Module
Number
10
Unique
Table 8 Identification of Entities and Attributes of announcements
2.4 Relationship
Part 3
3. Normalization
Fully functional dependency means that a specific piece of data (Y) depends
entirely on a group of data (X) in a table. But it doesn’t depend on just a part of
that group—it needs the whole group to determine it.
For Example:
we have a table with these columns:
StudentID + CourseID → Grade
· Here, the grade depends on both the StudentID and the CourseID together.
· If we only know StudentID or CourseID (not both), cannot figure out the
grade.
This is what makes it a fully functional dependency—the grade needs both pieces of
information, not just part of it.
A partial dependency happens when part of a key (not the whole key) can determine
something in a table.
For Example:
AC→BAC \rightarrow BAC→B: Together, AAA and CCC determine BBB.
A→DA \rightarrow DA→D: AAA alone determines DDD.
D→BD \rightarrow BD→B: DDD alone determines BBB.
Now look at AAA:
AAA can find DDD, and DDD can find BBB.
So, AAA alone can figure out BBB, even though the rule says AC→BAC \rightarrow
BAC→B.
Process:
BBB doesn’t actually need both AAA and CCC. Just AAA is enough. That’s why it’s
called a partial dependency.
One major issue in UNF is the event of rehashing bunches, where things like item
records are packed into a single field, such as "Product1, Product2, Product3."
Another challenge emerges from composite traits, where one column holds different
information focuses. This plan complicates the capacity to isolate specific
components, just like the city.
Settled relations are too common in UNF, where a single field contains what ought
to be table information. For case, an Arrange Points of interest field may list a
few item depictions and costs together, complicating information recovery and
administration.
Also, having blended information sorts inside a column can make irregularities. For
illustration, on the off chance that a Subtle elements field includes both content
and numbers, it gets to be challenging to preserve information astuteness.
When the same client data shows up in numerous records, it not as it were
increments capacity needs but moreover increases the chance of irregularities in
case overhauls are not connected consistently.
Process:
Student(Student ID, Name, Date_of_Birth, Email, Phone, { Program_ID, Program_Name,
Description, Total_Modules, Duration, {Module_ID, Module_Name, Description,
Credit_Hours, { Resource_ID, Title, Type, Duration, Sequence, }, Teacher_ID,
Teacher_Name, Email, Contact_Info, Department, { Announcement_ID, Title,
Date_Posted, Content, },{Assessment_ID, Title, Weightage, Deadline, Total_Marks,
{ Result_ID, Total_Marks_Obtained, Grade}}})
Description
The given data depicts information in Unnormalized Frame (UNF) inside a database,
highlighting a structure that incorporates settled and various leveled information
components with redundancies and potential irregularities. The most substance,
Understudy, comprises traits such as Understudy ID, Title, Date_of_Birth, Email,
and Phone, along side a settled relationship to programs (Program_ID, Program_Name,
Portrayal, Total_Modules, Term) that the understudy is selected in. Each program
contains rehashing bunches of modules, recognized by qualities such as Module_ID,
Module_Name, Portrayal, and Credit_Hours. Modules advance incorporate related
assets (Resource_ID, Title, Sort, Term, Grouping), educator subtle elements
(Teacher_ID, Teacher_Name, E-mail, Contact_Info, Division), declarations
(Announcement_ID, Title, Date_Posted, Substance), and evaluations (Assessment_ID,
Title, Weightage, Due date, Total_Marks). Evaluations advance incorporate comes
about (Result_ID, Total_Marks_Obtained, Review). The structure is demonstrative of
information redundancies and peculiarities, as properties are rehashed over settled
levels, and the need of normalization may lead to overhaul, addition, and erasure
peculiarities. The wavy brackets speak to rehashing bunches inside the structure.
Every column in a table must have atomic values, meaning that every field has to
store only one value and not many values or lists of sorts. The absence of
composite and multi-valued attributes is necessary.
Ensure that each column has only one value for each row. It is recommended that the
columns have no multi-valued or composite features.
Separate Data into Various Tables: It is important to have a table for each
distinct set of related data. If a customer has multiple products in their orders,
they should be listed in varying tables instead of having rows for each product.
Why is this necessary?
Discard duplicate rows: Each row in the table must be distinct, meaning there are
no duplicates. The deletion of duplicates is necessary to ensure data integrity.
Keep the table free from duplicate columns: Make sure there are no redundant or
duplicated columns. A distinct characteristic of the entity should be attributed to
each column.
Manage Null numbers: It is not advisable to use null values at the intersections of
rows and columns, as they can cause confusion or produce irregular data.
Description
Within the to begin with ordinary frame (1NF), all settled and rehashing qualities
are expelled to ensure that each field within the database contains nuclear values.
The objective is to dispense with multi-valued and composite attributes whereas
guaranteeing information astuteness.
Within the given construction, a few rehashing bunches and settled structures were
recognized, such as Program, Modules, Assets, Declarations, Evaluations, Comes
about, and Instructors. These rehashing bunches were extricated into partitioned
tables to expel repetition. Each modern table is uniquely identified by its
particular essential key, and outside keys were presented to preserve connections
between substances.
Fully functional dependency forms the foundation of Second Normal Form (2NF). To
minimize redundancy, we can organize a database table to ensure data is stored in
an efficient manner. First Normal Form (1NF) criteria for a table to be in 2NF
requires that every column has only one, indivisible value without any repeating
groups. This is crucial. In addition, the table should not have any partial
dependencies.' In other words,
If a relation is in the First Normal Form and the candidate key is responsible for
all non-prime attributes, it forms essentially 'a second normal form'.
Process:
Explore composite keys in terms of their relationship:
The key used to create Result is the main key for it, and its attributes are
determined by the composite key in its entirety.
Similarly, there are no partial dependencies between Resource and Announcement.
Process
Removing the transitive dependencies
A transitive dependency exists when a non-prime attribute depends on another non-
prime attribute, rather than the primary key.
4. Final ERD
STUDENT
S.NO.
Attribute Name
Data Type
Size
Constraint
1.
Student ID
Number
16
Primary Key
2.
Name
Character
51
Not Null
3.
Date of Birth
Date
Not Null
4.
Email
Character
66
Unique
5.
Phone
Number
10
Unique
Table 10 Data Dictionary of student
PROGRAM
S.NO.
Attribute Name
Data Type
Size
Constraint
1.
Program ID
Number
16
Primary Key
2.
Name
Character
51
Not Null
3.
Duration
Date
Not Null
4.
Description
Character
66
Unique
5.
Total Modules
Number
10
Unique
Table 11 Data Dictionary of programs
MODULE
S.NO.
Attribute Name
Data Type
Size
Constraint
1.
Module ID
Number
16
Primary Key
2.
Name
Character
51
Not Null
3.
Linked Program
Number
25
Not Null
4.
Description
Character
66
Unique
5.
Credit Hours
Number
10
Unique
Table 12 Data Dictionary of modules
TEACHER
S.NO.
Attribute Name
Data Type
Size
Constraint
1.
Teacher ID
Number
16
Primary Key
2.
Name
Character
51
Not Null
3.
Department
Number
6
Not Null
4.
Email
Character
66
Unique
5.
Contact Info
Number
10
Unique
Table 13 Data Dictionary of teachers
ASSESSMENT
S.NO.
Attribute Name
Data Type
Size
Constraint
1.
Assessment ID
Number
16
Primary Key
2.
Title
Character
51
Not Null
3.
Deadline
Date
Not Null
4.
Weightage
Character
66
Unique
5.
Total Marks
Number
10
Unique
Table 14 Data Dictionary of assessments
RESULT
S.NO.
Attribute Name
Data Type
Size
Constraint
1.
Result ID
Number
16
Primary Key
2.
Grade
Character
51
Not Null
3.
Total Marks Obtained
Number
3
Not Null
4.
Linked Module
Character
66
Unique
5.
Linked Assessment
Number
10
Unique
Table 15 Data Dictionary of results
RESOURCE
S.NO.
Attribute Name
Data Type
Size
Constraint
1.
Resource ID
Number
16
Primary Key
2.
Title
Character
51
Not Null
3.
Duration
Date
Not Null
4.
Type
Character
66
Unique
5.
Sequence
Number
10
Unique
Table 16 Data Dictionary of resources
ANNOUNCEMENT
S.NO.
Attribute Name
Data Type
Size
Constraint
1.
Announcement ID
Number
16
Primary Key
2.
Title
Character
51
Not Null
3.
Date Posted
Date
Not Null
4.
Content
Character
66
Unique
5.
Linked Module
Number
10
Unique
Table 17 Data Dictionary of announcements
5. Implementation
5.1 User Creation and Grant Privilege:
Figure 7 User Creation and Grant Privilege:
Figure 90
Inserting Data into Assessment_ID 8
5.3.10 Module_Resources
Figure 107 Inserting data into Module_Resources 1
5.3.11 Module_Teacher
Figure 108 Inserting data into Module_Resources 1
5.3.12 Teacher_Announcement
Figure 109 Inserting data into Teacher_Announcement 1
5.3.13 Module_Assessemnet
Figure 110 Inserting data into Module_Assessement 1
5.3.14 Assessment_Result
Figure 111 Inserting data into Assessment_Result 1
6. Database Querying
6.1 Information query
1. List the programs that are available in the college and the total number of
students enrolled in each.
2. List all the announcements made for a particular module starting from 1st
May 2024 to 28th May 2024.
SELECT a.Title, a.Dated_Posted, a.Content
FROM Announcement a
WHERE a.Linked_Module = 2
AND a.Dated_Posted BETWEEN TO_DATE('2024-05-01', 'YYYY-MM-DD') AND TO_DATE('2024-
05-28', 'YYYY-MM-DD')
ORDER BY a.Dated_Posted;
3. List the names of all modules that begin with the letter 'D', along with the
total number of resources uploaded for those modules.
Figure 114 names of all modules that begin with the letter 'D'
In here, there is not included database as module so, it show no row selected.
4. List the names of all students along with their enrolled program who have
not submitted any assessments for a particular module.
5. 5.List all the teachers who teach more than one module.
SELECT t.Name
FROM Teacher t
JOIN Module_Teacher mt ON t.Teacher_ID = mt.Teacher_ID
GROUP BY t.Name
HAVING COUNT(mt.Module_ID) > 1;
Figure 116 the teachers who teach more than one module
2. Find the top three students who have the highest total score across all
modules.
SELECT * FROM (
SELECT
sr.Student_ID,
s.Name,
SUM(sr.Total_Marks_Obtain) AS Total_Score
FROM
Assessment_Result sr
JOIN
Student s ON sr.Student_ID = s.Student_ID
GROUP BY
sr.Student_ID, s.Name
ORDER BY
Total_Score DESC
)
WHERE ROWNUM <= 3;
Figure 118 the top three students who have the highest total score
3. Find the total number of assessments for each program and the average
score across all assessments in those programs.
SELECT
p.Program_ID,
p.Program_Name,
COUNT(a.Assessment_ID) AS Total_Assessments,
AVG(ar.Total_Marks_Obtain) AS Average_Score
FROM
Program p
JOIN
Module m ON p.Program_ID = m.Linked_Program
JOIN
Module_Assessment ma ON m.Module_ID = ma.Module_ID
JOIN
Assessment a ON ma.Assessment_ID = a.Assessment_ID
JOIN
Assessment_Result ar ON a.Assessment_ID = ar.Assessment_ID
GROUP BY
p.Program_ID, p.Program_Name
ORDER BY
p.Program_ID;
4. List the students who have scored above the average score in the
‘Databases’ module.
SELECT
s.Student_ID,
s.Name,
ar.Total_Marks_Obtain AS Score
FROM
Student s
JOIN
Student_Module sm ON s.Student_ID = sm.Student_ID
JOIN
Module m ON sm.Module_ID = m.Module_ID
JOIN
Module_Assessment ma ON m.Module_ID = ma.Module_ID
JOIN
Assessment a ON ma.Assessment_ID = a.Assessment_ID
JOIN
Assessment_Result ar ON a.Assessment_ID = ar.Assessment_ID AND s.Student_ID =
ar.Student_ID
WHERE
m.Module_Name = 'Databases'
AND ar.Total_Marks_Obtain > (
SELECT
AVG(ar1.Total_Marks_Obtain)
FROM
Assessment_Result ar1
JOIN
Module_Assessment ma1 ON ar1.Assessment_ID = ma1.Assessment_ID
JOIN
Module m1 ON ma1.Module_ID = m1.Module_ID
WHERE
m1.Module_Name = 'Databases'
)
ORDER BY
ar.Total_Marks_Obtain DESC;
Figure 120 students who have scored above the average score
7. Critical evaluation
a. Critical Evaluation of module, its usage and relation with other subject
Normalization was the hardest task, yet it seemed to be the most rewarding. Several
times I finds the dependencies and reduce data redundancy, thereby highlighting the
need for data integrity. In testing phase I have Insert datasets to fill the tables
and generate a complex SQL statement for expected output. It has given a more
profound perception of the database operations.Exceptions were posed in coursework
by some challenges. The complexity met during the maintenance of referential
integrity proved to be time-consuming in all constraint enforcements under oracle
SQL.
The coursework was very interesting and quite beneficial despite all this. It
fostered even strong. It enhances my critical thinking, problem solving as well as
technical skills to the database system on completion of this course work. By
completing this project, it gives me a lot of confidence, that I could handle the
real-world database scenarios and benefit from recognition of database significance
in modern application development. This was an incredible experience in the
academic journey that I have execute both practical skills and knowledge.
10 References
geek. (2025) Functional Dependencies [Online]. Available from:
https://www.geeksforgeeks.org/differentiate-between-partial-dependency-and-fully-
functional-dependency/ [Accessed 22 January 2025].
geeksforgeeks. (2024) Introduction of ERD [Online]. Available from:
https://www.geeksforgeeks.org/introduction-of-er-model/.
Microsoft. (2024) Microsoft [Online]. Available from:
https://learn.microsoft.com/en-us/office/troubleshoot/access/database-
normalization-description.
scaler. (2024) scaler [Online]. Available from:
https://www.scaler.com/topics/dbms/normalization-in-dbms/.
Appendix
Codes
CREATE TABLE Resources ( Resource_ID NUMBER(16) PRIMARY KEY, Title CHAR(100), Type
CHAR(50), Duration NUMBER(5), Sequence NUMBER(3), Status CHAR(20) );
CREATE TABLE Teacher ( Teacher_ID NUMBER(16) PRIMARY KEY, Name CHAR(50), Email
CHAR(21), Contact_Info CHAR(15), Department CHAR(50) );
--Announcement
INSERT INTO Announcement (Announcement_ID, Title, Linked_Module, Dated_Posted,
Content)
VALUES (1, 'Important Dates for Data Structures', 1, TO_DATE('2025-01-01', 'YYYY-
MM-DD'), 'Important dates for the Data Structures course.');
--Assessment
INSERT INTO Assessment (Assessment_ID, Title, Weightage, Deadline, Total_Marks)
VALUES (1, 'Data Structures Mid-term', 40, TO_DATE('2025-02-10', 'YYYY-MM-DD'),
100);
--Result
INSERT INTO Result (Result_ID, Linked_Module, Linked_Assessment)
VALUES (1, 1, 1);
COMMIT;