I'm doing a relational design course on Stanford open courseware. I understand why functional dependencies are named that way - A->B means B is specified when A is specified, or in other words, the value of B functionally depends on the value of A. But I'm not able to think of a simple reason why multivalued dependencies are named that way. Understanding this would make it much easier to remember and use the concept.

  • Names tell you nothing. Learn their definitions.
    – philipxy
    Sep 11, 2020 at 22:50

1 Answer 1


A multivalued dependency A->->B means that each value of A determines a set of values of B (and not a single value of B as in functional dependencies).

For instance, suppose that programmers have an attribute programmer-id and an attribute known-language, and each programmer can know several languages, you have the multivalued dependency:

programmer-id ->-> know-language

So, supposing that the programmer with program-id 7 knows SQL and Ruby, this means that in a table in which you have both attributes programmer-id and know-language, every time there is program-id 7 there must be two different rows, one with language 'SQL' and one with language Ruby, and all the other attributes equal:

programmer-id  know-language other-attribute1 other-attribute2 ...
    7              SQL           XXX               YYY
    7             Ruby           XXX               YYY
    8             Java           AAA               BBB
  • Re "each value of A determines a set of values of B" & "not a single value of B as in FDs" That might be a mnemonic if you already know what a MVD is, but it isn't a clear description let alone definition. Eg the MVD "determines" means a different (& here undefined) thing than the FD "determines".
    – philipxy
    Jul 22, 2016 at 12:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.