2. School Database
Student ID Student Student Form Sex Age Class Class Room
Surname FirstName Name Teacher Number
S10204 HALL Taighan 10B F 13 Maths101 PRJ 651
S10204 HALL Taighan 10B M 13 GEO101 RW 532
S10204 HALL Taighan 10B F 13 SCI10 CW 161
S10412 CRIST Graeme 10D M 14 GEO101 RW 532
S10412 CRIST Graeme 10D M 14 HIS101 HJD 541
S10101 CRIST Graeme 10D M 14 Maths101 PRJ 651
S10414 HASLETT Oliver 10D M 14 Maths101 PRJ 651
S10101 FUNG JUNE 10A F 15 Maths101 PRJ 651
S10101 FUNG JUNE 10B F 15 GEO101 HJD 532
S10101 FUNF JUNE 10A F 15 HIS101 HJD 541
This is part of a database showing all students and their classes in a school.
3. Data integrity and Data Redundancy
These issues can have a significant impact on the ability for a database to actually
do the job that it is intended to do.
Data Integrity is the idea that information always keeps its meaning. This is
particularly difficult when database get really big if you imagine if the database
above includes every student and every class in the school it could contain over
10000 records.
4. Examples of Data integrity
Examples of Data integrity
A simple typo means that it might mean that information gets lost if we search for
June in the data. This problem is much more likely because of the redundancies
issues we will look at later.
This example can cause real problems it shows that the same information in the
database can mean two different things is s10101 Graeme or June. What happen is
s10101
Here we have June in two classes? Which one is right? What if we need to fine
June in registration urgently
5. Hard to find?
They can be really hard to find in this Database there are more integrity errors can
you find them?
6. Bad or unnecessary Fields Names
Age is an example of a bad field name for the obvious reason that it can change at
anytime. It would be much better to use DOB as age can always be calculated and
of course it does not change.
Form may also be unnecessary in this case as the reference number is CODED to
give the form.
Can you explain the code?
7. School Database
Student ID Student Student Form Sex Age Class Class Room
Surname FirstName Name Teacher Number
S10204 HALL Taighan 10B F 13 Maths101 PRJ 651
S10204 HALL Taighan 10B M 13 GEO101 RW 532
S10204 HALL Taighan 10B F 13 SCI10 CW 161
S10412 CRIST Graeme 10D M 14 GEO101 RW 532
S10412 CRIST Graeme 10D M 14 HIS101 HJD 541
S10101 CRIST Graeme 10D M 14 Maths101 PRJ 651
S10414 HASLETT Oliver 10D M 14 Maths101 PRJ 651
S10101 FUNG JUNE 10A F 15 Maths101 PRJ 651
S10101 FUNG JUNE 10B F 15 GEO101 HJD 532
S10101 FUNF JUNE 10A F 15 HIS101 HJD 541
Table showing data redundancy .
8. Data Redundancy
Data redundancy is the where data needs to be entered and stored on more
than one occasion.
For example if you look at the table above you can see that we have entered
Oliver Haslett’s first name and surname every time we put him into a class.
This can cause problems such as increasing the chance of someone entering
his name wrong. It also means more time is needed to enter data and more
space is needed when it is saved.
There is a way around this …………
9. Relational Databases
The simple way to think about this is that when you create a table of data in a
database you should have fields which directly relate to the key field of the table.
In our table we can see that the Class teacher, Class Name and Room Number are
not related to the Student. The Student ID is unique so the first name, surname,
form, Sex is all related to the student but the other fields do not.
We can now look at how to remove redundancy issues a process called
normalization, although this can be very complex and we are only going to look it
is a simple way.
Student Student Student First Form Sex Age Class Name Class Teacher Room
ID Surname Number
S10204 HALL Taighan 10B F 13 Maths101 PRJ 651
S10204 HALL Taighan 10B M 13 GEO101 RW 532
S10204 HALL Taighan 10B F 13 SCI10 CW 161
10. Removing Redundancy
(“Normalization”)
If we create these tables we remove the redundancy but there is a problem.
Why?
CLASS STUDENT
ClassID StudentID
Class Name Student First Name
Class Teacher Student Surname
Room Number Student DOB
Student Form
These tables have what is called a many to many relationship. That is there
are many students in each class and there are many class for each student.
This kind of relationship will not work in a database.
11. Step 2
To solve this problem we create an extra table which contains the StudentID and
ClassID for each student in each class.
What this does is remove the many to much relationship and replace it with
a one to many or many to one relationship.
That one student can be in many classes and one class has many students.
We can use the relationships to find the information we need in each case making
use of something called Queries that we will look at later.
12. How it looks
STUDENT
CLASS
StudentID
ClassID
FirstName
Class Name
Surname
Class Teacher
DOB
Room Number
Form
STUDENTTAKES
StudentID
ClassID
This goes a long way to solving our problem but there remains a potential problem
with the room number field which could give use problems in what we want to do
with the data. Why ?
13. STEP 3 (optional?)
Room number is not actually related to the class. What happens if a class is in
more than one room for example? If you were to do the normalization properly
you would need to remove room Number and potentially create another table
Rooms as shown below. This is called an Entity Relationship Diagram and they are
used to show the data structure in a database.
This stage can sometimes be a really difficult to do as you really need to
understand what the data is going to be used for to see if it needs to be done.
Student StudentTakes Class
RoomClass
Room
14. Try it for your self
Let’s imagine you want to keep a database of films and actors in those films. Using the
list of fields below can you create the table structure which would allow find
information about films and the actors in them?
Film Film date Film Film Genre Actor First Actor Actor Director Actor
Title Description Name Surname DOB Sex
Titanic 1997 Film about a Romance Kate Winslet 1975 James F
sinking ship Cameroon
Titanic 1997 Film about a Romance Leonardo Di Caprio 1974 James M
sinking ship Cameroon
Star 1977 Film about Space Mark Hamill 1951 George Lucas M
Wars space
Star 1977 Film about Space Harrison Ford 1942 George Lucas M
Wars space