|
|
| The third prescription is really to make view updating tractable and predictable/manageable for the dbms and application developers. The same motivation as for ttm's OO Pre 1 (compile time type checking). | | The third prescription is really to make view updating tractable and predictable/manageable for the dbms and application developers. The same motivation as for ttm's OO Pre 1 (compile time type checking). |
| | | |
− | It is the fourth I've long had trouble with -- hence this prologue. When I say "fourth", this has been up to 4 or 5 separate rules in my previous versions. I think I've now found a formulation to condense [D&B 1978]'s ''unique'', ''no extraneous updates'', my own ''unambiguous''; and to find grounds to reject [D&B 1978]'s "uncomfortable dimension" with which I've never been, er, comfortable. The notion -- that both tuples for the update and their attributes be ''essential'' -- is cribbed from D,D&F's ETNF paper. [Darwen, Date, Fagin 2012 "A Normal Form for Preventing Redundant Tuples in Relational Databases", ETNF = Extended Tuple Normal Form] | + | It is the fourth I've long had trouble with -- hence this prologue. When I say "fourth", this has been up to 4 or 5 separate rules in my previous versions. I think I've now found a formulation to condense [D&B 1978]'s ''unique'', ''no extraneous updates'', my own ''unambiguous''; and to find grounds to reject [D&B 1978]'s "uncomfortable dimension" with which I've never been, er, comfortable. The notion -- that both tuples for the update and their attributes be ''essential'' -- is cribbed from D,D&F's ETNF paper. [Darwen, Date, Fagin 2012, ETNF = Essential Tuple Normal Form] |
| | | |
| There are footnotes for each prescription, but let's state them succinctly first: | | There are footnotes for each prescription, but let's state them succinctly first: |
| | | |
− | # At all times all constraints must hold. (rubric: The "Golden Rule".)<br/> | + | # At all times all constraints must hold. (rubric: The "Golden Rule".) |
− | # Any update through a view must have precisely the effect on the content of the view as if it were a base relation. (rubric: "Assignment Principle")<br/> | + | # Any update through a view must have precisely the effect on the content of the view as if it were a base relation. (rubric: "Assignment Principle") |
− | # That a view is updatable-through (for some action INSERT, DELETE, UPDATE, assignment :=) must be determined by reference only to the schema, view's definition, constraints and the specified update effect for that action, per prescription 2. (rubric: "Not dependent on the happenstance of content")<br/> | + | # That a view is updatable-through (for some action INSERT, DELETE, UPDATE, assignment :=) must be determined by reference only to the schema, view's definition, constraints and the specified update effect for that action, per prescription 2. (rubric: "Not dependent on the happenstance of content") |
− | # Noting that the update is to be effected by some combination of tuples deleted and inserted into the database (base relations): each such tuple must be necessary to achieving 1. and 2., the set of tuples (deletes and inserts) must be sufficient, and each attribute value must be similarly necessary. (rubric: ''essential'' tuples, ''essential'' attribute values.)<br/> | + | # Noting that the update is to be effected by some combination of tuples deleted and inserted into the database (base relations): each such tuple must be necessary to achieving 1. and 2., the set of tuples (deletes and inserts) must be sufficient, and each attribute value must be similarly necessary. (rubric: ''essential'' tuples, ''essential'' attribute values.) |
− | # If there is no set of necessary, sufficient tuples/attributes per 4., that view is not updatable-through for that action. | + | # If there is no set of necessary, sufficient tuples/attributes per 4., that view is not updatable-through for that action. |
| | | |
| === Footnotes to the prescriptions === | | === Footnotes to the prescriptions === |
|
|
| #: ''Essential'' attribute value means that value is the only possible to comply with 1., 2 for all valid states of the database. | | #: ''Essential'' attribute value means that value is the only possible to comply with 1., 2 for all valid states of the database. |
| #: ''Sufficient'' requires that if there are two (or more) different sets of tuple actions/values that comply: | | #: ''Sufficient'' requires that if there are two (or more) different sets of tuple actions/values that comply: |
Exception encountered, of type "Error"