Lab 15: Introduction to
Relational Databases
through Microsoft Access
Creating
tables for data storage
Autumn 2001
Reading
to be done before beginning this lab:
·
Chapter
16 of Fluency with Information Technology:
Foundations and Fundamentals of Information Technology
Introduction:
The last part of the FIT 100 Course is a study of databases, and in particular, relational databases. We will use Microsoft Access as a way to demonstrate concretely the various layers of complete database architectures. Relational Database Management Systems usually consist of Data Services: Data storage, the storage engine and the query processor. Many RDBM systems do not include a Logic or Presentation layer in the application. However, Microsoft Access is an application environment that allows you to provide Data Storage, Logic Services and Presentation Services all from the same application:
Data Services
The main unit of data services (data storage) is a Table. Data storage allows for persistent data (the data stays even when the power goes off). A table is a collection of data about a specific topic.
Tables organize that data in columns (called attributes) and rows (called records or tuples). One of the attributes of the table is almost always a number data type that is used as a primary key. A primary key is used to uniquely identify the data in a particular row. Primary key values must be unique and not null. Primary keys are also indexed by database to reference specific rows of information.
Data Services also includes the storage engine and the query engine which deal with the saving, accessing and manipulation of the data. A Query is used to access and manipulate the data. Queries are also called views because they are a user’s “view” of the data in the database.
Logic Services
This area deals with the processes that control the more complex logic determining a user’s manipulation of data in the Data Services level. Logic is usually implemented in the code module of an application. Your interaction with logic services will be minimal. Instead, you will use simple queries and the query processor to gather data from tables.
Presentation Services
The interfaces created to allow users of the Database application the ability to enter data and to view output of data. A Form is the typical interface used for input and output of data that goes through logic services and talks to the Query Engine. There are other interfaces in Access such as Reports and Data Access Pages, but you will only be dealing with Forms for the first part of Project 4.
In today’s lab the main focus will be on Data Storage: creating tables to hold data instances (rows of information) of the entity represented by the table.
Objectives:
TO DO:
1. Open Microsoft Access
2. The first thing you have to do is save the database. This may seem weird, since other applications allow you to add text or create objects and then save, but this is what Access requires. You are saving a database space (or shell) and that space will be the only way to access the tables and queries created in it.
3. Select the radio button that says “Blank Access database” and click OK
4. When the window called “File New Database” shows up, name the database Lab15.mdb
and save it to the Desktop or to your disk.
5. After you create the database, the next window lists the database
objects available on the left and the methods available for creating them on the
right.
6. Creating a table in Design view will let you build the table from scratch, adding attributes (the names of the columns) and deciding what data types will be allowed for stored values.
You will create your first database today in order to hold information about two different entities: the Student entity and the Advisor entity. In layman’s terms - you’re going to create two tables: tblStudent and tblAdvisor
The Student table will hold data about, what else? Students! This table (Entity) should contain attributes for Student ID, Last Name, First Name, Major, year in school and the student’s advisor.
The Advisor table will hold data about the Advisor. This table should contain attributes for Advisor ID, Last Name, First Name and Department.
These tables are associated with each other is the following manner:
A student,
when they first enter school, is assigned an advisor to help them plan out the
courses they will take each quarter.
That student may change advisors- for example, if they change majors-
but they will only have one advisor at a time during their college career.
An advisor,
on the other hand, may have many students that they advise over the duration of
a quarter or a year.
We indicate the association
between the Advisor and the Student in the following manner:
An Advisor
may have many students that they advise, but a student will have one and only
one advisor at any given time.
The formal way to say this when
talking about the relational database model is:
There is a one-to-many relationship between the Advisor table
and the Student table.
A one-to-many
relationship is the most common type of relationship used in the Relational
Database Model. In a one-to-many relationship, like the one between Advisor and
Student, a record in the Advisor table can be associated with many matching
records in the Student table, but a record in the Student table has only one
matching record in the Advisor table.
Here is how you
can indicate this relationship in graphical terms:
Student
(1
to Many)
Advisor
7. Double Click on “Create table in Design view” to start building your Advisor table. The screen that comes up will look like this:
Place notes to yourself about what each attribute
contains in the Description column.
These notes are only available in this screen. Indicate the data type allowed for the value of an
attribute in the Data Type column Place the names of the table attributes in the Field
Name column
8. The Advisor table should have the following attributes:
AdvisorID AutoNumber (use AutoNumber so that Access
will produce a unique number to be
used as a Primary Key)
LName Text (Text is one data type that Access uses to
Fname Text indicate a String value)
Department Text
9. The last thing to do after adding the attributes and data types (and
maybe some notes to yourself), is to indicate the attribute that will be used
to hold the unique key value in this table: AdvisorID
Highlight the AdvisorID row in table design view by clicking the area just to the left of the AdvisorID. Then click on the key icon on the tool bar.
Once you do that, a small key icon
should appear just to the left of AdvisorID.
10. When you have finished establishing the Primary Key, save your table with the name tblAdvisor:
File>Save
11. Close the table.
12. Repeat step 7, but this time create the Student table with the
following attributes and data types:
StudentID AutoNumber (use AutoNumber so that Access
will produce a unique number to be
used as a Primary Key)
LName Text
Fname Text
Major Text
Year Number
AdvisorID Number (This is the column where you will
indicate the Advisor ID number that
matches the student’s assigned advisor name.
It is known as the foreign key when used here
because it is a primary key sitting in a table not
defined as
its own.)
13. Repeat step, but make StudentID the primary key for this table.
14. Save your table with the name tblStudent.
15. Can you explain to the person sitting next to you how these two Entities (tables) are associated with (related to) each other?
You now have 2 tables holding data related to 2 different entities. One is the Student entity. The other is the Advisor entity.
16. Double click on the Advisor table in the Tables window.
17. Notice that the table opens up in Datasheet View. This view allows us to see all instances of the advisor entity that have been entered so far.
Right now, the datasheet view is empty. Add the following 2 instances, or rows, so that there is some data in the table:
Notice that a number appears once you put your cursor in the Lname column and start typing “Levy”. This is the primary key for each row and it is generated by Access so that every row is unique and at no time will a null value be allowed in the AdvisorID column. Autonumber is not always required when establishing a primary key in Access. It is simply a convenient way to assign one if an existing number attribute does not exist that is known to be unique and not null.
18. After you add the data, switch to the design view of the table by clicking the design icon in the upper left corner of the database screen:
19. What is the view of the table?
It is the view you first saw when creating the attributes of the
entity.
Switch back to Datasheet View by clicking the appropriate icon now in the left
corner of the database screen:
Close the table. You do not have to save tables when you enter data in the datasheet view. It is automatically saved for you. IF you change the way the table “looks” (the display/format), then you need to save it in order to preserve the look you have created.
In order to enforce referential integrity among tables, and to be able to create linked forms (as you will for Project 4, part 2) you must establish relationships between your tables. They might be one-to-one or one-to-many or many-to-many. In order to ensure data integrity, allow Access to enforce the relationships as you create queries and forms.
20. After you have created the structures for all of your tables, go to the Relationships window by right-clicking on the Lab 15 database window:
You will then see a Show Table window:
Add each table to the Relationship form by selecting it and clicking Add. Do not add each table more than one time. IF the Show Table window does not appear when you open the Relationship form, right click to find it.
Close the Show Table window.
Use the drag and drop method to show where the tables
are associated
Drag the keys that correspond to each other from one table to the next. Once you have placed them, an Edit Relationships window comes up. Check the Enforce Referential Integrity window and Create the relationship:
When you have created all the proper
relationships, your window should look like this:
This symbol indicates the “many” side of the
relationship
Save and close the Relationships Window.
21. Open up the Student table. Add 4 records of student information for yourself and 3 friends. Assign them each an advisor and place the ID number that corresponds with the advisor in the correct column:
In order to maintain data integrity, do not try to assign an Advisor ID that does not correspond to an actual advisor. Because you have established relationships between these two tables that enforce referential data integrity, you will not be allowed to do so.
22. Repeat steps 18 and 19 for the Student table.
23. You now have two entities in your database. They are populated with instances (rows of data). Take a look at each of your tables. What attribute in each of our tables could have been separated out, new tables created, and a key number put in its place to reduce data redundancy (the number of times we had to type in the same information)?
Normalization
Normalization is the process of efficiently organizing data in a database. Two main goals of the normalization process are to eliminate redundant data (for example, storing the same data in more than one table) and ensure data dependencies make sense (only storing related data in a table). This process has many levels involved in it. Let’s look at one of the most basic: revising a table structure when it has more than one entity described in it.
Let’s start to normalize one of the two tables you created today. This process is usually done before creating table structures, but we are going through it on a database that has already been created so that you get an idea of how it is done.
24. Currently the Lab15 database consists of two tables. The Student table includes in it semantic information about another potential entity.
This means there is the possibility that values in some of the columns may
be filled with redundant information. Can you identify the column that
holds semantic (textual, meaningful) information about a separate “thing”
in the student table?
If you are thinking of the Major field, you are correct!
25. Add a table called Major to hold the list of majors that a student can
declare.
For our database, a student will only be allowed to declare one major.
This will maintain a one – to - many relationship
between the Student and Major entities.
26. Create a table in design view. This table will be called tblMajor. The table should have the following attributes: MajorID as the Primary Key and MajorName as a text attribute.
27. Set the primary key for the Major table and save the table as tblMajor.
28. Close the table.
29. Use the data in this table and associate it with the Student table. To do this requires removing one attribute
and adding another attribute to the Student table. What attribute will we add to the Student
table? What will we remove? Could we also normalize the Instructor table
and pull out the Department information into another, separate table?
30. Open the tblStudent table in Design view. Do this by clicking once on the Student table object and then click the Design icon above,
31. We will no longer use the attribute Major as a text data type. Since you already have a couple rows of data
in that column, it will be easier to delete the attribute at this point and
then create another new field called MajorID, this
time with a number data type.
Select the field Major, right click the mouse. From
the menu that pops up, select Delete Rows,
When asked if you want to “permanently Delete the
selected fields….”, click Yes.
32. Now the old attribute Major and all the corresponding data in your
table have been removed. Insert a new
row right above the field Year.
Select the Year row, right click and
select Insert Rows
A new row will be inserted between FName and Year.
33. Add a new field (attribute) to the table Student where you inserted the row.
34. Save and close the table.
35. You now have the table structures created to hold instances of the entities
Student, Advisor and Major.
Before you begin making forms to view and alter the data in these tables, add
the Major Table to your relationship window.
Associate the Major table with the Student table based on the MajorID.
Create the relationship and enforce referential integrity.
36. Show your relationship window and your Student table in design view to your Instructor.
37. FTP your Lab15.mdb to your Dante account. You will use it again in the next lab. The lab for the Monday/Tuesday after Thanksgiving will be posted early so you can work on it and your Project at the same time.