DL_Annotation

DL_AnnotationPropertyDescriptions

DL_Announcement

DL_ChatRoom

DL_ChatRoomInvitation

DL_ChatRoomMessage

DL_ChatRoomUser

DL_CollaborationObj

The DL_CollaborationObj table is used to describe collaboration objects. It encapsulates all properties common to collaboration objects such as who created it and when, and whether it is shared or deleted.

The tableName column is used to identify what type of collaboration object it is, while the objectID column points to the primary key of the table itself. Since this objectID can point to many different tables, this relationship is not strictly enforced and we cannot use cascaded DELETEs or UPDATES.

The illustration below shows the tables that are associated with the DL_CollaborationObj table.

Figure:DL_CollaborationObj relationships

Back to Top

DL_Collection

Stores the information needed to persist a collection (folder).

Workspaces are comprised of collections, which in turn are comprised of assets (either a library object or a collaboration object) and optionally any nested collections. The DL_Collection table along with the DL_ObjectCollections table maintains the relationship between the asset and what workspace the asset is in.

Currently, collections can only contain one type of object. The tableName column denotes the table that indicates the type of content associated with a collection.

Note:

It wouldn't be a large task to modify the database to support multiple content types. A first step would be to remove the tableName column. Then the various collection-related stored procedures would need to be reviewed. This is left as an exercise for the brave reader.

Figure:Tables associated with DL_Collection

Back to Top

DL_Contact

This table uses the WS_Person table to store information about a person. The association with the DL_CollaborationObj table allows contacts to function just as assets within a workspace.

Important Note:

Do not confuse this table with the WS_User or WS_Person tables.

Figure:Contacts

Back to Top

DL_DiscussionPost

DL_DiscussionThread

Stores the information needed to persist a discussion thread.

This table is directly associated with the DL_CollaborationObj table.

A discussion thread is comprised of 0 or more rows in the DL_DiscussionPost table.

Figure:Discussion tables

Back to Top

DL_Document

DL_DownloadCount

DL_Email

DL_Event

DL_History

DL_Layer

DL_LibraryObj

The DL_LibraryObj table is used to describe library objects. It encapsulates all properties common to library objects such as who created it and when, it's published status and numerous flags indicating whether it is deleted, downloadable or a shortcut.

The tableName column is used to identify what type of library object it is, while the objectID column points to the primary key of the table itself. Since this objectID can point to many different tables, this relationship is not strictly enforced and we cannot use cascaded DELETEs or UPDATES.

The illustration below shows the tables that are associated with the DL_LibraryObj table.

Figure:Library objects

Back to Top

DL_Link

DL_Map

DL_MapLayers

DL_News

Stores the information needed to persist a news feed.

This table is directly associated with the DL_CollaborationObj table.

Important Note:

Do not confuse this table with the DL_Rss table which is used to generate RSS content to serve out to consumers.

Figure:A news feed

Back to Top

DL_ObjectCollections

DL_ObjectRelationship

This table is used to make associations between two different library objects or two different collaboration objects. The type column on the DL_RelationshipType" table indicates the kind of relationship is being described.

This functionality was removed in an earlier of Phoenix, however the scenarios module still uses these tables to persist the components that make up a scenario, using a "hasa" relationship type.

Figure:Relationship tables

Back to Top

DL_Poll

Stores the information needed to persist a poll.

This table is directly associated with the DL_CollaborationObj table.

A poll is made up of 1 or more poll choices located in the DL_PollChoice table. When a user casts a vote, a row is added to DL_PollResult which links the user to the choice he selected. In the case of anonymous users (user's with no entry in the DL_User table), no association is made, but the votes counter is increased.

Figure:Polls

Back to Top

DL_PollChoice

DL_PollResult

DL_Question

DL_RelationshipType

DL_RemoteObject

DL_Rss

Stores the information needed to define a RSS feed in the system. RSS feeds are associated with both a workspace (the workspaceID column) and an object type (the tableName column). RSS feeds can also be associated with weblogs and in this case, the objectID refers to the entry in the DL_Weblog table.

Generating the text for the RSS feed can be fairly CPU intensive, and in order to reduce stress on the server, the resulting content is cached in the DL_RssContent table. This table also keeps track of how many times the feed was requested and how many times the content was generated.

Important Note:

Do not confuse this table with the DL_News table which is used to bring external RSS feeds into the system.

Figure:RSS Syndication

Back to Top

DL_RssContent

DL_SavedSearch

This table contains the information needed to persist search parameters in the system.

A row in the DL_SavedSearch table is created for every search that is initiated. It contains such information as the time it was initiated (initiated), the search keywords (keyword1 to keyword5), spatial information (westCoord, southCoord, eastCoord, northCoord) and temporal information (lowerDate, upperDate).

The columns are described below.

Column name Description
userID The ID of the user that conducted this search. Can be null in the case of anonymous users.
userKey A unique key that identifies the user that conducted this search. Cannot be null.
createdDate The time the search was created.
initiated The time the search was initiated. This time may be different from createdDate due to lag.
lowerDate The lower bounds of the date range to search within.
upperDate The upper bounds of the date range to search within.
keyword1 to keyword5 The keywords to search for within the metadata information.
westCoord The western-most extent of the bounding box to search within.
southCoord The southern-most extent of the bounding box to search within.
eastCoord The eastern-most extent of the bounding box to search within.
northCoord The northern-most extent of the bounding box to search within.
nodeToPoll The number of remote nodes that a search request will be sent to.
nodesReporting The number of remote nodes that have responded to a search request.
lastResult The time that the last remote node responded to a search request. Useful for checking for timeouts.
acknowledged The time that the search user acknowledged the results. Useful for checking if any results are new or not.

The following diagram shows how the search and search result tables are related.

Figure:An active search with search results
Caution:

The number of rows in DL_SavedSearch will continue to escalate as searches are conducted. It is your responsibility to implement some mechanism to remove old searches and their associated search results.

Back to Top

DL_Scenario

DL_SearchLocalResult

The results of every search are cached and this table stores snapshots of the local items that matched the associated search (DL_SavedSearch). The main benefit of this approach is that a user can navigate away from the Search page, and the results will still be available for the duration of the user's session.

See DL_SavedSearch.

Back to Top

DL_SearchRemoteResult

The results of every search are cached and this table stores snapshots of the remote items that matched the associated search (DL_SavedSearch). The main benefit of this approach is that a user can navigate away from the Search page, and the results will still be available for the duration of the user's session.

See DL_SavedSearch.

Back to Top

DL_Style

DL_StyleSheet

DL_Survey

DL_SurveyNumericResult

DL_SurveyOptionResult

DL_SurveyOptionType

DL_SurveyQuestion

DL_SurveyTextResult

DL_Task

DL_TaskUser

DL_Thumbnail

DL_UserCatalog

DL_UserCollectionSubscription

DL_Weblog

This table is directly associated with the DL_LibraryObj table and contains no additional properties of its own. A weblog as implemented here, is simply a container that allows associations with rows from DL_WeblogEntry.

Figure:Weblogs

Back to Top

DL_WeblogEntry

MD_Metadata

MD_RemoteMetadata

When associated with a MD_Metadata, indicates that the metadata came from a remote location.

Figure:Metadata from a remote source

Back to Top

RS_OGCLayer

RS_OGCService

RS_PhoenixCategory

RS_PhoenixNode

SAGA_User

WS_Alert

WS_GroupPermissions

WS_Membership

WS_Person

WS_Preferences

WS_RoleGroups

WS_Roles

WS_User

WS_Workspace

WS_WorkspaceRoles