BC remote Oracle DBA - Call (800) 766-1884  
Oracle Consulting Oracle Training Development

Remote DBA

Remote DBA Plans  

Remote DBA Service

Remote DBA RAC

   
Remote DBA Oracle Home
Remote DBA Oracle Training
Remote DBA SQL Tuning Consulting
Remote DBA Oracle Tuning Consulting
Remote DBA Data Warehouse Consulting
Remote DBA Oracle Project Management
Remote DBA Oracle Security Assessment
Remote DBA Unix Consulting
Burleson Books
Burleson Articles
Burleson Web Courses
Burleson Qualifications
Oracle Links
Remote DBA Oracle Monitoring
Remote DBA Support Benefits
Remote DBA Plans & Prices
Our Automation Strategy
What We Monitor
Oracle Apps Support
Print Our Brochure
Contact Us (e-mail)
Oracle Job Opportunities
Oracle Consulting Prices





   

 

 

 

Remote DBA services

Remote DBA Support

Remote DBA RAC

Remote DBA Reasons

Remote Oracle Tuning

Remote DBA Links

Oracle DBA Support

Oracle DBA Forum

Oracle Disaster

Oracle Training

Oracle Tuning

Oracle Training

 Remote DBA SQL Server

Remote MSSQL Consulting

Oracle DBA Hosting

Oracle License Negotiation

 

 


 

 

 

 

 
 

EnterpriseDB: Data Model

Oracle Tips by Burleson Consulting
 

The data model for TimeTraker is a relational model taking advantage of database provided referential integrity.  Figure 9.2 provides the TimeTraker Entity Relationship Diagram.

Figure 9.2: TimeTraker Entity Relationship Diagram

Data Dictionary

The data in Table 9.1 describes each of the tables in the data model in figure 9.2 and table 9.2 provides definitions for each column in each table.

TABLE

DESCRIPTION

TT_SCHEDULES

Work schedules such as "Monday through Friday"

TT_XML_INTERFACE

Interface for external programs such as card swipers to drop XML documents containing user time information

TT_TASKS

Defined work tasks

TT_PROJECTS

Defined work projects

TT_RESOURCES

Defined resources that will be assigned to tasks

TT_PROJECTS_TASKS

A definition of tasks in projects

TT_TASKS_RESOURCES

A definition of resources assigned to tasks

TT_TASK_ITEM_UPDATE

A record of all time worked on all tasks

TT_TASK_DEPENDS

Dependencies between tasks

TT_CALENDAR

Business calendar for information.  Includes a business day definition as well as holidays.

Table 9.1: All TimeTraker Tables

COLUMN

DESCRIPTION

TT_CALENDAR
DATE_PK                                         

Calendar Primary Key, Date Only, No Timestamp

QUARTER_IND                                     

Quarter as defined by business (1,2,3,4)

HOLIDAY_FLAG                                

Is this date a holiday

BUSINESS_DAY_FLAG                               

Is this date a business day

TT_PROJECTS
PROJECT_ID                                      

Project Primary Key, tt_projects_seq

PROJECT_NAME                                    

Name of the project

PROJECT_DESC                                    

Description of the project

ACTIVE_FLAG                                     

Is this project still active

PRIORITY                                  

Priority of the task in this project

ESTIMATED_HOURS                          

Estimated Hours to complete this task

PROJECT_TASK_NAME

Name of this task in this project at this step

FILE_ATTACHMENTS_FLAG                     

Are there any attachments

ACTIVE_FLAG                                        

Is this an active record?

TT_RESOURCES

RESOURCE_ID                                    

PK

 

SCHEDULE_ID                                     

FK to resource schedule

RESOURCE_NAME                                  

Resources Name

ALLOCATION_PCT                                 

 

What percentage of the day can this resource be allocated to tasks, informational only

HOURS_PER_DAY                                  

What hours per day is this resource available, informational only

JOB                                             

What is this resources primary job, informational only

ASSIGNABLE_FLAG                                 

Can this resource be assigned to tasks?

XML_FEED_USER_ID                               

What is this resources ID when receiving records from external programs?

ACTIVE_FLAG                                    

Is this an active record?

TT_SCHEDULES
SCHEDULE_ID                                    
PK

 

SCHEDULE_TYPE                                  

Name of the schedule

MONDAY                                         

Y/N Flag

TUESDAY                                        

Y/N Flag

WEDNESDAY       

Y/N Flag

THURSDAY                                       

Y/N Flag

FRIDAY                                         

Y/N Flag

SATURDAY                                       

Y/N Flag

SUNDAY                                         

Y/N Flag

TT_TASKS
TASK_ID                                            
PK

 

TASK_NAME                                          

Name of the task

TASK_DESC                                          

Description of the task

ACTIVE_FLAG                                         

Is this an active record?

TT_TASKS_RESOURCES
TASK_ID                                  
PK
RESOURCE_ID                              
PK

 

ACTIVE_FLAG                                        

Is this an active record?

PROJECT_ID
PK
TASK_ID
PK
TT_TASK_DEPENDS

 

DEPEND_PROJECT_ID                           

Dependant project

DEPEND_TASK_ID                              

Dependant task

TT_TASK_ITEM_UPDATE
TASK_ID
PK

RESOURCE_ID
PK 

 

ITEM_DATE                               

Date of work

HOURS_WORKED                            

Number of hours worked

ACTIVE_FLAG                              

Is this an active record?

TT_XML_INTERFACE
INTERFACE_ID                               
PK

 

DATE_RECEIVED                              

Date record was uploaded

XML_DATA                                   

XML Document describing a task item update

Table 9.2: All TimeTraker Column

The Application

The application is based around a set of packages.  Each package operates on a specific area of the application.  There are six packages and no stand-alone procedures or functions.  The table in 9.3 describes each package.

PACKAGE

DESCRIPTION

TT_CALENDAR_ADMIN

PM and Admin, manage the calendar

TT_MANAGE_PROJECTS

PM, add and deactivate projects and tasks

TT_MANAGE_RESOURCES

PM, add and deactivate resources

TT_MANAGE_USER_RECORDS

User, add time worked

TT_REPORT_OUTPUT

Everyone, run reports

TT_USER_ADMIN

Admin only, add system users

Table 9.3: TimeTraker Packages

Table 9.4 lists all of the procedures and functions in the application.

PROCEDURES AND FUNCTIONS

DESCRIPTION

TT_CALENDAR_ADMIN
CHANGE_BUSINESS_DAY_FLAG

Change a calendar entry and set or unset the business day flag

TT_CALENDAR_ADMIN
CHANGE_HOLIDAY_ FLAG

Change a calendar entry by setting or unsetting the holiday flag

TT_CALENDAR_ADMIN
GET_SCHEDULE_ID

Get a schedule ID, used internally

TT_CALENDAR_ADMIN
GET_SCHEDULE_TYPE

Get a schedule type

TT_CALENDAR_ADMIN
POPULATE_ CALENDAR

Auto-populate the calendar for a range of dates

TT_CALENDAR_ADMIN
SCHEDULE

Add or change a schedule

TT_MANAGE_PROJECTS
ASSIGN_RESOURCE_TO_ TASK

Associate a resource to a task

TT_MANAGE_PROJECTS
ASSIGN_TASK_TO_ PROJECT

Associate a task to a project

TT_MANAGE_PROJECTS
CREATE_ITEM_ DEPENDANCIES

Relate projects and tasks to other projects and tasks

TT_MANAGE_PROJECTS
CREATE_PROJECT

Create a new project

TT_MANAGE_PROJECTS
CREATE_TASKS

Create a new task

TT_MANAGE_PROJECTS
DEACTIVATE_TASK_ FROM_PROJECT

Set a task to inactive

TT_MANAGE_PROJECTS
GET_PROJECT_ID

Retrieve a project primary key, used internally

TT_MANAGE_PROJECTS
GET_TASK_ID

Retrieve a task primary key, used internally

TT_MANAGE_PROJECTS
REACTIVATE_TASK_TO_ PROJECT

Reactivate an inactive task

TT_MANAGE_ RESOURCES
ADD_RESOURCE

Create a new resource, this is not a system user just a resource to be assigned to tasks

TT_MANAGE_ RESOURCES
ALTER_RESOURCE

Modify a resource

TT_MANAGE_ RESOURCES
DELETE_RESOURCE

Inactivate a resource

TT_MANAGE_ RESOURCES
GET_RESOURCE_ID

Retrieve a resource ID, used internally

TT_MANAGE_USER_ RECORDS
ADD_NEW_ITEM_UPDATE

Update hours worked

TT_MANAGE_USER_ RECORDS
ADD_XML_RECORD

Add an interface XML document

TT_MANAGE_USER_ RECORDS
PROCESS_XML_DATA

Process the XML Interface

TT_REPORT_OUTPUT
HOURS_WORKED_BY_ RESOURCES

A report listing all of the hours worked by all resources

TT_REPORT_OUTPUT
PROJECT_RESOURCES

A list of all resources assigned to projects

TT_REPORT_OUTPUT
PROJECT_TASKS

A list of all tasks and all projects

TT_REPORT_OUTPUT
PROJ_HOURS_REMAINING

A listing of the number of hours remaining in all projects

TT_REPORT_OUTPUT
PROJ_HOURS_REMAIN_ BY_RESOURCE

A listing of the number of hours remaining in all projects by the hours worked by resources assigned to that project

TT_USER_ADMIN
CHANGE_USER

Modify an existing database user

TT_USER_ADMIN
CREATE_USER

Add a new database user

TT_USER_ADMIN
DROP_USER

Drop a user

Table 9.4: TimeTraker Procedures and Functions

All source code for the Oracle version of TimeTraker can be downloaded from the code depot.  The source code includes creating the Traker user, granting the appropriate permission and creating the entire schema.  Code files for compiling in Oracle begin with the word oracle and should be run in the order below:

* chap9_oracle_create_traker_schema

* chap9_oracle_create_traker_db_objects.sql

* chap9_oracle_traker_views.sql

* chap9_oracle_traker_packages.sql

* chap9_oracle_traker_grants_synonyms.sql

* chap9_oracle_traker_sample_data.sql

* chap9_oracle_create_traker_schema.sql

prompt conn sys@traker as sysRemote DBA
create tablespace traker_tbs datafile 'c:\oracle\oradata\traker_tbs.dbf' size 25M
  reuse autoextend on maxsize unlimited;

create user traker identified by traker
  default tablespace traker_tbs
  quota unlimited on traker_tbs;

grant Remote DBA to traker;
grant connect, resource to traker with admin option;
grant select on Remote DBA_role_privs to traker;
grant create user, drop user, alter user to traker;

~production directive:  code_file:  chap9_oracle_create_traker_db_objects.sql

CREATE ROLE tt_user_role;
CREATE ROLE tt_pm_role;
CREATE ROLE tt_admin_role;

CREATE SEQUENCE tt_general_sequence;

CREATE DIRECTORY report_output AS 'c:\temp';

Prompt Table TT_SCHEDULES;

CREATE TABLE TRAKER.TT_SCHEDULES
(
  SCHEDULE_ID    NUMBER(12)                     NOT NULL,
  SCHEDULE_TYPE  VARCHAR2(10),
  MONDAY         VARCHAR2(1),
  TUESDAY        VARCHAR2(1),
  WEDNESDAY      VARCHAR2(1),
  THURSDAY       VARCHAR2(1),
  FRIDAY         VARCHAR2(1),
  SATURDAY       VARCHAR2(1),
  SUNDAY         VARCHAR2(1),

 
PRIMARY KEY
 (SCHEDULE_ID),
  CONSTRAINT TT_SCHEDULES_UK1
 UNIQUE (SCHEDULE_TYPE)
); 

Prompt Table TT_XML_INTERFACE;

CREATE TABLE TRAKER.TT_XML_INTERFACE
(
  INTERFACE_ID   NUMBER(12)                     NOT NULL,
  DATE_RECEIVED  TIMESTAMP(6),
  XML_DATA       SYS.XMLTYPE,
  PRIMARY KEY
 (INTERFACE_ID)
);
 

Prompt Table TT_TASKS;

CREATE TABLE TRAKER.TT_TASKS
(
  TASK_ID      NUMBER(12)                       NOT NULL,
  TASK_NAME    VARCHAR2(100),
  TASK_DESC    VARCHAR2(4000),
  ACTIVE_FLAG  VARCHAR2(1),
  PRIMARY KEY
 (TASK_ID),

  CONSTRAINT TT_TASKS_UK1

 UNIQUE (TASK_NAME)
);

Prompt Table TT_PROJECTS;

CREATE TABLE TRAKER.TT_PROJECTS
(
  PROJECT_ID    NUMBER(12)                      NOT NULL,
  PROJECT_NAME  VARCHAR2(100),
  PROJECT_DESC  VARCHAR2(4000),
  ACTIVE_FLAG   VARCHAR2(1),
  PRIMARY KEY
 (PROJECT_ID),
  CONSTRAINT TT_PROJECTS_UK1
 UNIQUE (PROJECT_NAME)
);

Prompt Table TT_CALENDAR;

CREATE TABLE TRAKER.TT_CALENDAR
(
  DATE_PK            DATE                       NOT NULL,
  QUARTER_IND        NUMBER(2),
  HOLIDAY_FLAG       VARCHAR2(1),
  BUSINESS_DAY_FLAG  VARCHAR2(1),
  PRIMARY KEY
 (DATE_PK)
);

Prompt Table TT_RESOURCES;

CREATE TABLE TRAKER.TT_RESOURCES
(
  RESOURCE_ID       NUMBER(12)                  NOT NULL,
  SCHEDULE_ID       NUMBER(12)                  NOT NULL,
  RESOURCE_NAME     VARCHAR2(100),
  ALLOCATION_PCT    NUMBER(3),
  HOURS_PER_DAY     NUMBER(6,4),
  JOB               VARCHAR2(100),
  ASSIGNABLE_FLAG   VARCHAR2(1),
  XML_FEED_USER_ID  VARCHAR2(100),
  ACTIVE_FLAG       VARCHAR2(1),
  PRIMARY KEY
 (RESOURCE_ID),

 
CONSTRAINT TT_RESOURCES_UK1
 UNIQUE (RESOURCE_NAME),
  CONSTRAINT TT_RESOURCES_UK2
 UNIQUE (XML_FEED_USER_ID),
  FOREIGN KEY (SCHEDULE_ID)
 REFERENCES TRAKER.TT_SCHEDULES (SCHEDULE_ID)
);

Prompt Table TT_PROJECTS_TASKS;

CREATE TABLE TRAKER.TT_PROJECTS_TASKS
(
  PROJECT_ID         NUMBER(12)                 NOT NULL,
  TASK_ID            NUMBER(12)                 NOT NULL,
  PRIORITY           NUMBER(5),
  ESTIMATED_HOURS    NUMBER(12),
  PROJECT_TASK_NAME  VARCHAR2(100),
  ACTIVE_FLAG        VARCHAR2(1),
  PRIMARY KEY
 (PROJECT_ID, TASK_ID),
  FOREIGN KEY (TASK_ID)
 REFERENCES TRAKER.TT_TASKS (TASK_ID),

 
FOREIGN KEY (PROJECT_ID)
 REFERENCES TRAKER.TT_PROJECTS (PROJECT_ID)
);

Prompt Table TT_TASKS_RESOURCES;

CREATE TABLE TRAKER.TT_TASKS_RESOURCES
(
  TASK_ID      NUMBER(12)                       NOT NULL,
  RESOURCE_ID  NUMBER(12)                       NOT NULL,
  ACTIVE_FLAG  VARCHAR2(1),
  PRIMARY KEY
 (TASK_ID, RESOURCE_ID),
  FOREIGN KEY (RESOURCE_ID)
 REFERENCES TRAKER.TT_RESOURCES (RESOURCE_ID),
  FOREIGN KEY (TASK_ID)
 REFERENCES TRAKER.TT_TASKS (TASK_ID)
);

Prompt Table TT_TASK_ITEM_UPDATE;

CREATE TABLE TRAKER.TT_TASK_ITEM_UPDATE
(
  TASK_ID       NUMBER(12)                      NOT NULL,
  RESOURCE_ID   NUMBER(12)                      NOT NULL,
  ITEM_DATE     DATE                            NOT NULL,
  HOURS_WORKED  NUMBER(6,4),
  ACTIVE_FLAG   VARCHAR2(1),
  PRIMARY KEY
 (TASK_ID, RESOURCE_ID, ITEM_DATE),
  FOREIGN KEY (TASK_ID, RESOURCE_ID)

 
REFERENCES TRAKER.TT_TASKS_RESOURCES (TASK_ID,RESOURCE_ID)
);

 

Prompt Table TT_TASK_DEPENDS;

CREATE TABLE TRAKER.TT_TASK_DEPENDS
(
  PROJECT_ID         NUMBER(12)                 NOT NULL,
  TASK_ID            NUMBER(12)                 NOT NULL,
  DEPEND_PROJECT_ID  NUMBER(12)                 NOT NULL,
  DEPEND_TASK_ID     NUMBER(12)                 NOT NULL,
  PRIMARY KEY
 (PROJECT_ID, TASK_ID),
  FOREIGN KEY (DEPEND_PROJECT_ID, DEPEND_TASK_ID)
 REFERENCES TRAKER.TT_PROJECTS_TASKS (PROJECT_ID,TASK_ID),
  FOREIGN KEY (PROJECT_ID, TASK_ID)
 REFERENCES TRAKER.TT_PROJECTS_TASKS (PROJECT_ID,TASK_ID)
);

Prompt Index TT_CALENDAR_QTR_NDEX;

CREATE INDEX TRAKER.TT_CALENDAR_QTR_NDEX ON TRAKER.TT_CALENDAR
(QUARTER_IND);

Prompt Index TT_CALENDAR_HOL_NDX;

CREATE INDEX TRAKER.TT_CALENDAR_HOL_NDX ON TRAKER.TT_CALENDAR
(HOLIDAY_FLAG);


Prompt Index TT_CALENDAR_BUS_NDX;

CREATE INDEX TRAKER.TT_CALENDAR_BUS_NDX ON TRAKER.TT_CALENDAR
(BUSINESS_DAY_FLAG);

Prompt Index TT_PROJECTS_TASKS_NAME_NDX;

CREATE UNIQUE INDEX TRAKER.TT_PROJECTS_TASKS_NAME_NDX ON TRAKER.TT_PROJECTS_TASKS
(PROJECT_TASK_NAME, ACTIVE_FLAG);

Prompt Index TT_TASK_DEPENDS_ALL_NDX;

CREATE INDEX TRAKER.TT_TASK_DEPENDS_ALL_NDX ON TRAKER.TT_TASK_DEPENDS
(DEPEND_PROJECT_ID, DEPEND_TASK_ID, PROJECT_ID, TASK_ID);

Prompt Index TT_TASK_ITEM_UPDATE_RES_NDX;

CREATE INDEX TRAKER.TT_TASK_ITEM_UPDATE_RES_NDX ON TRAKER.TT_TASK_ITEM_UPDATE
(RESOURCE_ID);

Prompt Index TT_XML_INTERFACE_DT_NDX;

CREATE INDEX TRAKER.TT_XML_INTERFACE_DT_NDX ON TRAKER.TT_XML_INTERFACE
(DATE_RECEIVED, INTERFACE_ID);




This is an excerpt from the book "EnterpriseDB: The Definitive Reference" by Rampant TechPress.


Expert Remote DBA

BC is America's oldest and largest Remote DBA Oracle support provider.  Get real Remote DBA experts, call
BC Remote DBA today.

 

 

Remote DBA Service
 

Oracle Tuning Book

 

Advance SQL Tuning Book 

BC Oracle support

Oracle books by Rampant

Oracle monitoring software

 

 

 

 

 

 

BC Remote Oracle Support

Remote DBA

Remote DBA Services

Copyright © 1996 -  2013 by Burleson. All rights reserved.

Oracle® is the registered trademark of Oracle Corporation.



Hit Counter