# Re: Foreign keys

Date: Wed, 16 Jan 2008 01:11:22 -0500

Message-ID: <fehjj.158$uE.111_at_newssvr22.news.prodigy.net>

"Kira Yamato" <kirakun_at_earthlink.net> wrote in message
news:2008011600092016807-kirakun_at_earthlinknet...

> On 2008-01-15 22:05:24 -0500, "Brian Selzer" <brian_at_selzer-software.com>

*> said:
**>
**>>
**>> "Kira Yamato" <kirakun_at_earthlink.net> wrote in message
**>> news:2008011514331750073-kirakun_at_earthlinknet...
**>>> On 2008-01-15 14:16:32 -0500, "Brian Selzer" <brian_at_selzer-software.com>
**>>> said:
**>>>
**>>>>
**>>>> "Kira Yamato" <kirakun_at_earthlink.net> wrote in message
**>>>> news:2008011512561916807-kirakun_at_earthlinknet...
**>>>>> On 2008-01-15 11:51:43 -0500, "Brian Selzer"
**>>>>> <brian_at_selzer-software.com>
**>>>>> said:
**>>>>>
**>>>>>>
**>>>>>> "Kira Yamato" <kirakun_at_earthlink.net> wrote in message
**>>>>>> news:2008011510320716807-kirakun_at_earthlinknet...
**>>>>>>> On 2008-01-15 04:37:23 -0500, "Brian Selzer"
**>>>>>>> <brian_at_selzer-software.com>
**>>>>>>> said:
**>>>>>>>
**>>>>>>>>
**>>>>>>>> "Kira Yamato" <kirakun_at_earthlink.net> wrote in message
**>>>>>>>> news:2008011502240916807-kirakun_at_earthlinknet...
**>>>>>>>>> On 2008-01-14 21:18:57 -0500, "Evan Keel" <evankeel_at_sbcglobal.net>
**>>>>>>>>> said:
**>>>>>>>>>
**>>>>>>>>>> [...]
**>>>> What if
**>>>> both the determinant and the dependent draw their values from the same
**>>>> domain? For example, EmployeeId --> ManagerId, since managers are also
**>>>> employees.
**>>>
**>>> What about it? How does that require surjectivity on the domain of
**>>> PartNo?
**>>>
**>>> Conceivably, the domain of PartNo would include all possible integers.
**>>> But the relation will not necessarily have all tuples where *every*
**>>> possible values of PartNo are in some tuple of the relation.
**>>>
**>>
**>> I think you're confusing what is possible and what is actual. What is
**>> represented by the domains and the intension of a database specifies
**>> /what
**>> can be/, but due to the domain closure assumption, what is represented by
**>> values in the extension of a database states /what is/. A functional
**>> dependency does not limit the possible values in each domain: it instead
**>> controls which combinations of values are possible. Lets take that one
**>> step
**>> further, a functional dependency A --> B does not directly limit the
**>> possible values for A or for B; instead it limits the possible
**>> combinations
**>> of values for A and B.
**>
**> So, a functional dependency does not limit the possible values in each
**> domain. Ok.
**>
**> Rather, it limits the possible combinations of A x B. Ok.
**>
**>> Since A --> B only limits AB combinations, then for
**>> each value for B there must be at least one value for A, otherwise there
**>> wouldn't be an AB combination, would there?
**>
**> I still don't see the surjectivity requirement.
**>
**> In mathematics, a function is not necessarily surjective. For example,
**> let R be the set of real numbers. Then the function
**> f : R --> R
**> defined by
**> f(x) = x^2
**> is not a surjective function because f(x) can never be a negative number.
**>
**> In relational algebra, say I have a relation Person(Name, Age). Then
**> there is functional dependency
**> Name --> Age.
**> Now, the domain for Age can be any non-negative integer. However, the
**> extensional relation will not have a tuple for every possible value of
**> Age.
**>
*

The functional dependency does not affect the set of all possible values for Age; it controls the possible combinations of values for Name and Age. If there is only one tuple with Name 'Brian' in the database, then the functional dependency would hold no matter what the value for Age is. The dependency holds, or is satisfied, so long as there aren't two tuples with the same Name but different Ages.

> Are you saying that Name --> Age is not a functional dependency because it

*> is not surjective?
**>
*

*> --
**>
**> -kira
**>
*

Received on Wed Jan 16 2008 - 07:11:22 CET