It's one of the most important concepts in the Relational Dabase Theory.
It said that there is a functional dependency between two set of attributes when for each value of the first set there is only one set of values of the second.
Notation: {A1, ..., An} -> {B1, ..., Bm}
For example there exists a functional dependency between the Social Security Number and Person Name (for each SSN value there is only one Person Name).
Functional dependencies have the transitive property, for example:
InvoiceId -> CustomerId
CustomerId -> CustomerName
so
InvoiceId -> CustomerName
it's also true.
The normalization process it's basically a process to eliminate all the redundant functional dependencies.
The structure of a Transaction defines the functional dependencies.