u **Important concept for normalization.**

u **Functional Dependency (FD)**

– **Are constraints that are derived from the ***meaning* and *interrelationships* of the data attributes

– **If A and B are attributes of relation R, B is functionally dependent on A (denoted A ****–>**** B), or A functionally determines B, if each value of A in R is associated with exactly one value of B in R.**

– **Each value of A determines a value of B**

– **A and B can be sets of attributes.**

u FDs are derived from the real-world constraints on the attributes

u Social security number determines employee name

– SSN –> ENAME

u Project number determines project name and location

– PNUMBER –> {PNAME, PLOCATION}

u Employee ssn and project number determines the hours per week that the employee works on the project

– {SSN, PNUMBER} –> HOURS

u **An FD is a property of the attributes in the schema R.**

u **The constraint must hold on ***every* relation instance.

u **If K is a key of R, then K functionally determines all attributes in R **

– (since we never have two distinct tuples with t1[K]=t2[K])

u **FDs are nontrivial. (StaffNo–>****StaffNo is trivial)**

**Given TEXT we know the COURSE.**

** TEXT ****–> COURSE**

u **TEXT maps to a single value of COURSE**

** **