< previous page page_10 next page > Page 10 The Data Model Figure 1-2 shows an Entity Relationship Diagram, or ERD, for the sample database. Figure 12. The sample database As you can see from the ERD, there are only three entities: EMPLOYEE, PROJECT, and PROJECT_HOURS. Table 12 gives a brief description of each entity. Table 12. Entity Descriptions Entity Name Description EMPLOYEE Contains one record for each employee. This record contains the employee's name, hire date, termination date, and billing rate. The primary key is an arbitrary employee ID number. The termination date for current employees is set to NULL. PROJECT Contains one record for each project that an employee may work on. Contains the project name and budget. The primary key is an arbitrary project ID number. PROJECT_HOURS Each time an employee logs time to a project, a record is generated in this table. The record contains the number of hours charged against the project as well as the total dollar amount charged. The dollar amount charged is calculated at the time the record is created because an employee's billing rate may fluctuate over time. The primary key is a combination key made up of an employee ID, a project ID, and the date. The number of employees and projects is fairly small. However, there is a fairly large amount of data in the PROJECT_HOURS table to allow for the generation of < previous page page_10 next page > < previous page page_11 next page > Page 11 multiple page reports, which are needed to demonstrate pagination, page headings, page footings, and summarization. The Tables This section shows the column descriptions, including column datatypes and lengths, for each of the three sample tables. This is the same information you would get using SQL*Plus's DESCRIBE command. The EMPLOYEE table Name Null? Type EMPLOYEE_ID NOT NULL NUMBER EMPLOYEE_NAME VARCHAR2(40) EMPLOYEE_HIRE_DATE DATE EMPLOYEE_TERMINATION_DATE DATE EMPLOYEE_BILLING_RATE NUMBER The PROJECT_HOURS table NAME NULL? TYPE PROJECT_ID NOT NULL NUMBER PROJECT_NAME VARCHAR2(40) PROJECT_BUDGET NUMBER The PROJECT_HOURS table NAME NULL? TYPE PROJECT_ID NOT NULL NUMBER EMPLOYEE_ID NOT NULL NUMBER TIME_LOG_DATE NOT NULL DATE HOURS_LOGGED NUMBER DOLLARS_CHARGED NUMBER The Data This section shows the data contained in the three sample tables. The EMPLOYEE table ID Name Hire Date Term Date Billing Rate 101 Jonathan Gennick 15-Nov-1961 Still Employed 169.00 102 Jenny Gennick 16-Sep-1964 05-May-1998 135.00 104 Jeff Gennick 29-Dec-1987 01-Apr-1998 99.00 105 Horace Walker 15-Jun-1998 Still Employed 121.00 107 Bohdan Khmelnytsky 02-Jan-1998 Still Employed 45.00 108 Pavlo Chubynsky 01-Mar-1994 15-Nov-1998 220.00 110 Ivan Mazepa 04-Apr-1998 30-Sep-1998 84.00 < previous page page_11 next page > < previous page page_12 next page > Page 12 111 Taras Shevchenko 23-Aug-1976 Still Employed 100.00 112 Hermon Goche 15-Nov-1961 04-Apr-1998 70.00 113 Jacob Marley 03-Mar-1998 31-Oct-1998 300.00 The PROJECT table ID Project Name Budget 1001 Corporate Web Site 1,912,000.00 1002 Year 2000 Fixes 999,998,000.00 1003 Accounting System Implementation 897,000.00 1004 Data Warehouse Maintenance 294,000.00 1005 TCP/IP Implementation 415,000.00 The PROJECT_HOURS table The PROJECT_HOURS table contains the following information, repeated for each employee. Proj ID Emp ID Log Date Hours Charged Amt Charged 1001 101 01-Jan-1998 1.00 169.00 1003 101 01-Jan-1998 3.00 507.00 1005 101 01-Jan-1998 5.00 845.00 1002 101 01-Feb-1998 7.00 1,183.00 1004 101 01-Feb-1998 1.00 169.00 1001 101 01-Mar-1998 3.00 507.00 1003 101 01-Mar-1998 5.00 845.00 1005 101 01-Mar-1998 7.00 1,183.00 1002 101 01-Apr-1998 1.00 169.00 1004 101 01-Apr-1998 3.00 507.00 1001 101 01-May-1998 5.00 845.00 1003 101 01-May-1998 7.00 1,183.00 1005 101 01-May-1998 1.00 169.00 1002 101 01-Jun-1998 3.00 507.00 1004 101 01-Jun-1998 5.00 845.00 1001 101 01-Jul-1998 7.00 1,183.00 1003 101 01-Jul-1998 1.00 169.00 1005 101 01-Jul-1998 3.00 507.00 1002 101 01-Aug-1998 5.00 845.00 1004 101 01-Aug-1998 7.00 1,183.00 1001 101 01-Sep-1998 1.00 169.00 1003 101 01-Sep-1998 3.00 507.00 1005 101 01-Sep-1998 5.00 845.00 1002 101 01-Oct-1998 7.00 1,183.00 1004 101 01-Oct-1998 1.00 169.00 1001 101 01-Nov-1998 3.00 507.00 1003 101 01-Nov-1998 5.00 845.00 1005 101 01-Nov-1998 7.00 1,183.00 1002 101 01-Dec-1998 1.00 169.00 1004 101 01-Dec-1998 3.00 507.00 The detail is actually the same for each employee. They all work the same hours on all projects. There are enough PROJECT_HOURS records to produce some rea- < previous page page_12 next page > < previous page page_13 next page > Page 13 sonable summary reports, as you will see in Chapter 3, Generating Reports with SQL*Plus. Loading the Sample Data In order to load the sample data you will need an Oracle userid and password. If you are accessing a remote database, often the case for people using Windows, you will also need a connect string. If you are using Oracle Personal Edition (formerly Personal Oracle), then the connect string is not needed to connect to your local database. You must have the necessary privileges and quotas to create tables in the database you are using. Specifically, you must have the following system privileges: CREATE SESSION ALTER SESSION CREATE TABLE CREATE VIEW CREATE TRIGGER CREATE PROCEDURE CREATE SYNONYM CREATE SEQUENCE CREATE TYPE (Oracle8 only) Your database administrator can help you with any of these items. Once you have a username and password and have been granted the necessary privileges, you can create the sample tables and data by following these four steps: 1. Download and unzip the script files. 2. Start SQL*Plus. 3. Log into your Oracle database. 4. Run the BLD_DB.SQL script file. The screenshots in the remainder of this section show you how things would look if you were creating the sample tables and data using SQL*Plus in a Windows 95 or NT environment. Under other operating systems, such as Unix, everything would look much the same, except that SQL*Plus may not have its own window and the userid/password prompts may not be in a dialog box. If you are new to SQL*Plus and are completely uncertain how to start it in your particular environment, you should first read the section titled Starting SQL*Plus in Chapter 2, Interacting with SQL*Plus. Once you know how to start SQL*Plus, you can come back here and run the script to create the sample tables and fill them with data. < previous page page_13 next page > < previous page page_14 next page > Page 14 Step 1: Download and unzip the script files The SQL scripts to create the tables and data used for the examples in this book can be downloaded from O'Reilly & Associates' web site. See the Preface for more information. The scripts are stored in a ZIP file named BLD_DB.ZIP. Download this file, and extract the contents into a directory on your hard disk. If you do not have an unzip utility, you may download BLD_DB.EXE instead. BLD_DB.EXE is a selfextracting ZIP file. Just run it, the scripts will be extracted, and you won't need a separate unzip utility. Step 2: Start SQL*Plus When you first start SQL*Plus in a Windows environment, you will see a SQL*Plus window open. You will also immediately be prompted for a userid, a password, and a host string. Your screen should look like the one shown in Figure 13. Figure 13. SQL*Plus immediately after startup On a Unix system, you won't see a dialog box like that shown in Figure 13. Instead you will simply see a userid prompt. Step 3: Log into your Oracle database Type your userid, password, and host string into the three dialog box fields. If you are using Oracle Personal Edition, you typically leave the host string field blank. Once the correct information is entered, click the OK button. If you are using a Unix system, answer the username prompt by typing in your username and press- < previous page page_14 next page > < previous page page_15 next page > Page 15 ing ENTER. Answer the password prompt in the same way. Once logged in, you should see a screen similar to that shown in Figure 14. Figure 14. SQL*Plus after a successful login The opening screen shows the SQL*Plus version, some copyright information, and some Oracle database version information. The exact version numbers and options you see may vary from those shown in Figure 14. Step 4: Run the BLD_DB.SQL script file The next and final step is to run the BLD_DB.SQL script file, which is one of the files in the ZIP archive you downloaded in step 1. To do that, simply use the @ command as shown below: SQL> @c:\ \bld_db You need to specify the full directory path to this file. After you type in the above command and press ENTER, your SQL*Plus screen should look like the one shown in Figure 15. The first thing the script does is confirm that you really do want to load the sample data. Go ahead and answer with a Y, or with an N if you've changed your mind about loading the data. You must answer the script questions with either a Y or an N. Your reply is not case-sensitive, so a lowercase response is fine. Input validation is minimal, but it is there. If you give an invalid response, an error message will be displayed and the script will stop. You will then need to restart the script, using the START command as shown earlier, and answer correctly. < previous page page_15 next page > < previous page page_16 next page > Page 16 Figure 15. After the BLD_DB script is started If you've answered Y to the question about continuing, the next thing you will see is another prompt asking if you want to first drop the sample tables. This is shown in Figure 16. Figure 16. The BLD_DB script asking to drop the sample tables This option to first drop the sample tables is convenient if you have loaded them before and wish to quickly reload them. If this is your first time running this script, < previous page page_16 next page > < previous page page_17 next page > Page 17 you should answer this question with an N. If you have loaded the tables previously, and you know that they exist now, then you should answer with a Y. Now you can just sit back and watch. The next thing the script does is create the sample tables. Following that it inserts data into each table. Figure 17 shows the progress messages being displayed on the screen while all this is occurring. Figure 17. Progress messages from the BLD_DB script The entire load process should take less than a minute. When the load is complete, you will be asked to press ENTER one final time. After doing that, you can use the EXIT command to exit SQL*Plus. Now that you have loaded the sample data, you can proceed with the book and try out the examples as you go. < previous page page_17 next page > . by following these four steps: 1. Download and unzip the script files. 2. Start SQL* Plus. 3. Log into your Oracle database. 4. Run the BLD_DB .SQL script file. The screenshots in the remainder. titled Starting SQL* Plus in Chapter 2, Interacting with SQL* Plus. Once you know how to start SQL* Plus, you can come back here and run the script to create the sample tables and fill them with data. . creating the sample tables and data using SQL* Plus in a Windows 95 or NT environment. Under other operating systems, such as Unix, everything would look much the same, except that SQL* Plus may