Here is a little algebraic curiosity: there is one non-1NF relation in every real-world database, no matter how well designed.
Consider a set of pairs, where the first element of the pair is the table name, and the second element of the pair is the entire contents of the table.
table_name | table_data
—----------------------
comments | <entire contents of “comments” table>
posts | <entire contents of “posts” table>
users | <entire contents of “users” table>
... | ...
And so on. This is a relation, and it is not in first normal form, because it has relations as elements. That’s it.
I like this construction because its definition is very simple, basically a single sentence. Also, this relation is undeniably not in the first normal form, using the most basic and direct definition of first normal form. You don’t need to argue about things like NULLs or non-scalar data types to agree that it’s not 1NF.
Also, this construction exists on the very level where relational theory is defined: you don’t need to come up with hypothetical examples from the real world, because any example would do. At the same time, this construction is deeply grounded in the real world: it exists in every WordPress installation, for example.
Of course, this fact is completely useless. However, it came to my mind a couple of weeks ago and I’m still fascinated, so posting here.
While this is indeed a fun observation, the relation mentioned in it is not real. That is, no DBMS allows you to select from this relation, or to join with it. It's not normally representable there because it's not in 1NF.
You can imagine though a way to make it work: the "all table contents" part can be considered a blob, some serialized form, which can later be parsed into columns and rows on the client side. If we allow to apply (pure) functions to the values of relational tuples, as most RDBMSes do, we can put the blob parsing back into the DBMS, and allow a function that takes the "entire table contents" blob, a query string, and extracts a scalar of our choosing; that would model a join, in a limited form. Arguably this stays within the confines of the relational model.
But l like the initial idea, without the serialization trick. To me it illustrates how a theory usually cannot work as its own meta-theory. We cannot *directly* describe the relational model using the relational model, vaguely reminiscent of the way how "a set of all sets" cannot be a set.