摘要:
An implementation of referential integrity in which descriptions of referential constraints are compiled into meta-data descriptions of the constraint rules and specifications. The meta-data descriptions of the constraints are stored in the form of objects called relationship descriptors. Each relationship descriptor contains a complete description of a referential constraint, either directly or by means of pointers to other objects such as record and index descriptors which contain information comprised in the constraint's specification. The relationship descriptors are linked into two types of chains by symbolic pointers. One type of relationship descriptor chain connects all relationship descriptors which have a common parent table. The other type of relationship descriptor chain connects relationship descriptors with common dependent tables. Both types of chains are anchored in respective fields in the tables' record descriptors. The use of meta-data descriptors facilitates both ready modification of the constraints, and speedy enforcement of the constraints by a single, shared procedure which may be embedded in the data base manager.
摘要:
A method is disclosed for enforcing referential constraints on a record-by-record basis, immediately before or after each record is manipulated and while the record is still accessed, significantly improving the system's performance. Each record is visited only once to do both the constraint checking and the manipulation (insert/update/delete). If the constraint checking fails, then the entire relational operation of which the record manipulation is a part is backed out. For insertions, each record is first inserted 30, and then constraints respective the record are enforced 32,34. For updates, the record is updated 48 after constraints respecting the record's primary key are enforced 40,42, and before constraints respecting its foreign key(s) are enforced 44,46. Deletions are performed 52 before the constraints on the deleted record are enforced 54,56. Cascade deleted 58 are handled recursively 60. The method correctly processes cyclic constraints and self-referencing rows without special handling.