Previous Topic: SQL Database Implementation for the Commonweather CorporationNext Topic: View Definitions


Logical Database Definition Listing for the Commonweather Database

Below is a listing for the SQL definition of the Commonweather Corporation database for the design shown.

Schema Statement

  CREATE SCHEMA EMPSCHM;
 
  SET SESSION CURRENT SCHEMA EMPSCHM;

Table Statements

  CREATE TABLE COVERAGE
         (PLAN_CODE               CHAR(03)                          NOT NULL,
          EMP_ID                  UNSIGNED NUMERIC(4,0)             NOT NULL,
          SELECTION_DATE          DATE                 NOT NULL WITH DEFAULT,
          TERMINATION_DATE        DATE                                      )
          COVERAGE-TYPE           CHAR(01)                          NOT NULL,
       IN SQLDEMO.INS_DEMO_REGION;
 
  CREATE TABLE DENTAL_CLAIM
         (CLAIM_DATE              DATE                              NOT NULL,
          PATIENT_FIRST_NAME      CHAR(10)                                  ,
          PATIENT_LAST_NAME       CHAR(15)                                  ,
          PATIENT_BIRTH_DATE      DATE                                      ,
          PATIENT_SEX             CHAR(01)                                  ,
          RELATION_TO_EMPLOYEE    CHAR(10)                                  ,
          EMP_ID                  UNSIGNED NUMERIC(4,0)             NOT NULL,
          PLAN_CODE               CHAR(03)                                  ,
          DENTIST_FIRST_NAME      CHAR(10)                                  ,
          DENTIST_LAST_NAME       CHAR(15)                                  ,
          DENTIST_STREET          CHAR(20)                                  ,
          DENTIST_CITY            CHAR(15)                                  ,
          DENTIST_STATE           CHAR(2)                                   ,
          DENTIST_ZIP_FIRST_FIVE  CHAR(05)                                  ,
          DENTIST_ZIP_LAST_FOUR   CHAR(04)                                  ,
          DENTIST_LICENSE_NUMBER  UNSIGNED NUMERIC(6,0)                     )
       IN SQLDEMO.INS_DEMO_REGION;
 
  CREATE TABLE DENTAL_PROCEDURE
         (EMP_ID                  UNSIGNED NUMERIC(4,0)             NOT NULL,
          PLAN_CODE               CHAR(03)                          NOT NULL,
          SERVICE_DATE            DATE                              NOT NULL,
          TOOTH_NUMBER            UNSIGNED NUMERIC(2,0)                     ,
          PROCEDURE_CODE          UNSIGNED NUMERIC(4,0)             NOT NULL,
          FEE                     DECIMAL(9,2)                              ,
          DESCRIPTION             VARCHAR(60)                               )
       IN SQLDEMO.INS_DEMO_REGION;
 
  CREATE TABLE DEPARTMENT
         (DEPT_ID                 UNSIGNED NUMERIC(4,0)             NOT NULL,
          DEPT_HEAD_ID            UNSIGNED NUMERIC(4,0)                     ,
          DEPT_NAME               CHAR(40)                          NOT NULL)
     IN SQLDEMO.ORG_DEMO_REGION;
  CREATE TABLE EMPLOYEE
         (EMP_ID                  UNSIGNED NUMERIC(4,0)             NOT NULL,
          EMP_FIRST_NAME          CHAR(20)                          NOT NULL,
          EMP_LAST_NAME           CHAR(20)                          NOT NULL,
          DEPT_ID                 UNSIGNED NUMERIC(4,0)             NOT NULL,
          OFFICE_CODE             UNSIGNED NUMERIC(4,0)             NOT NULL,
          STREET                  CHAR(40)                                  ,
          CITY                    CHAR(20)                          NOT NULL,
          STATE                   CHAR(02)                          NOT NULL,
          ZIP_FIRST_FIVE          CHAR(05)                          NOT NULL,
          ZIP_LAST_FOUR           CHAR(04)                          NOT NULL,
          PHONE                   CHAR(10)                                  ,
          STATUS                  CHAR(01)                          NOT NULL,
          SS_NUMBER               UNSIGNED NUMERIC(9,0)             NOT NULL,
          START_DATE              DATE                              NOT NULL,
          TERMINATION_DATE        DATE                                      ,
          BIRTH_DATE              DATE                                      ,
     CHECK ( ( EMP_ID <= 8999 ) AND (STATUS IN ('01', '02', '03', '04', '05') ) ) )
     IN SQLDEMO.EMP_DEMO_REGION;
 
  CREATE TABLE EMPOSITION
         (EMP_ID                  UNSIGNED NUMERIC(4,0)             NOT NULL,
          JOB_ID                  UNSIGNED NUMERIC(4,0)             NOT NULL,
          START_DATE              DATE                              NOT NULL,
          FINISH_DATE             DATE                                      ,
          SALARY_GRADE            UNSIGNED NUMERIC(2,0)                     )
    IN SQLDEMO.EMP_DEMO_REGION;
 
  CREATE TABLE HOSPITAL_CLAIM
         (CLAIM_DATE              DATE                              NOT NULL,
          PATIENT_FIRST_NAME      CHAR(10)                                  ,
          PATIENT_LAST_NAME       CHAR(15)                                  ,
          PATIENT_BIRTH_DATE      DATE                                      ,
          PATIENT_SEX             CHAR(01)                                  ,
          RELATION_TO_EMPLOYEE    CHAR(10)                                  ,
          EMP_ID                  UNSIGNED NUMERIC(4,0)             NOT NULL,
          PLAN_CODE               CHAR(03)                                  ,
          HOSPITAL_NAME           CHAR(25)                                  ,
          HOSPITAL_STREET         CHAR(20)                                  ,
          HOSPITAL_CITY           CHAR(15)                                  ,
          HOSPITAL_STATE          CHAR(2)                                   ,
          HOSPITAL_ZIP_FIRST_FIVE CHAR(05)                                  ,
          HOSPITAL_ZIP_LAST_FOUR  CHAR(04)                                  ,
          ADMIT_DATE              DATE                                      ,
          DISCHARGE_DATE          DATE                                      ,
          DIAGNOSIS               CHAR(120)                                 ,
          WARD_DAYS               UNSIGNED NUMERIC(5,0)                     ,
          WARD_RATE               DECIMAL(9,2)                              ,
          WARD_TOTAL              DECIMAL(9,2)                              ,
          SEMI_DAYS               UNSIGNED NUMERIC(5,0)                     ,
          SEMI_RATE               DECIMAL(9,2)                              ,
          SEMI_TOTAL              DECIMAL(9,2)                              ,
          DELIVERY_COST           DECIMAL(9,2)                              ,
          ANESTHESIA_COST         DECIMAL(9,2)                              ,
          LAB_COST                DECIMAL(9,2)                              )
       IN SQLDEMO.INS_DEMO_REGION;
 CREATE TABLE INSURANCE_PLAN
        (PLAN_CODE                CHAR(03)                          NOT NULL,
         COMP_NAME                CHAR(40)                          NOT NULL,
         STREET                   CHAR(20)                                  ,
         CITY                     CHAR(15)                          NOT NULL,
         STATE                    CHAR(02)                          NOT NULL,
         ZIP_FIRST_FIVE           CHAR(05)                                  ,
         ZIP_LAST_FOUR            CHAR(04)                                  ,
         PHONE                    CHAR(10)                          NOT NULL,
         GROUP_NUMBER             UNSIGNED NUMERIC(6,0)             NOT NULL,
         DEDUCT                   UNSIGNED DECIMAL(9,2)                     ,
         MAX_LIFE_BENEFIT         UNSIGNED DECIMAL(9,2)                     ,
         FAMILY_COST              UNSIGNED DECIMAL(9,2)                     ,
         DEP_COST                 UNSIGNED DECIMAL(9,2)                     )
    IN SQLDEMO.INS_DEMO_REGION;
  CREATE TABLE JOB
         (JOB_ID                  UNSIGNED NUMERIC(4,0)             NOT NULL,
          JOB_TITLE               CHAR(20)                          NOT NULL,
          MIN_RATE                UNSIGNED DECIMAL(10,2)                    ,
          MAX_RATE                UNSIGNED DECIMAL(10,2)                    ,
          SALARY_IND              CHAR(01)                                  ,
          NUM_OF_POSITIONS        UNSIGNED DECIMAL(3,0)                     ,
          NUM_OPEN                UNSIGNED DECIMAL(3,0)                     ,
          EFF_DATE                DATE                                      ,
          JOB_DESC_LINE_1         VARCHAR(60)                               ,
          JOB_DESC_LINE_2         VARCHAR(60)                               ,
          REQUIREMENTS            VARCHAR(120)                              ,
          HOURLY_RATE             UNSIGNED DECIMAL(7,2)                     ,
          SALARY_AMOUNT           UNSIGNED DECIMAL(10,2)                    ,
          BONUS_PERCENT           UNSIGNED DECIMAL(7,3)                     ,
          COMM_PERCENT            UNSIGNED DECIMAL(7,3)                     ,
          OVERTIME_RATE           UNSIGNED DECIMAL(5,2)                     )
    IN SQLDEMO.ORG_DEMO_REGION;
 
  CREATE TABLE EXPERTISE
         (EMP_ID                  UNSIGNED NUMERIC(4,0)             NOT NULL,
          SKILL_CODE              UNSIGNED NUMERIC(4,0)             NOT NULL,
          SKILL_LEVEL             CHAR(02)                                  ,
          EXP_DATE                DATE                                      ,
     CHECK ( SKILL_LEVEL IN ('01', '02', '03', '04', '05') ) )
   IN PROJSEG.EMP_DEMO_REGION;
  CREATE TABLE NON_HOSP_CLAIM
         (CLAIM_DATE              DATE                              NOT NULL,
          PATIENT_FIRST_NAME      CHAR(10)                                  ,
          PATIENT_LAST_NAME       CHAR(15)                                  ,
          PATIENT_BIRTH_DATE      DATE                                      ,
          PATIENT_SEX             CHAR(01)                                  ,
          RELATION_TO_EMPLOYEE    CHAR(10)                                  ,
         EMP_ID                  UNSIGNED NUMERIC(4,0)             NOT NULL,
          PLAN_CODE               CHAR(03)                                  ,
          PHYS_FIRST_NAME         CHAR(10)                                  ,
          PHYS_LAST_NAME          CHAR(15)                                  ,
          PHYS_STREET             CHAR(20)                                  ,
          PHYS_CITE               CHAR(15)                                  ,
          PHYS_STATE              CHAR(2)                                   ,
          PHYS_ZIP_FIRST_FIVE     CHAR(05)                                  ,
          PHYS_ZIP_LAST_FOUR      CHAR(04)                                  ,
          PHYSICIAN_ID            UNSIGNED NUMERIC(6,0)                     ,
          DIAGNOSIS               VARCHAR(120)                              )
       IN SQLDEMO.INS_DEMO_REGION;
 
  CREATE TABLE NON_HOSP_PROCEDURE
         (EMP_ID                  UNSIGNED NUMERIC(4,0)             NOT NULL,
          PLAN_CODE               CHAR(03)                          NOT NULL,
          SERVICE_DATE            DATE                              NOT NULL,
          PROCEDURE_CODE          UNSIGNED NUMERIC(4,0)             NOT NULL,
          FEE                     DECIMAL(9,2)                              ,
          DESCRIPTION             VARCHAR(60)                               )
       IN SQLDEMO.INS_DEMO_REGION;
 
  CREATE TABLE OFFICE
         (OFFICE_CODE             UNSIGNED NUMERIC(4,0)             NOT NULL,
          STREET                  CHAR(20)                                  ,
          CITY                    CHAR(15)                                  ,
          STATE                   CHAR(2)                                   ,
          ZIP_FIRST_FIVE          CHAR(05)                                  ,
          ZIP_LAST_FOUR           CHAR(04)                                  ,
          SPEED_DIAL              CHAR(03)                                  ,
          AREA_CODE               CHAR(03)                                  ,
          PHONE_1                 UNSIGNED NUMERIC(7,0)                     ,
          PHONE_2                 UNSIGNED NUMERIC(7,0)                     ,
          PHONE_3                 UNSIGNED NUMERIC(7,0)                     )
     IN SQLDEMO.ORG_DEMO_REGION;
  CREATE TABLE PROJECT
         (PROJECT_CODE            UNSIGNED NUMERIC(4,0)             NOT NULL,
          DESCRIPTION             CHAR(40)                                  ,
          EST_BEGIN_DATE          DATE                                      ,
          ACT_BEGIN_DATE          DATE                                      ,
          EST_END_DATE            DATE                                      ,
          ACT_END_DATE            DATE                                      ,
          LDR_EMP_ID              UNSIGNED NUMERIC(4,0)                     )
     IN SQLDEMO.EMP_DEMO_REGION;
 
  CREATE TABLE SKILL
         (SKILL_CODE              UNSIGNED NUMERIC(4,0)             NOT NULL,
          SKILL_NAME              CHAR(20)                          NOT NULL,
          SKILL_DESC              VARCHAR(60)                               )
    IN PROJSEG.ORG_DEMO_REGION;
 
  CREATE TABLE WORKER
         (PROJECT_CODE            UNSIGNED NUMERIC(4,0)             NOT NULL,
          EMP_ID                  UNSIGNED NUMERIC(4,0)             NOT NULL,
          BEGIN_DATE              DATE                                      ,
          END_DATE                DATE                                      )
     IN SQLDEMO.EMP_DEMO_REGION;

CALC Key Statements

  CREATE UNIQUE CALC KEY ON DEPARTMENT (DEPT_ID);
 
  CREATE UNIQUE CALC KEY ON EMPLOYEE (EMP_ID);
 
  CREATE UNIQUE CALC KEY ON INSURANCE_PLAN (PLAN_CODE);
 
  CREATE UNIQUE CALC KEY ON JOB (JOB_ID);
 
  CREATE UNIQUE CALC KEY ON SKILL (SKILL_CODE);
 
  CREATE UNIQUE CALC KEY ON PROJECT (PROJECT_CODE);
 
  CREATE UNIQUE CALC KEY ON OFFICE (OFFICE_CODE);

Index Statements

 -----------------------------------------------------------------------------
 -- Create unique indexes
 -----------------------------------------------------------------------------

  CREATE UNIQUE INDEX SKILL_NAME_NDX ON SKILL(SKILL_NAME);
 
  CREATE UNIQUE INDEX JOB_TITLE_NDX ON JOB(JOB_TITLE);
 
  CREATE UNIQUE INDEX COV_NDX ON COVERAGE (PLAN_CODE, COVERAGE_TYPE, EMP_ID);
 -----------------------------------------------------------------------------
 -- Create nonunique indexes
 -----------------------------------------------------------------------------

  CREATE INDEX LNAME_NDX ON EMPLOYEE(EMP_LAST_NAME, EMP_FIRST_NAME)
         IN SQLDEMO.INDXAREA;

Constraint Statements

 ----------------------------------------------------------------------
 -- Create referential constraints
 ----------------------------------------------------------------------

   CREATE CONSTRAINT EMP_COVERAGE
           COVERAGE  (EMP_ID) REFERENCES
           EMPLOYEE  (EMP_ID)
               UNLINKED CLUSTERED;
 
   CREATE CONSTRAINT DEPT_EMPLOYEE
           EMPLOYEE   (DEPT_ID)  REFERENCES
           DEPARTMENT (DEPT_ID)
               LINKED INDEX
               ORDER BY (EMP_LNAME, EMP_FNAME);
 
   CREATE CONSTRAINT MANAGES_REPORTS_TO
           EMPLOYEE   (SUPR_EMP_ID)  REFERENCES
           EMPLOYEE   (EMP_ID)
               LINKED INDEX;
 
   CREATE CONSTRAINT SKILL_EXPERTISE
           EXPERTISE  (SKILL_CODE)  REFERENCES
           SKILL      (SKILL_CODE)
               LINKED INDEX
               ORDER BY (SKILL_LEVEL DESC);
 
   CREATE CONSTRAINT EMP_EMPOSITION
           EMPOSITION  (EMP_ID)  REFERENCES
           EMPLOYEE    (EMP_ID)
               LINKED CLUSTERED
               ORDER BY (START_DATE DESC) UNIQUE;
 
   CREATE CONSTRAINT JOB_EMPOSITION
           EMPOSITION  (JOB_ID)  REFERENCES
           JOB         (JOB_ID)
               LINKED INDEX;
 
   CREATE CONSTRAINT OFFICE_EMPLOYEE
           EMPLOYEE  (OFFICE_CODE)  REFERENCES
           OFFICE    (OFFICE_CODE)
               LINKED INDEX
               ORDER BY (EMP_LNAME, EMP_FNAME);
 
   CREATE CONSTRAINT EMP_EXPERTISE
           EXPERTISE  (EMP_ID)  REFERENCES
           EMPLOYEE   (EMP_ID)
               LINKED CLUSTERED
               ORDER BY (SKILL_CODE DESC) UNIQUE;

   CREATE CONSTRAINT EMP_PROJECT
           EMPLOYEE   (LDR_EMP_ID)  REFERENCES
           PROJECT    (EMP_ID)
               LINKED INDEX;
 
   CREATE CONSTRAINT PROJECT_WORKER
           WORKER  (PROJECT_CODE) REFERENCES
           PROJECT (PROJECT_CODE)
               LINKED CLUSTERED;
 
   CREATE CONSTRAINT EMP_WORKER
           WORKER   (EMP_ID)  REFERENCES
           EMPLOYEE (EMP_ID)
               LINKED INDEX;
 
   CREATE CONSTRAINT COVERAGE_NHC
           NON_HOSP_CLAIM  (EMP_ID, PLAN_CODE)  REFERENCES
           COVERAGE        (EMP_ID, PLAN_CODE)
               LINKED CLUSTERED;
 
   CREATE CONSTRAINT COVERAGE_HC
           HOSPITAL_CLAIM  (EMP_ID, PLAN_CODE)  REFERENCES
           COVERAGE        (EMP_ID, PLAN_CODE)
               LINKED CLUSTERED;
 
   CREATE CONSTRAINT COVERAGE_DC
           DENTAL_CLAIM  (EMP_ID, PLAN_CODE)  REFERENCES
           COVERAGE      (EMP_ID, PLAN_CODE)
               LINKED CLUSTERED;
 
   CREATE CONSTRAINT DCLAIM_PROC
           DENTAL_PROCEDURE  (DENTAL_CLAIM_ID)  REFERENCES
           DENTAL_CLAIM      (DENTAL_CLAIM_ID)
               LINKED CLUSTERED;
 
   CREATE CONSTRAINT NHCLAIM_PROC
           NON_HOSP_PROCEDURE  (NON_HOSP_CLAIM_ID)  REFERENCES
           NON_HOSP_CLAIM      (NON_HOSP_CLAIM_ID)
               LINKED CLUSTERED;

Remove Default Indexes

   ALTER TABLE COVERAGE
        DROP DEFAULT INDEX;
 
   ALTER TABLE DEPARTMENT
        DROP DEFAULT INDEX;
 
   ALTER TABLE EMPLOYEE
        DROP DEFAULT INDEX;
 
   ALTER TABLE INSURANCE_PLAN
        DROP DEFAULT INDEX;
 
   ALTER TABLE EMPOSITION
        DROP DEFAULT INDEX;
 
   ALTER TABLE EXPERTISE
        DROP DEFAULT INDEX;
 
   ALTER TABLE SALARY_GRADE
        DROP DEFAULT INDEX;
 
   ALTER TABLE PROJECT
        DROP DEFAULT INDEX;
 
   ALTER TABLE WORKER
        DROP DEFAULT INDEX;
 
   ALTER TABLE PHONE
        DROP DEFAULT INDEX;
 
 
  ALTER TABLE DENTAL_PROCEDURE
        DROP DEFAULT INDEX;
 
   ALTER TABLE NON_HOSP_PROCEDURE
        DROP DEFAULT INDEX;
   ALTER TABLE OFFICE
        DROP DEFAULT INDEX;
 
   ALTER TABLE SKILL
        DROP DEFAULT INDEX;
 
   ALTER TABLE DENTAL_CLAIM
        DROP DEFAULT INDEX;
 
   ALTER TABLE HOSPITAL_CLAIM
        DROP DEFAULT INDEX;
 
   ALTER TABLE NON_HOSP_CLAIM
        DROP DEFAULT INDEX;