Simplified integrity checking for an expressive class of denial constraints
Davide Martinenghi
TL;DR
The paper tackles efficient integrity-checking for expressive denial constraints by introducing a transformation-based framework that converts complex constraints into simplified pre-tests. It defines two non-recursive languages, ${\cal L}_{\sf S}$ and ${\cal L}_{\sf H}$, and a two-step procedure (After and Optimize) to compute weakest preconditions and conditional weakest preconditions that preserve semantical equivalence under updates. Central contributions include formalizing WP/CWP, unfolding mechanisms to remove intensional predicates, and handling negated existential quantifiers through extended denials, all while ensuring termination and tractability. The approach supports direct SQL translation and integration with active databases, offering a practical path to design-time, automated integrity checking with potential for broader extensions and cost-aware optimization.
Abstract
Data integrity is crucial for ensuring data correctness and quality, maintained through integrity constraints that must be continuously checked, especially in data-intensive systems like OLTP. While DBMSs handle common constraints well, complex constraints often require ad-hoc solutions. Research since the 1980s has focused on automatic and simplified integrity constraint checking, leveraging the assumption that databases are consistent before updates. This paper discusses using program transformation operators to generate simplified integrity constraints, focusing on complex constraints expressed in denial form. In particular, we target a class of integrity constraints, called extended denials, which are more general than tuple-generating dependencies and equality-generating dependencies. These techniques can be readily applied to standard database practices and can be directly translated into SQL.
