Functional Dependancie

Document Sample
Functional Dependancie Powered By Docstoc
					              Functional Dependencies

         If two tuples agree on the attributes
           A1, A2, … A n
         then they must also agree on the attributes
          B1, B2, … B m
 Formally:     A1, A2, … A n        B1, B2, … B m
Motivating example for the study of functional dependencies:
       Name         Social Security Number       Phone Number
     Product: name          price, manufacturer
     Person: ssn            name, age
     Company: name          stock price, president

Key of a relation is a set of attributes that:

    - functionally determines all the attributes of the relation
    - none of its subsets determines all the attributes.

Superkey: a set of attributes that contains a key.
           Finding the Attributes of a
Given a relation constructed from an E/R diagram, what is its key?


 1. If the relation comes from an entity set,
       the key of the relation is the set of attributes which is the
       key of the entity set.


          address                 name                     ssn
        Rules for Binary Relationships

                                buys                      Person

price                                          name              ssn
 Several cases are possible for a binary relationship E1 - E2:

  1. Many-many: the key includes the key of E1 together with the
                key of E2.

 What happens for:

   2. Many-one:

   3. One-one:
    Rules for Multiway Relationships
    None, really.

    Except: if there is an arrow from the relationship to E, then
            we don’t need the key of E as part of the relation key.


                           Purchase                    Store

Payment Method              Person
           Some Properties of FD’s
A1, A2, … A n           B1, B2, … B m        Is equivalent to

                 A1, A2, … A n          B1
                                                      Splitting rule
                 A1, A2, … A n          B2                and
                        …                             Combing rule
                 A1, A2, … A n          Bm

 A1, A2, … A n           A       Always holds.
                Comparing Functional
Functional dependencies: a statement about the set of allowable
Entailment and equivalence: comparing sets of functional dependencies

Entailment: a set of functional dependencies S1 entails a set S2 if:
             any database that satisfies S1 much also satisfy S2.

Example:    {A B,       B    C}
             A C
Equivalence: two sets of FD’s are equivalent if each entails the
     {A B, B C }             is equivalent to {A B, A C, B             C}
        Closure of a set of Attributes
Given a set of attributes A and a set of dependencies C,
we want to find all the other attributes that are functionally
determined by A.

In other words, we want to find the maximal set of attributes B,
such that for every B in B,

       C     entails A     B.
               Closure Algorithm
Start with Closure=A.

Until closure doesn’t change do:

  if A1, A2, … A n        B is in C, and

   A1, A2, … A n     are all in the closure, and
                            B is not in Closure


    add B to closure.
A B           C
A D           E
 B            D
A F           B

Closure of {A,B}:

Closure of {A, F}:
     Problems in Designing Schema
          Name            SSN         Phone Number

         Fred           123-321-99   (201)   555-1234
         Fred           123-321-99   (206)   572-4312
         Joe            909-438-44   (908)   464-0028
         Joe            909-438-44   (212)   555-4000

 - redundancy
 - update anomalies
 - deletion anomalies
           Relation Decomposition
Break the relation into two relations:
          Name            SSN

         Fred          123-321-99
         Joe           909-438-44

          Name       Phone Number
          Fred       (201)   555-1234
          Fred       (206)   572-4312
          Joe        (908)   464-0028
          Joe        (212)   555-4000
         Decompositions in General
 Let R be a relation with attributes A , A , … A
                                      1   2      n

 Create two relations R1 and R2 with attributes

       B1, B2, … B m         C1, C2, … C l

Such that:
       B1, B2, … B m        C1, C2, … C l =    A1, A2, … A n

  -- R1 is the projection of R on    B1, B2, … B m

   -- R2 is the projection of R on   C1, C2, … C l
          Boyce-Codd Normal Form
A simple condition for removing anomalies from relations:

 A relation R is in BCNF if and only if:

  Whenever there is a nontrivial dependency A1, A2, … A n           B
  for R , it is the case that { A , A , … A }
                                 1   2     n
  a super-key for R.

In English (though a bit vague):

  Whenever a set of attributes of R is determining another attribute,
  should determine all the attributes of R.
       Name            SSN         Phone Number

      Fred           123-321-99   (201)   555-1234
      Fred           123-321-99   (206)   572-4312
      Joe            909-438-44   (908)   464-0028
      Joe            909-438-44   (212)   555-4000
What are the dependencies?

What are the keys?

Is it in BCNF?
              And Now?
 SSN          Name

123-321-99     Fred
909-438-44     Joe

SSN              Phone Number
 123-321-99       (201)   555-1234
 123-321-99       (206)   572-4312
 909-438-44       (908)   464-0028
 909-438-44       (212)   555-4000
                   What About This?
            Name            Price                Category

        Gizmo               $19.99                gadgets


  Find an example of a 2-attribute relation that is not in BCNF.
           More Decompositions
      Name          Address   Move-Date

  Name          Address

 Name           Move-Date

What’s wrong?
              More Careful Strategy
Find a dependency that violates the BCNF condition:
           A1, A2, … A n         B1, B2, … B m

                Others     A’s    B’s

                     R1            R2
         Example Decomposition

Name Social-security-number Age Eye Color Phone Number

Functional dependencies:

       Name + Social-security-number           Age, Eye Color
What if we also had an attribute Draft-worthy, and the FD:

                Age           Draft-worthy
   Decomposition Based on BCNF
       is Necessarily Correct
Attributes A, B, C.        FD: A        C

Relations R1[A,B]         R2[A,C]

Tuples in R1: (a,b)

Tuples in R2: (a,c),    (a,d)

Tuples in the join of R1 and R2: (a,b,c), (a,b,d)

Can (a,b,d) be a bogus tuple?
        Multivalued Dependencies
         Name             SSN           Phone Number      Course

        Fred           123-321-99      (206)   572-4312   CSE-444
        Fred           123-321-99      (206)   572-4312   CSE-341
        Fred           123-321-99      (206)   432-8954   CSE-444
        Fred           123-321-99      (206)   432-8954   CSE-341

The multivalued dependencies are:

       Name, SSN                    Phone Number
       Name, SSN                    Course

4th Normal form: replace FD by MVD.

Shared By: