2,188 views
3 votes
3 votes
What is the best and the most accurate way to check if a given functional dependency is partial on the set of FDs given. Earlier, I used to follow {part of CK -> non prime attribute} as the rule, but in several of the questions I find that this rule alone is not sufficient. Can someone give a fully working technique to solve for such cases ?

For instance, I was reading a question on stack overflow, where in a relation r(ABCD), the following FDs hold- AB->CD, AB->C and A->C.

As the CK is AB,the partial FDs should be A->C . But one of thetop users has commented that the dependency Ab->C is partial and A->C is full. ?? :/

Question link for reference (http://stackoverflow.com/questions/25747802/partial-dependencydatabases ) see answer by 'Mike Sherrill 'Cat Recall''

2 Answers

1 votes
1 votes

A functional dependency X → Y is a full functional dependency if removal of any attribute A from X means that the dependency does not hold any more; that is, for any attribute A ε X, (X – {A}) does not functionally determine Y.

A functional dependency X → Y is a partial dependency if some attribute A ε X can be removed from X and the dependency still holds

Here if we remove B from AB→C

We get A→C (as A→C holds bcz it is in fd already)

If we remove B From there  AB→C can't hold any more C fully depends on A.

So C partially depends on AB and  AB→C is partial fd

Read answer of philipxy or his replies ovr the comment carefully.

0 votes
0 votes
Fd on the right hand side of partial dependency should be proper subset of any candidate key. So AB is not proper subset of of CK. Hence there is only one partial Dependency.

Related questions

0 votes
0 votes
0 answers
2
Na462 asked Oct 21, 2018
966 views
5 votes
5 votes
4 answers
3
learncp asked Dec 17, 2015
5,307 views
Given R(ABCD) andAB → C ;ABD → C ;ABC → D ;AC → Dwhich the highest possible normal form for the above relation ?
2 votes
2 votes
4 answers
4
Dulqar asked Feb 1, 2017
939 views
Consider the relation R(Name,courseNO,rolNO,grade)name,courseno ->graderollno,courseno->gradename->rollnorollno->name Given answer as it is 3NF . But Im getting 1NF. is ...