|
What?
|
Input/output
|
Some info
|
|
Relation
|
|
Input the relation each attribute as a single letter
somthing like: "ABCGHI" or "ABC".
The webversion only supports upto 4 attributes!
|
|
Functional dependencies
|
|
Enter each fd as "[attributes]->[attributes]", fds divided by a ","
somthing like: "A->B, A->C, CG->H, CG->I, B->H" or "A->BC, B->C,
A->B, AB->C".
The webversion only supports upto 5 functional dependencies!
|
Closure functional dependencies
|
|
Armstrong’s rules for Closure of a Set of Functional Dependencies
(a1) if b [subset] a, then a -> b (reflexivity)
(a2) if a -> b, then g a -> g b (augmentation)
(a3) if a -> b, and b -> g, then a -> g (transitivity)
We use the Armstrong axiomas for computing F+
|
Superkeys
|
|
A superkey is a set of attributes for which the attribute closure, of that set,
equals R. With a superkey you can uniqly identify a tuple in a relation instance.
So for each subset of R, calculate its closure and if it is R then you have a superkey.
|
Candidatekeys
|
|
A candidatekey is a set of attributes, K, for which the attribute closure equals
R and there is no subset of K for which this also holds. Thus a candidatekey is
a "smallest" superkey.
So for each superkeys look if a subset of that key is a superkey, if it isn't then
you have a superkey.
|
|
Attribute closure
|
|
Enter a subsets of attributes of R divided by a ","
|
A canonical cover
|
|
A canonical cover for F is a (minimum) set of dependencies Fc such that
– F logically implies all dependencies in Fc, and
– Fc logically implies all dependencies in F, and
– No functional dependency in Fc contains an extraneous attribute, and
– Each left side of functional dependency in Fc is unique.
|
A 3NF decomposition
|
|
3NF Decomposition
|
A BCNF decomposition
|
|
BCNF Decomposition
|
|
Test is a canonicalcover
|
|
Enter each fd as "[attributes]->[attributes]", fds divided by a ","
somthing like: "ACD->B,AB->D,C->D,BD->C" or "AD->BC,AB->D,C->D,BD->C".
The webversion only supports upto 5 functional dependencies!
|
Test is decompostion
|
|
Enter each relation as "[attributes]", relations divided by a ","
somthing like: "AC,BC,CD", "ABD,BCD" or "BC,ACD".
Not sure if the n-ary algorithm for testing if decomposition is lossless is correct, but it looks fine.
|