You are here: Chapter 10: Database Administration > Table Design and Indexes

Table Design and Indexes

All of the SQL-based versions of FootPrints use the Perl DBI/DBD modules to access the database. Windows versions no longer use fpService.exe for database access. This means that all database connectivity is done directly within each Perl script without having to call any external programs as was done in earlier (pre 6.5) Windows versions of FootPrints. The database design was always the same on Windows and Unix/Linux versions, but now the method of accessing the data is the same on both as well. A single user is created in the DBMS which FootPrints uses for all connections.

FootPrints Tables

MASTERx

Column Name

Datatype

Comments

mrID

int

Unique incremental ticket #

mrREF_TO_AB

varchar

Either an ABMASTERy.abID that created this ticket, OR an LDAP dn

mrREF_TO_MR

varchar

A MASTERx.mrID that this ticket is possibly "linked" to - used for subtasks, global issues, etc.

mrTITLE

varchar

Ticket summary / title

mrPRIORITY

int

Ticket Priority, 1..100

mrSTATUS

char

Status of Ticket

mrDESCRIPTION

longvarchar

The text of the most current description, starts with a date/time/user stamp

mrASSIGNEES

varchar

Assignees (FootPrints usernames) of ticket, separated by spaces

mrATTACHMENTS

varchar

File attachment filenames separated by new lines

mrUPDATEDATE

timestamp

Last edit date

mrSUBMITTER

char

Original creator of ticket

mrSUBMITDATE

timestamp

Original creation date of ticket

mrPOPULARITY

int

For solutions only - number of votes that it was helpful

mrURGENT

int

0 or 1 denoting if this ticket is urgent

mrESCALATEDBY

varchar

This column is used for certain escalations that are only allowed to act once, ever, on an issue. If one of these escalations run, the unique escalation ID is added to this field. It is possible for this column to not exist, it is added only when it is needed.

mrALLDESCRIPTIONS

longvarchar

This column is added after upgrading to FootPrints 6.5+ and running MR60to65.pl. It is a single field which contains the current description and all of the appended descriptions. It is never displayed, and exists only to be searched on. Searching on this field allows FootPrints to avoid joining the MASTERx and MASTERx_DESCRIPTIONS tables when a search on all descriptions is needed. This can improve performance on large databases where table joins are very expensive.

mrREF_TO_MRX

varchar

This contains overflow from mrREF_TO_MR if the data cannot all fit in the one column. It is possible for this column to not exist, it is added only when it is needed. It is a varchar(4000) on Oracle and Postgres, a clob(4000) on DB2, mediumtext on MySQL, and varchar(254) on everything else.

mrTIMESTAMP

timestamp

Microsoft SQL Server only, this column improves the performance of full text indexing.

mrUNASSIGNED

int

If this column is used, searches on unassigned can be done faster. This is set to 1 if the issue is not assigned to anyone.

custom project fields

n/a

Named after actual field name, with correct data type.

 

MASTERx_HISTORY

Column Name

Datatype

Comments

mrID

int

The MASTERx.mrID that this pertains to

mrGENERATION

int

Generation of this mrHISTORY

mrHISTORY

varchar

timestamp user comment

mrCOMMENT

varchar

User comment

MASTERx_DESCRIPTIONS

Column Name

Datatype

Comments

mrID

int

The MASTERx.mrID that this pertains to

mrGENERATION

int

Generation of this description: Range (1..max) where max is the most current of this set. MASTERx.mrDESCRIPTION is always the most current description.

mrDESCRIPTION

longvarchar

The text of the description, starts with a date/time/user stamp

MASTERx_ABDATA

Column Name

Datatype

Comments

mrID

int

The MASTERx.mrID that this pertains to

Last__bName

varchar

Last name of a contact

First__bName

varchar

First name of a contact

Email__bAddress

varchar

Email address of a contact

custom address book fields

n/a

The above first three custom fields are auto-created on table creation. The rest of the address book fields will follow, named after the actual field name, with the correct data type.

MASTERx_TIMETRACKING

Column Name

Datatype

Comments

mrID

int

The MASTERx.mrID that this pertains to

mrGENERATION

int

The time-tracking record number, ie; mrID 5 might have 23 time tracking records each with a unique RECNO for mrID 5..

mrTIMESPENT

varchar

Time spent in minutes, stored as 120m for 2 hrs.

mrRATE

decimal

The money per hour for this time tracking record

mrTIMEDATE

datetime

Time and Date stamp

mrTIMEUSER

varchar

User stamp

mrRATEDESC

varchar

Time-tracking rate description


 

FootPrints Change Management Tables

The following set of MASTERx_APPROVAL tables only exist if Change Management is being used for the given project x.

MASTERx_APPROVALSTATES

Column Name

Datatype

Comments

mrID

int

The MASTERx.mrID that this pertains to

mrPROCID

int

Approval Process ID

mrPHASEID

int

Approval Phase ID

mrPHASESTATE

varchar

Approved|Disapproved|Processing

mrSTATETIMEDATE

datetime

Date and time this row was set or updated

mrALERTTIMEDATE

datetime

Date and time of last recurring email alert

MASTERx_APPROVALVOTES / MASTERx_APPROVALVOTESHIST

Column Name

Datatype

Comments

mrID

int

The MASTERx.mrID that this pertains to

mrPROCID

int

Approval Process ID

mrPHASEID

int

Approval Phase ID

mrVOTEVALUE

varchar

Approve|Disapprove

mrVOTEUSER

varchar

UserID of user who cast vote

mrVOTECOMMENT

longvarchar

Comment about this vote

mrVOTETIMEDATE

datetime

Date and time of vote

MASTERx_APPROVALPROCS

Column Name

Datatype

Comments

mrPROCID

int

Approval Process ID

mrORDER

int

Order of Process in list

mrPROCNAME

varchar

Process name

mrPROCDESC

longvarchar

Process description

mrPROCTRIGGER

longvarchar

CGI input for search criteria to trigger start of process

mrPROCOPTIONS

text

Delimited process options

mrDELETED

int

If process is deleted, this has a value of 1

MASTERx_APPROVALPHASES

Column Name

Datatype

Comments

mrPROCID

int

Approval Process ID that this phase belongs to

mrPHASEID

int

Approval Phase ID

mrORDER

int

Order of Phase in list

mrPHASENAME

varchar

Phase name

mrPHASEDESC

longvarchar

Phase description

mrPHASEOPTIONS

text

Delimited phase options

mrDELETED

int

If process is deleted, this has a value of 1

mrVOTEUSERS

varchar

Space-separated list of eligible voters


 

The following are the tables for the address book:

ABMASTERy

Column Name

Datatype

Comments

abID

int

Unique ID for this contact

abSUBMITTER

char

Person who created contact

abASSIGNEE

char

Users assigned to this contact

abSUBMITDATE

timestamp

When contact was created

abUPDATEDATE

timestamp

When contact was last modified

abSTATUS

char

Deleted or not (status) of contact

Last__bName

varchar

Last name of a contact

First__bName

varchar

First name of a contact

Email__bAddress

varchar

Email address of a contact

custom address book fields

n/a

The above first three custom fields are auto-created on table creation. The rest of the address book fields will follow, named after the actual field name, with the correct data type. Note: Any projects which use this address book must keep the column names of custom address book fields in their MASTERx_ABDATA in sync with this.

ABMASTERy_MASTER

Column Name

Datatype

Comments

Last__bName

varchar

Last name of a contact

First__bName

varchar

First name of a contact

Email__bAddress

varchar

Email address of a contact

custom address book fields

n/a

The above first three custom fields are auto-created on table creation. The rest of the address book fields will follow, named after the actual field name, with the correct data type. Note: Any projects which use this address book must keep the column names of custom address book fields in their MASTERx_ABDATA in sync with this.

NOTE

On SQL Server only, you may see a column for mrTIMESTAMP.  This is for non-displayed binary data to improve performance for full-text indexing and should be of no concern to administrators.

FootPrints Indexes

Index

Type

Comments

Pk__random

Primary Key

mrID is the primary key of the MASTERx table and automatically an index.

Pk__random

Primary Key

abID is the primary key of the ABMASTERx table and automatically an index.

Pk__random

Primary Key

mrID is the primary key of the MASTERx_ABDATA table and automatically an index.

MASTERx_STATUS_IDX

Index

Index on mrSTATUS in MASTERx table.

MASTERx_PRI_IDX

Index

Index on mrPRIORITY in MASTERx table.

MASTERx_URGENT_IDX

Index

Index on mrURGENT in MASTERx table.

MASTERx_HISTORY_IDX

Composite Index

Index on (mrID, mrGENERATION) in MASTERx_HISTORY table.

MASTERx_DESCRIPTIONS_IDX

Composite Index

Index on (mrID, mrGENERATION) in MASTERx_DESCRIPTION table.

MASTERx_TIME_IDX

Composite Index

Index on (mrID, mrGENERATION) in MASTERx_DESCRIPTION table.

Full Text Indexing (optional)

FULL TEXT

Full text indexing is implemented on MySQL, Microsoft SQL Server, and Oracle if Intermedia is enabled. In these situations, we can add a full text index on the mrALLDESCRIPTIONS column and use MATCH or CONTAINS operators for faster searching.

MASTERx_APPROVALSTATES_IDX1

Composite Index

Index on (MRID, MRPROCID, MRPHASEID) in MASTERx_APPROVALSTATES table.

MASTERx_APPROVALSTATES_IDX2

Index

Index on mrPHASESTATE in MASTERx_APPROVALSTATES table.

MASTERx_APPROVALVOTES_IDX1

Composite Index

Index on (MRID, MRPROCID, MRPHASEID) in MASTERx_APPROVALVOTES table.

MASTERx_APPROVALVOTES_IDX2

Index

Index on mrVOTEUSER in MASTERx_APPROVALVOTES table.

MASTERx_APPROVALVOTESH_IDX1

Composite Index

Index on (MRID, MRPROCID, MRPHASEID) in MASTERx_APPROVALVOTESHISTORY table.

MASTERx_APPROVALVOTESH_IDX2

Index

Index on mrVOTEUSER in MASTERx_APPROVALVOTESHISTORY table.

MASTERx_APPROVALPROCS_IDX1

Index

Index on mrPROCID in MASTERx_APPROVALPROCS table.

MASTERx_APPROVALPHASES_IDX1

Composite Index

Index on (MRPROCID, MRPHASEID) in MASTERx_APPROVALPHASES table.

Configuration Management Database and FootPrints Calendar and Field History Tables

Configuration Management and FootPrints Calendar and Field History database tables are described at the following URL:

http://www.unipress.com/fpdbspecs/