Team LiB   Previous Section   Next Section

7.2 Working Examples

To demonstrate our recipes, we'll use a simplified university system with tables for a student register, a teacher register, a campus bookstore, student grades, and so forth.

7.2.1 Bookstore

You have a 24 x 7 online sales support system for a campus bookstore. The bookstore has a warehouse that runs a standalone warehouse system. The warehouse is run by an external partner, and the warehouse system comes from a third-party vendor. The warehouse system calculates the exact stock inventory several times a day and needs to update the central database used by your sales support system with that information. The central database is your database, which is your responsibility.

Assume that your sales support system implements the following table to keep track of the quantities of books that are available:

CREATE TABLE Bookstore(
   BookId INTEGER UNIQUE,
   Name CHAR(40),
   Quantity INTEGER,
   Price DECIMAL(10,2),
   Type CHAR(20)
)

For demonstration purposes, let's fill the table with some data:

BookId      Name                        Quantity  Price  Type                 
----------- --------------------------- --------- ------ -------- 
1           Software Engineering        5         15.00  Manual              
2           Modern Operating Systems    7         20.00  Reference           
3           Learn SQL                   15        18.00  Textbook            
4           Learn Advanced SQL          1         8.00   Textbook            
5           JavaScript Tutorial         5         10.00  Textbook            
6           Modern Operating Systems    7         20.00  Reference           
7           Learn SQL                   15        18.00  Textbook    

This table stores information on every book that is available in your warehouse. Several times a day, the warehouse transmits new inventory positions that need to be validated and loaded into this table.

7.2.2 Rankings

Each year, the student-aid office calculates the average ranking of students eligible for a university scholarship. The office holds ranking information in a large spreadsheet that looks as follows:

Id          Name       Y2000       Y2001       Y2002       
----------- ---------- ----------- ----------- ----------- 
1           Joe        7           8           9
2           Anna       1           2           3
3           Billy      4           5           6
...

Workers at the student-aid office know how to export their spreadsheet into an ASCII table, which you will ultimately load into the following SQL table:

CREATE TABLE StudentRankings(
   Id INTEGER,
   Name CHAR(10),
   Y2000 INTEGER,
   Y2001 INTEGER,
   Y2002 INTEGER
)

7.2.3 Scores

The Academic Director of the university's School of Accounting stores the scores of students in a SQL table named StudentScores. The table structure is as follows:

CREATE TABLE StudentScores (
   CourseId CHAR(20),
   StudentName CHAR(40),
   Score DECIMAL(5,2)
)

The data that you have to work with in the Scores table looks like this:

CourseId StudentName Score
-------- ----------- -----
Accn101  Mike        78.3
Bkn1002  Mike        56.5
Tax1232  Mike        89.8
Accn101  Hannah      76.4
Bkn1002  Hannah      67.6
Tax1232  Hannah      78.8
Accn101  Andrew      45.3
Bkn1002  Andrew      45.5
Tax1232  Andrew      68.5

7.2.4 Dissertations

You have a table named StudentThesis that holds information on Ph.D. student dissertations and that lists the members of the dissertation committee in front of which each student defended his thesis:

CREATE TABLE StudentThesis (
   StudentId INTEGER,
   Member1 INTEGER,
   Member2 INTEGER,
   Member3 INTEGER,
   Grade CHAR(2)
)

The data in the Thesis table looks like this:

StudentId  Member1  Member2  Member3  Grade
---------- -------- -------- -------- ------
1          234      322      456      A
2          456      322      344      B
3          456      455      344      A
4          322      123      455      C

The three Member columns identify the professors by their identification numbers. These numbers can be used in a query against the Professors table (a master table) to get each professor's name. Here is a sample of the data in the Professors table:

Id   Name
---- -----
123  Smith, John
456  Newton, Isaac
455  Einstein, Albert
344  Base, Samuel
322  Anderson, Terry
234  Baird, Frances

Similar master records exist for the students in a Student table:

StudentId   StudentName          
----------- -------------------- 
1           Bob One             
2           Mark Twain          
3           Brent Thrice        
4           Joe Forth         
    Team LiB   Previous Section   Next Section