Re: Constraints and Functional Dependencies

From: Bob Badour <bbadour_at_pei.sympatico.ca>
Date: Sat, 24 Feb 2007 21:29:41 GMT
Message-ID: <972Eh.853$PV3.12052_at_ursa-nb00s0.nbnet.nb.ca>


paul c wrote:

> Bob Badour wrote:
> 

>> Carl Federl wrote:
>>
>>> <Anyone have any alternate formulas for functional dependencies or
>>> candidate keys? >
>>>
>>> My primary objection to using FOL to define constraints is that it
>>> would require our theory of data to have two different but similar
>>> languages, one for defining constraints in the FOL language and then a
>>> second language for manipulating relations.
>>>
>>> I will first give some definitions and then show why FOL is not
>>> needed.
>>>
>>> Definitions:
>>> Relational Manipulation Language consists of the Basic Relational
>>> Operators and Relational Assignment.
>>>
>>> Basic Relational Operators (BRO) are Project, Extend, Restrict,
>>> Product, Minus, Union and Aggregation. It is also usefull to be able
>>> to define and name additional relational operators derived from the
>>> BRO such as join and divide, but these are not mandatory.
>>
>> I suggest you check out Codd's 1972 paper. The above are the algebra
>> operations. If one has the calculus, one does not need them, and the
>> calculus is FOL.
> 
> My primary argument FOR using FOL (including set operators) at some 
> level is that if we can test any syntax we write down by comparing it to 
> FOL, we are assured that we haven't created an 
> illogical-hybrid-monster-non-theory "theory of data" implementation. Not 
> to say that a language should read like FOL.
> 
> (Regarding set operators, SQL UNION seems to parallel OR and JOIN to AND 
> and DELETE to AND NOT.  Does UPDATE parallel anything other than DELETE 
> followed by UNION?)

UPDATE, INSERT and DELETE are all simply short-hands for popular assignment statements with hooks for statement-specific triggered procedures. UPDATE is logically equivalent to DELETE/INSERT (generally without triggering delete or insert triggered procedures but a different triggered procedure instead.)

One wonders what a general assignment statement should trigger--especially assignments with logically equivalent results. Received on Sat Feb 24 2007 - 22:29:41 CET

Original text of this message