A schema is a constraint, and there are degrees of constraints. The more constrained the data is, the more meaningful reports you can create, which is critical. But in order to constrain your data, you must understand it, and we don’t always understand our data during the exploratory phase of application development.
The point is that we shouldn’t pretend to understand our data by declaring a sophisticated schema when we don’t really understand our data that well. That will only leave a false sense of certainty and add confusion (and therefore bugs).
During early development, even our verbal conversations tend to use vague nouns such as “stuff” and “properties”. The most important rule of database design is that your database should represent reality (including vagueness), not what we wish reality was.
]]>