Transcript Chapter 9
Chapter 9
File and Database
Processing
Programming Logic for Business
Copyright 2001 Laura Saret
Laura Saret EdD
Chapter Outline
What Are File Organization and Access?
What Are the Various Types of Files Used by Business
Systems?
Example: Sequential File Merging Program
Example: Sequential File Matching Program
Example: Sequential File Update Program
How Are Direct and Indexed Files Processed?
What Are Pointers, Chains, and Rings?
Why Use Databases Instead of Traditional Files?
What Are the Models for Database Organization?
How Do You Select a File or Database Organization?
Chapter Objectives
After completing this chapter you should be able to.…
Explain the differences between sequential and
direct (random) access and give examples of
applications that use each.
Describe the various types of business files
including master files, transaction files, table files,
temporary files, log files, mirror files, and archive
files.
Describe the two ways of organizing data on
sequential files.
Discuss the purposes of sequential file merging,
matching, and update programs, as well as
construct the logic for such programs.
Chapter Objectives (continued)
After completing this chapter you should be able to.…
Explain the advantages and disadvantages of
nonsequential processing.
Explain methods for backup.
Describe how records are accessed nonsequentially
by their addresses, including the purposes of
randomizing routines, pointers, chains, and rings.
Explain how indexed files are organized and
accessed.
Describe the issues involved in selecting a file
organization.
Chapter Objectives (continued)
After completing this chapter you should be able to.…
Understand the data redundancy, integrity, and
independence issues involved with traditional file
organization.
Explain the purpose of a database management
system.
Explain how data are organized on databases using
the hierarchical, network, and relational models as
well as how object-oriented databases differ from
traditional databases.
Discuss selecting a particular file or database
organization.
File Organization
Describes how records
are stored within a file
Four organization
methods
Serial
Sequential
Direct (relative)
Indexed
All other organization
schemes are variations of
or combinations of these
methods
Serial Organization
Records are stored in chronological order (in order
as they are input or occur)
Examples
Recording of telephone charges
ATM transactions
Telephone queues
Sequential Organization
Records are stored in order based on a key field
Key field
A field containing a value that uniquely identifies a record
Examples
Names
Account numbers
Student numbers
Example
Phone directories
Direct (Relative) Organization
Each record is stored based on a physical address
or location on the device
Address is calculated from the value stored in the
record’s key field
Randomizing routine or hashing algorithm does the
conversion
Disadvantages
Creating a good randomizing routine is difficult
Collisions
Wasted space on the device can be considerable
Sequential processing may not be possible
Indexed Organization
Records can be processed both sequentially and
nonsequentially using indexes
File Access
Method by which computer programs read or
write records on a file
Sequential access
Direct (random) access
Sequential Access
Every record on the file
is processed starting
with the first record
until EOF is reached
Sequential Access
Suppose we only want
to access the 4th
record
The 3 records that
precede it must be
accessed first
Inefficient when
records must be
processed in a
sequence other than
their physical order on
the device
Sequential Access Is Efficient
When…
A large number of the records on the file must be
accessed at any given time
Direct (Random) Access
A high percentage of today’s
information processing must be
done nonsequentially
Records are located by knowing
their physical locations or
addresses on the device rather
than their positions relative to
other records
Compare Looking for a Recording
on a CD versus on a Cassette Tape
DIRECT
SEQUENTIAL
Data stored on a CD device (direct-access) can be
accessed either sequentially or nonsequentially
Data stored on a tape (sequential access) can be
accessed only sequentially
Main Disadvantage of
Nonsequential Access
You must know a record’s
address to find it
Process of calculating or
looking up an address
takes more time than
getting the “next record”
as is done with sequential
access
You must weigh…
amount of time it takes to
find individual records
number of records to be
accessed
Types of Files Used by Business
Systems
Mirror
Archive
Files
Temporary
Files
Files
Master Files
Contain the current information for a system
customer file
student file
telephone directory
Table Files
Type of master file
Change infrequently
Stored in a tabular
format
Zipcode
Transaction Files
Contain the day-to-day
information generated from
business activities
Used to update or process the
master file
Temporary Files
Created and used whenever needed by a system
Mirror Files
Exact duplicates of other
files
Help minimize the risk of
downtime in cases when
the original becomes
unusable
Must be modified each time
the original file is changed
Log Files
Contain copies of
master and
transaction records in
order to chronicle any
changes that are
made to the master
file
Facilitate auditing
Provide mechanism
for recovery in case
of system failure
Archive Files
Backup files that contain historical versions of
other files
Sequential File Merging Programs
Combine two or more sequential or serial files into
a single file
Examples
merge the phone directories of two cities
combine transactions from more than one day
Merging cassette tapes
+
Tape A
Tape B
Tape C
Merging Cassette Tapes
+
Tape A
Tape B
Tape C
Copy all the music from tape A to tape C
Without rewinding tape C, copy all the music from
tape B onto tape C
Suppose the Cassette Tapes have
Been Recorded so that Music Is in
Order by Recording Date—You Want
the Merged Tape to Be in the Same
Order
+
Tape A
Tape B
Tape C
You need to switch back and forth between Tape
A and Tape B to make sure they are copied in the
correct order to Tape C
Let’s Merge 2 Phone Directory Files
Names on File 1
Names on File 2
Adams
Andrews
Baker
Berkowitz
Desai
Crown
Fisher
Fisher
Smith
Miller
Patel
Tripp
Wu
Let’s Merge 2 Phone Directory Files
Names on File 1
Names on File 2
Merge File
Adams
Andrews
Adams
Baker
Berkowitz
Desai
Crown
Fisher
Fisher
Smith
Miller
Patel
Tripp
Wu
Let’s Merge 2 Phone Directory Files
Names on File 1
Names on File 2
Merge File
Adams
Andrews
Adams
Baker
Berkowitz
Andrews
Desai
Crown
Fisher
Fisher
Smith
Miller
Patel
Tripp
Wu
Let’s Merge 2 Phone Directory Files
Names on File 1
Names on File 2
Merge File
Adams
Andrews
Adams
Baker
Berkowitz
Andrews
Desai
Crown
Baker
Fisher
Fisher
Smith
Miller
Patel
Tripp
Wu
Let’s Merge 2 Phone Directory Files
Names on File 1
Names on File 2
Merge File
Adams
Andrews
Adams
Baker
Berkowitz
Andrews
Desai
Crown
Baker
Fisher
Fisher
Berkowitz
Smith
Miller
Patel
Tripp
Wu
Let’s Merge 2 Phone Directory Files
Names on File 1
Names on File 2
Merge File
Adams
Andrews
Adams
Baker
Berkowitz
Andrews
Desai
Crown
Baker
Fisher
Fisher
Berkowitz
Smith
Miller
Crown
Patel
Tripp
Wu
Let’s Merge 2 Phone Directory Files
Names on File 1
Names on File 2
Merge File
Adams
Andrews
Adams
Baker
Berkowitz
Andrews
Desai
Crown
Baker
Fisher
Fisher
Berkowitz
Smith
Miller
Crown
Patel
Desai
Tripp
Wu
Let’s Merge 2 Phone Directory Files
Names on File 1
Names on File 2
Merge File
Adams
Andrews
Adams
Baker
Berkowitz
Andrews
Desai
Crown
Baker
Fisher
Fisher
Berkowitz
Smith
Miller
Crown
Patel
Desai
Tripp
Fisher
Wu
Let’s Merge 2 Phone Directory Files
Names on File 1
Names on File 2
Merge File
Adams
Andrews
Adams
Baker
Berkowitz
Andrews
Desai
Crown
Baker
Fisher
Fisher
Berkowitz
Smith
Miller
Crown
Patel
Desai
Tripp
Fisher
Wu
Fisher
Let’s Merge 2 Phone Directory Files
Names on File 1
Names on File 2
Merge File
Adams
Andrews
Adams
Baker
Berkowitz
Andrews
Desai
Crown
Baker
Fisher
Fisher
Berkowitz
Smith
Miller
Crown
Patel
Desai
Tripp
Fisher
Wu
Fisher
Miller
Let’s Merge 2 Phone Directory Files
Names on File 1
Names on File 2
Merge File
Adams
Andrews
Adams
Baker
Berkowitz
Andrews
Desai
Crown
Baker
Fisher
Fisher
Berkowitz
Smith
Miller
Crown
Patel
Desai
Tripp
Fisher
Wu
Fisher
Miller
Patel
Let’s Merge 2 Phone Directory Files
Names on File 1
Names on File 2
Merge File
Adams
Andrews
Adams
Baker
Berkowitz
Andrews
Desai
Crown
Baker
Fisher
Fisher
Berkowitz
Smith
Miller
Crown
Patel
Desai
Tripp
Fisher
Wu
Fisher
Miller
Patel
Smith
Let’s Merge 2 Phone Directory Files
Names on File 1
Names on File 2
Merge File
Adams
Andrews
Adams
Baker
Berkowitz
Andrews
Desai
Crown
Baker
Fisher
Fisher
Berkowitz
Smith
Miller
Crown
Patel
Desai
Tripp
Fisher
Wu
Fisher
There are
no more
records on
this file
We finish
copying records
from this file
Miller
Patel
Smith
Let’s Merge 2 Phone Directory Files
Names on File 1
Names on File 2
Merge File
Adams
Andrews
Adams
Baker
Berkowitz
Andrews
Desai
Crown
Baker
Fisher
Fisher
Berkowitz
Smith
Miller
Crown
Patel
Desai
Tripp
Fisher
Wu
Fisher
We finish
copying records
from this file
Miller
Patel
Smith
Tripp
Let’s Merge 2 Phone Directory Files
Names on File 1
Adams
Baker
Desai
Fisher
Smith
Names on File 2
Merge File
Andrews
Berkowitz
Crown
Fisher
Miller
Patel
Tripp
Adams
Andrews
Baker
Berkowitz
Crown
Desai
Fisher
Fisher
Miller
Patel
Smith
Tripp
Wu
Wu
Let’s Examine the Logic for a
Merge Program (page 391)
Start
Do
Initialize
Done-File1
=?
"NO"
"YES"
Done-File2
=?
"NO"
"YES"
Do
Terminate
Stop
Do
Merge
Terminate is called
when either input
file reaches EOF
The indicators,
Done-File1 and
Done-File2, are
used to ensure that
neither file is read
past EOF
Terminate finishes
processing
whichever file still
contains records
Initialize
Assign initial values
Read a record from
each input file
Initialize
Assign names
and initial values
in work area
Done-File1 = "NO"
Done-File2 = "NO"
Open
Files
Name1
Address1
City1
Phone1
Read a
record from
File1
EOF?
Yes
Move "Yes" to
Done-File1
No
Name2
Address2
City2
Phone2
Read a
record from
File2
EOF?
Yes
No
Return
Move "Yes" to
Done-File2
The Merge Routine Determines
which Record to Write on the
Merge File
Merge
Is Name1
< Name2?
Yes
No
Write Name1,
Address1, City1,
Phone1 on MergeFile
Write Name2,
Address2, City2,
Phone2 on MergeFile
Read a
record from
File1
Read a
record from
File2
EOF?
EOF?
Name1
Address1
City1
Phone1
Move "Yes" to
Done-File1
yes
Name2
Address2
City2
Phone2
yes
no
no
Return
Move "Yes" to
Done-File2
How Does Terminate Finish
Processing the Files?
Terminate
Done-File1
=?
"YES"
"NO"
"NO"
Done-File2
=?
"YES"
Write Name2,
Address2, City2,
Phone2 on Merge-File
Name2
Address2
City2
Phone2
Read a
record
from File2
No
EOF?
Write Name1,
Address1, City1,
Phone1 on Merge-File
Name1
Address1
City1
Phone1
Yes
Yes
Close
Files
Return
Read a
record
from File1
EOF?
No
Makes sure that neither file is
read past EOF
Initialized to “NO” in Initialize
routine
As long as both indicators
contain the value “NO”,
Mainline continues to do the
Merge routine
As soon as one of the
indicators becomes “YES”,
Mainline calls Terminate
When Terminate is called,
either Done-File1 or DoneFile2 is “NO”—the other
indicator is “YES”
Terminate finishes processing the file
that still contains records
Done-File1
and
Done-File2
Sequential File Matching Programs
Information from
records contained on
the master file are
needed to process the
transaction records
The example in section
9.4 (page 393)
generates a billing
report using…
Purchase amounts
from transaction
records
Customer numbers,
customer names,
addresses, and
discount type from
master records
Master File
Billing
Report
Transaction File
Why Use 2 Files to Produce a
Billing Report?
Accuracy of data input
Speed of data input
Each time a billing report is
generated, you must enter…
amount of purchases
You do not need to enter
constant data…
customer names
customer addresses
discount type
Data Dictionary—Input Files (page 394)
Both files are in the same order—increasing
order by customer number
All data have been validated prior to this
program
Why do both the Master-Record and
Transaction-Record contain the customer
number?
There may be…
no master record for a transaction record
no transaction record for a master record
a match based on the customer numbers—there may
be one or more transaction records for a matching
master record
The Report
See page 393
When there is a match,
line 5 is generated
When there is a
transaction with no
master, line 6 is
generated
When there is a master
with no transaction, line
7 is generated
Let’s Consider Some “Real” Data
Master File
Transaction File
Customer Numbers
Customer Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
11
Let’s Consider Some “Real” Data
Master File
Transaction File
Customer Numbers
Customer Numbers
1
Match
1
Match
2
No Trans.
4
Match
4
Match
4
Match
6
No Trans.
5
No Master
7
No Trans.
5
No Master
8
Match
8
Match
9
No Trans.
11
No Trans.
Hierarchy Chart (page 396)
Mainline
ProcessInputs
Initialize
Read-Mast
Read-Trans
No-Trans
Headings
Calculations
Terminate
Match
Read-Mast
No-Mast
Headings
Read-Trans
Headings
Read-Trans
Start
Mainline Routine
Do
Initialize
What is High-Values?
makes sure that we don’t stop
processing until both files are at
EOF
makes sure that we don’t read
“past” EOF
Look at Read-Mast (page 398)
and Read-Trans (page 399)
when EOF is obtained, HighValues is moved to the customer
number (Cust-No-M or Cust-No-T)
Is Cust-No-M
or Cust-No-T =
High-Values? Yes
No
Do
Process-Inputs
Are Cust-No-M
and Cust-No-T =
No High-Values?
Yes
Do
Terminate
Stop
How Does Initialize Use HighValues (page 397)
INITIALIZE
ASSIGN names and initial values in
work area
HEADING-1
“BILLING REPORT”
“PAGE”
PAGE-NUMBER = 0
HEADING-2
“CUST.”
“NAME”
“ADDRESS”
“PURCHASES”
“BILLING”
OTHER
LINES-COUNTER = 0
MAX-LINES = 49
HIGH-VALUES
PURCH-AMT-TOTAL
BILL-AMT-TOTAL
CURRENT-CUST-NO
OPEN files
DO READ-MAST routine
IF CUST-NO-M = HIGH-VALUES THEN
WRITE “MASTER FILE IS
EMPTY” on report
ENDIF
DO READ-TRANS routine
IF CUST-NO-T = HIGH-VALUES THEN
WRITE “TRANSACTION FILE
IS EMPTY” on report
ENDIF
LINES-COUNTER = MAX-LINES
ENDINITIALIZE
Let’s Look at the Sample Files Again and
See How Process-Inputs (page 398) Works
Initialize reads a record from
each input file
Process-Inputs
Cust-No-M:
< Cust-No-T
=
Do
No-Trans
Do
Read-Mast
Do
Match
Do
Read-Mast
Return
>
Do
No-Mast
Master File
Transaction File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
11
Let’s Look at the Sample Files Again and
See How Process-Inputs (page 398) Works
Process-Inputs calls Match
(see page 400)
Process-Inputs
Cust-No-M:
< Cust-No-T
=
Do
No-Trans
Do
Read-Mast
Do
Match
Do
Read-Mast
Return
>
Do
No-Mast
Master File
Transaction File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
11
What Does Match Do?
Master
File
Initializes Purch-Amt-Total and Bill-Amt-Total Customer
Numbers
to zero
Purch-Amt-Total accumulates the total
1
amount of purchases for all transactions
2
with the current customer number
4
Bill-Amt-Total accumulates the total billing
amount for all transactions with the
6
current customer number
7
The current customer number is saved in
Current-Cust-No to determine when to stop
8
executing the loop that follows
9
The loop calls Calculations to add the
11
appropriate amounts to the totals
The next transaction record is read
Transaction
File
Customer
Numbers
1
4
4
5
5
8
What Does Match Do?
Master
File
Initializes Purch-Amt-Total and Bill-Amt-Total
Customer
to zero
Numbers
Purch-Amt-Total accumulates the total
amount of purchases for all transactions
1
with the current customer number
2
Bill-Amt-Total accumulates the total billing
4
amount for all transactions with the
current customer number
6
The current customer number is saved in
7
Current-Cust-No to determine when to stop
executing the loop that follows
8
The loop calls Calculations to add the
9
appropriate amounts to the totals
11
The next transaction record is read
If the transaction has the same customer
number as the current customer number,
the loop is done again
Otherwise, we write a line on the report,
and exit the routine
Transaction
File
Customer
Numbers
1
4
4
5
5
8
We Exit Match and Return to ProcessInputs to Read the Next Master
Process-Inputs
Cust-No-M:
< Cust-No-T
=
Do
No-Trans
Do
Read-Mast
Do
Match
Do
Read-Mast
>
Do
No-Mast
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
Return
11
The Master Is Less Than the
Transaction
Process-Inputs
Cust-No-M:
< Cust-No-T
=
Do
No-Trans
Do
Read-Mast
Do
Match
Do
Read-Mast
>
Do
No-Mast
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
Return
11
What Does No-Trans (page 399) Do?
Writes a line on the report
Returns to Process-Inputs
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
11
We Return to Process-Inputs to Read
the Next Master
Process-Inputs
Cust-No-M:
< Cust-No-T
=
Do
No-Trans
Do
Read-Mast
Do
Match
Do
Read-Mast
>
Do
No-Mast
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
Return
11
We Have a Match
Process-Inputs
Cust-No-M:
< Cust-No-T
=
Do
No-Trans
Do
Read-Mast
Do
Match
Do
Read-Mast
>
Do
No-Mast
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
Return
11
What Does Match Do?
Master
File
Initializes Purch-Amt-Total and Bill-Amt-Total Customer
Numbers
to zero
Purch-Amt-Total accumulates the total
1
amount of purchases for all transactions
2
with the current customer number
4
Bill-Amt-Total accumulates the total billing
amount for all transactions with the
6
current customer number
7
The current customer number is saved in
Current-Cust-No to determine when to stop
8
executing the loop that follows
9
The loop calls Calculations to add the
11
appropriate amounts to the totals
The next transaction is read
Transaction
File
Customer
Numbers
1
4
4
5
5
8
What Does Match Do?
Master
File
Transaction
File
Initializes Purch-Amt-Total and Bill-Amt-Total
to zero
Purch-Amt-Total accumulates the total
amount of purchases for all transactions
with the current customer number
Bill-Amt-Total accumulates the total billing
amount for all transactions with the current
customer number
The current customer number is saved in
Current-Cust-No to determine when to stop
executing the loop that follows
The loop calls Calculations to add the
appropriate amounts to the totals
The next transaction is read
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
If the transaction has the same customer
number as the current customer number,
the loop is done again
Otherwise, we write a line on the report,
and exit the routine
9
11
What Does Match Do?
Master
File
Transaction
File
Initializes Purch-Amt-Total and Bill-Amt-Total
to zero
Purch-Amt-Total accumulates the total
amount of purchases for all transactions
with the current customer number
Bill-Amt-Total accumulates the total billing
amount for all transactions with the current
customer number
The current customer number is saved in
Current-Cust-No to determine when to stop
executing the loop that follows
The loop calls Calculations to add the
appropriate amounts to the totals
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
11
What Does Match Do?
Master
File
Transaction
File
Initializes Purch-Amt-Total and Bill-Amt-Total
to zero
Purch-Amt-Total accumulates the total
amount of purchases for all transactions
with the current customer number
Bill-Amt-Total accumulates the total billing
amount for all transactions with the current
customer number
The current customer number is saved in
Current-Cust-No to determine when to stop
executing the loop that follows
The loop calls Calculations to add the
appropriate amounts to the totals
The next transaction is read
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
If the transaction has the same customer
number as the current customer number,
the loop is done again
Otherwise, we write a line on the report,
and exit the routine
9
11
We Exit Match and Return to ProcessInputs to Read the Next Master
Process-Inputs
Cust-No-M:
< Cust-No-T
=
Do
No-Trans
Do
Read-Mast
Do
Match
Do
Read-Mast
>
Do
No-Mast
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
Return
11
The Master Is Greater Than the
Transaction
Process-Inputs
Cust-No-M:
< Cust-No-T
=
Do
No-Trans
Do
Read-Mast
Do
Match
Do
Read-Mast
>
Do
No-Mast
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
Return
11
What Does No-Mast (page 401) Do?
Writes a line on the report
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
11
What Does No-Mast (page 401) Do?
Writes a line on the report
Reads transaction records until the
customer number on the
transaction record has changed
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
11
What Does No-Mast (page 401) Do?
Writes a line on the report
Reads transaction records until the
customer number on the
transaction record has changed
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
11
We Return to Process-Inputs—Notice
that a Master Record is NOT Read
Process-Inputs
Cust-No-M:
< Cust-No-T
=
Do
No-Trans
Do
Read-Mast
Do
Match
Do
Read-Mast
>
Do
No-Mast
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
Return
11
We Return to Mainline, Which Sends Us Back
to Process-Inputs--The Master Is Less Than
the Transaction
Process-Inputs
Cust-No-M:
< Cust-No-T
=
Do
No-Trans
Do
Read-Mast
Do
Match
Do
Read-Mast
>
Do
No-Mast
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
Return
11
What Does No-Trans (page 399) Do?
Writes a line on the report
Returns to Process-Inputs
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
11
We Return to Process-Inputs to Read
the Next Master
Process-Inputs
Cust-No-M:
< Cust-No-T
=
Do
No-Trans
Do
Read-Mast
Do
Match
Do
Read-Mast
>
Do
No-Mast
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
Return
11
Once Again, We Do No-Trans
Write a line on the report
Process-Inputs
Cust-No-M:
< Cust-No-T
=
Do
No-Trans
Do
Read-Mast
Do
Match
Do
Read-Mast
>
Do
No-Mast
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
11
Return
Once Again, We Do No-Trans
Read the next master
Process-Inputs
Cust-No-M:
< Cust-No-T
=
Do
No-Trans
Do
Read-Mast
Do
Match
Do
Read-Mast
>
Do
No-Mast
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
11
Return
We Have a Match
Master
File
Initializes Purch-Amt-Total and Bill-Amt- Customer
Numbers
Total to zero
1
Purch-Amt-Total accumulates the total
amount of purchases for all
2
transactions with the current customer
4
number
6
Bill-Amt-Total accumulates the total
7
billing amount for all transactions with
the current customer number
8
The current customer number is saved in
9
Current-Cust-No to determine when to
11
stop executing the loop that follows
The loop calls Calculations to add the
appropriate amounts to the totals
The next transaction record is read
Transaction
File
Customer
Numbers
1
4
4
5
5
8
We Have a Match
Initializes Purch-Amt-Total and Bill-AmtTotal to zero
Purch-Amt-Total accumulates the total
amount of purchases for all transactions
with the current customer number
Bill-Amt-Total accumulates the total
billing amount for all transactions with
the current customer number
The current customer number is saved in
Current-Cust-No to determine when to stop
executing the loop that follows
The loop calls Calculations to add the
appropriate amounts to the totals
The next transaction record is read
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
High-Values
We get EOF which moves High-Values to the
customer number
The customer number is not the same, so we
write a line on the report, and exit the routine
11
We Exit Match and Return to ProcessInputs to Read the Next Master
Process-Inputs
Cust-No-M:
< Cust-No-T
=
Do
No-Trans
Do
Read-Mast
Do
Match
Do
Read-Mast
Return
>
Do
No-Mast
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
High-Values
11
From Now Until EOF on the Master File, the Customer
Number on the Master will be < the Customer
Number on the Transaction
Process-Inputs
Cust-No-M:
< Cust-No-T
=
Do
No-Trans
Do
Read-Mast
Do
Match
Do
Read-Mast
Return
>
Do
No-Mast
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
High-Values
11
So, We Continue to Do No-Trans and Read-Mast Until
We Reach EOF on the Master
Process-Inputs
Cust-No-M:
< Cust-No-T
=
Do
No-Trans
Do
Read-Mast
Do
Match
Do
Read-Mast
Return
>
Do
No-Mast
Master
File
Transaction
File
Customer
Numbers
Customer
Numbers
1
1
2
4
4
4
6
5
7
5
8
8
9
High-Values
11
If the Master File Had Ended Before the Transaction
File, Then…
Process-Inputs
Cust-No-M:
< Cust-No-T
=
Do
No-Trans
Do
Match
Do
Read-Mast
Do
Read-Mast
>
Do
No-Mast
Return
We Would Have Moved High-Values to the Master’s
Customer Number and Kept Doing No-Mast Until EOF
Was Obtained on the Transaction File
Sequential File Update Programs
Modifies a sequential
master file by adding,
changing, and deleting
records
Similar logic to
matching programs
matching programs
-- records from the
master file are used
to process the
transactions
update programs –
records from the
transaction file are
used to add,
change, and delete
records on the
master file
Old master
file
Transaction
file
Update
program
New master
file
Update
report
Exception
report
Sequential File Update Programs
The old master file
is saved as backup
The new master
file becomes the
old master file the
next time the
update program is
executed
Old master
file
Transaction
file
Update
program
New master
file
Update
report
Exception
report
Two Reports are Produced (page 408)
How are two
reports produced
simultaneously
with one printer?
Spooling
Old master
file
Transaction
file
Update
program
New master
file
Update
report
Exception
report
Spooling
Reports are written to
a disk or tape (instead
of to the printer)
Update
program
Reports are printed using a
utility program whenever
the printer is available
Let’s Compare the Processing with Making
Changes on a Cassette Tape on which You
Have Previously Recorded Songs
Delete Song 4
Song 1
Song 2
Song 3
Song 4
Song 5
Song 1
Song 2
Song 3
Song 5
Let’s Compare the Processing with Making
Changes on a Cassette Tape on which You
Have Previously Recorded Songs
Change Song 3
Song
Song
Song
Song
Song
1
2
3
4
5
Song
Song
Song
Song
Song
1
2
3
4
5
Let’s Study the Input Files (page 410)
Each transaction record contains a code indicating
whether the transaction is for an add (A), change
(C), or delete (D)
Both files are in sorted order by customer number
Transaction file has been previously validated to
ensure that …
the code is valid
there is a maximum of 1 transaction for each customer
number
Adds, Changes, and Deletes
Code = A
new customer
a new master record is created with the data from the
transaction record
an error will occur if the master record already exists
Code = D
customer is to be deleted (account closed)
the transaction only contains the account number
an error will occur if the master record does NOT exist
Code = C
change to record on master file
A new master record is created with the changes from
the transaction record
an error will occur if the master does NOT exist
What Changes Can Occur?
customer name
customer address
discount type
customer number can NOT
be changed
Look at Mainline (page 412)
What does it mean if Cust-No-T = High-Values
after returning from Initialize?
there were no records on the Transaction File
the program is terminated because it does not make
sense to do an update program if there are NO records on
the transaction file
Initialize writes an error on the Exception Report
Mainline does not check Cust-No-M after returning
from Initialize. Why not?
if there are no records on the master file, the update
program can be used to create a new master file
all of the transactions must be adds
Mainline calls Update-File until both files reach
EOF
Look at Initialize (page 413)
It doesn’t matter whether the Master File or
Transaction File is read first
Initialize writes an error if there are no records on
the Transaction File
No error occurs if the Master File is empty
Mainline Calls Update-File (page 414)
Update-File
<
Cust-No-M:
Cust-No-T
>
=
Do
No-Trans
Do
Match
Return
Do
No-Mast
What Happens if Cust-No-M <
Cust-No-T?
No-Trans is done (page 415)
The record on the old master
file is copied to the new
master file
The next master record is
read
What Happens if Cust-No-M >
Cust-No-T?
No-Mast is done (page 416)
The only “valid” code is A
(add)
Do Add-Mast (page 418)
Write the new master record
Write a line on the update
report
Read the next transaction
What Happens if Cust-No-M =
Cust-No-T?
Match is done (page 415)
If the Code is “A”, an error results
An error message is written on the
report
the next transaction is read
If the Code is “D”, the master is
deleted
Delete-Mast (page 416) writes a
message on the report
the next master is read
the next transaction is read
If the code is “C”, the master is
changed
Change-Mast (page 417) writes the
changed master on the master file
and a message on the report
the next master is read
the next transaction is read
What Data Should We Use to
Test the Program?
Combinations for…
master < transaction
master = transaction
master > transaction
< condition followed by…
another < condition
> condition
= condition
= condition followed by…
another = condition
< condition
> condition
> condition followed by…
another > condition
< condition
= condition
What Data Should We Use to
Test the Program?
Add with…
= condition
< condition
> condition
Change with…
= condition
< condition
> condition
Delete with
= condition
< condition
> condition
One data set should have the master file reach
EOF before the transaction file ends
Another data set should have the transaction file
reach EOF before the master file ends
Let’s Consider Nonsequential
Processing
Advantages
You can find a record without accessing all preceding
records
Transaction records can be in any order—they don’t have
to be sorted
Updating does not require an entirely new master file
Disadvantages
Creation of a backup must be done as a separate
processing step—no old master to use as backup
To access a record, the program must first determine the
address—this is slow compared to “getting the next
record”
Updates – Direct Files
Access records by calculating their physical
addresses
Adding a record
calculate where it should be stored
write it on the device
Changing a record
change the values stored in particular fields
rewrite the record on the device in the same physical
location it was in originally
Deleting a record
not physically deleted
marked as a deletion—we logically delete it
each time we access a record, we check to see
whether it has been logically deleted
Updates - Indexed Files
Three areas are used on the storage device
index area
contains record keys and addresses
stored in sequential order
prime data area
contains records originally on file
overflow data area
Contains records added to the file
Need for reorganization
Indexed files can be maintained by programmers
even when the programming language does not
provided for indexed processing
maintain indexes in tables in sequential files
store records in a direct file
Pointers, Chains, and Rings
Pointers are used in nonsequential processing to maintain a
logical order even though records are located randomly
Pointers create chains of records
RECORD 1
R
E
C
O
R
D
RECORD 3
R
E
C
O
R
D
RECORD 7
*
2
4
RECORD 2
R
E
C
O
R
D
RECORD 4
R
E
C
O
R
D
3
5
RECORD 5
R
E
C
O
R
D
6
RECORD 6
R
E
C
O
R
D
7
Pointers, Chains, and Rings
Sometimes files contain more than one pointer
This example shows forward and backward pointers
RECORD 1
R
E
C
O
R
D
*
2
RECORD 4
RECORD 2
R
E
C
O
R
D
R
E
C
O
R
D
3
1
RECORD 3
R
E
C
O
R
D
R
E
C
O
R
D
4
2
R
E
C
O
R
D
R
E
C
O
R
D
5
3
RECORD 5
*
R
E
C
O
R
D
4
Pointers, Chains, and Rings
When a ring is used, there is no “end of chain”
RECORD 1
R
E
C
O
R
D
RECORD 3
R
E
C
O
R
D
RECORD 7
2
4
RECORD 2
R
E
C
O
R
D
RECORD 4
1
R
E
C
O
R
D
3
5
RECORD 5
R
E
C
O
R
D
6
R
E
C
O
R
D
RECORD 6
R
E
C
O
R
D
7
Why Use Databases Instead of
Traditional Files?
Data redundancy
Are the same fields are used in many different files
Data integrity
Are the same data maintained in different files
consistent?
Data independence
If a change is made to the file or database structure, do
programs have to be changed to accommodate the new
structure?
Database Management System
(DBMS)
A set of programs that serve as the interface between
application programs and the database
Provides capabilities for the following…
creating or modifying the file structure
field names
field lengths
data types
special attributes
confidential fields can be accessed only by providing
the correct password
protected fields can be access but cannot be changed
without providing the correct password
Data entry
importing data from another file
downloading data from another computer or server
Entering data interactively using input forms or screens
Data retrieval (extracting data)
programming languages allow for customization
Models for Database Organization
Physical view
deals with the actual location and storage of data as well
as the pointers—DBMS worries about this
Logical view
deals with the relationship between records and fields—
programmer works with this
There are many models used to represent logical
views
hierarchical model
network model
relational model
object-oriented model
Hierarchical Model
Developed in 1960s to be used on large mainframes
One-to-many relationships
Each record is called a node
Subordinate items are called children
Superior items are called parents
President
Vice President of
Finance and
Facilities
Dean of Allied
Health
Vice President of
Community Affairs
Dean of Business
and Social Sciences
Vice President of
Student Affairs
Dean of Humanities
and the Arts
Vice President of
Academic Affairs
Dean of
Mathematics
and Sciences
Network Model
Many-to-many relationships are possible
Science
Dept.
Biology
Student 1
Student 2
Chemistry
Student 3
Physics
Student 4
Geology
Student 5
Student 6
Relational Model
Represents data in two-dimensional tables
Rows represent records
Columns represent fields
Name
Cohn
Test
1
48
Test
2
50
Test
3
68
Test
4
89
Test
5
98
Test
6
92
Test
7
80
Kim
85
77
77
90
79
81
80
Katsumoto
91
41
90
76
58
85
87
Brown
90
90
92
85
77
68
72
Johnson
68
78
45
69
72
73
80
Patel
100
90
92
92
80
79
88
Jerwinski
100
98
88
79
88
92
79
Object-Oriented Models
Integrates object-oriented concepts (such as
encapsulation and inheritance) with traditional
database capabilities
Can handle user-defined data types
How Do You Select a File or
Database Organization?
Ease of implementing and
maintaining a particular type of
file or database organization
Availability of software
Cost
The nature of the application
volatility (frequency of changes)
activity (percentage of records
that are actually used each time
the program is run)
query (retrieval of specific
information) requirements
security requirements