Maintaining Referential Integrity

When editing an existing Domain, the user is responsible for maintaining the referential integrity between the items in the Domain and any Domain Topics or reports that have been created from the Domain. Referential integrity means that at the time a Domain Topic or report is opened or run, all the items that the Domain references are still defined in the Domain. If you modify a Domain by removing sets or items, you must be sure that no Domain Topics or reports are based on those sets or items. Even if the underlying tables and columns still exist in the database, the sets and items referenced in the Domain must still exist in the Domain.

Domain items are identified by their IDs and the IDs of the sets in which they are located. Changing the ID of an item or moving it to a different set also makes it unavailable to any Topics and reports that referenced the ID. To change the name of an item or set, edit its label property, not its ID (see The Properties Panel). Moving an item is considered the same as deleting it from its current location so it can be added elsewhere.

Any report that references a deleted item no longer runs, nor can you open it in the Ad Hoc Editor again. A Domain Topic that references a deleted item causes errors when used in the Ad Hoc Editor. You can, however, open a Domain Topic for editing and remove references to deleted items. That action, however, allows only new reports to use the Domain Topic, and does not fix the broken reports based on the items deleted from the Domain Topic.

The granularity of referential integrity is at the individual set and item level. This means that changes to sets and items that are not used in a given report or Topic do not affect the report or Topic. For example, if you delete an item used by Topic A but not Topic B, then Topic A fails and reports based on Topic A that included the item fail. But Topic B and its reports are unaffected, as are any reports based on Topic A that did not include the deleted item.