|
|
|
Plopping data into tables haphazardly is a
guaranteed way to create consistency problems and limit what can be
extracted from the data base. Good database design is a complex subject,
but we can learn the basics |
|
|
|
|
A database is a set of tables |
|
The tables are sets of records known as tuples
composed of fields each having values of from some primitive data type |
|
|
|
|
|
|
|
|
|
|
|
The structure of a data base is called a database
schema |
|
The schema specifies … |
|
The list of table names forming the database |
|
For each table, the fields of its records |
|
For each field, its attributes or properties,
i.e. data type, key or not key, default value, etc. |
|
A database as the word is normally used, i.e.
tables with specific contents, is known as a database instance (of a data
base schema) |
|
There can be many instances of a single database
schema |
|
|
|
|
|
Suppose a college wants a database of their
students, faculty, courses taught, student transcripts, and so forth, what
things should go into a design and how should it be organized? |
|
Students: first name, last name, home address,
transcript … |
|
Faculty: first name, last name, SS#, home
address, rank … |
|
Courses: class name, number, students attending,
grades … |
|
Deciding on the schema is called “database
design” and it takes a little study to do right … but it’s easy to see the
principles in action |
|
|
|
|
Consider the Students & Classes DB from
Access |
|
|
|
|
|
|
|
|
One table -- Students And Classes -- contains
records that associate students with classes |
|
|
|
|
|
|
|
|
|
By listing all records with FIT100’s ClassID, a
table is created of the students in FIT100 by StudentID |
|
By looking up each student using StudentID, the
other fields of the class list can be located |
|
|
|
|
Associating a student with a class is the
logical idea behind registering for a class, so Students & Classes
corresponds to a real phenomenon -- a plus |
|
Having classes listed in the student record
violates the goal of a fixed length record, and makes it cumbersome to
create a class list -- minuses |
|
Having students listed in the class record
violates the fixed length record goal, and makes it cumbersome to create a
registration list for each student -- minus |
|
“Registering students” -- what STAR does -- can be done without touching either
Students or Classes tables -- a plus |
|
|
|
|
Many tables will be of interest on their own,
too |
|