4

Is it possible for a functional dependency to violate 1NF? for example

R={A,B,C,D,E} F=Any FD that violates 1NF

What kind of functional dependency will violate 1NF? I understand examples of function dependencies violating 2NF, 3NF and BCNF but I've never seen an example of an FD violating 1NF. Is this even possible?

CJBe
  • 41
  • 2
  • 1
    It is not possible, since the 1NF is simply part of the definition of relation (every attribute has only elementary values). Any relation, in the correct sense of the definition, is automatically in 1NF. – Renzo Dec 08 '16 at 21:06
  • What do you (think you) mean by "1NF"? – philipxy Dec 09 '16 at 00:39
  • We could identify FDs in a non-1NF table, but it wouldn't be the FDs that violate 1NF. – reaanb Dec 09 '16 at 06:18

1 Answers1

1

Unlike other normal forms, 1NF is concerned with structure rather than functional dependencies. So the simple answer to your question is no.

However, there is an element of controversy about whether 1NF excludes the possibility of relation-valued attributes (RVAs). If you take the view (as many people do) that RVAs are prohibited by 1NF then any functional dependency based on a relation-valued attribute cannot be satisfied by a 1NF relation. By that interpretation of the rule such FDs would be forbidden by 1NF. It would be stretching the meaning of words to say that the FD itself was a violation of 1NF, but it would be true to say that a relation satisfying such an FD would be a violation.

Alternatively, you can take the view that if it is of any value at all then 1NF ought to mean nothing more or less than the requirement that data is always represented as relations. Under that interpretation there is no strong reason to exclude the possibility of RVAs and - given that their exclusion might exclude some potentially important FDs - there is good reason to permit them. That is my view, although it is possibly a minority view even among those who have considered the issue. If you agree then the answer to your question is unequivocally no.

nvogel
  • 24,981
  • 1
  • 44
  • 82