This is part five of my series on [[Physical Data Modeling AntiPatterns Series|Physical Data Modeling AntiPatterns]].
A column in a table should be a single attribute. SEX (male or female) in an Entity table should not mean something else (profit or non-profit legal entity as an example) when the row is a corporation. So basically, context matters. That's just one simple example of when the single attribute/column paradigm is violated. Here are some others:
- Have you ever worked with a system where NULL actually meant something within the system? If a SALARY col in an Employee table has a bunch of NULLs then I would assume the salary is UNKNOWN. Surprisingly, in many system that means the employee is compensated hourly. In other systems that means the SALARY is hidden from prying eyes.
- With the NoSQL movement, people are modeling SuperColumns which is almost like a vector that is stored in a single col in a single row. Yes, I understand Oracle has the concept of nested tables. This doesn't mean they are a good idea. The reason this is popular in [[What is this NoSQL Thing?|NoSQL]] is because the modeling is specifically not relational! So the trade-off of queryability for other benefits of NoSQL (such as persisted sorted data) is made intelligently upfront (hopefully).