There is definitely a school of thought which holds that NULL fields are bad, in and of themeselves. Relational theory demands that databases consist of facts, and NULLs are the absence of fact. So, a rigourously designed database would have no nullable columns.
Your colleague is proposing something which is on the road to 6th Normal Form, where all the tables consist of a primary key and at most one other column. Only in such a schema we wouldn't have tables called customer_info_fr
. That's not normalised. Many countries might include ENTRY_CODE in their addresses. So we would need address_entry_codes
and address_floor_numbers
. Not to mention address_building_number
and address_building_name
, as some places are identified by number and other by name.
It's completely accurate and truthful as a logical design. Alas from a physical perspective it is Teh Suck! The simplest query - select * from addresses
- becomes a multi-table join, and outer joins at that. Nullable columns are a way of reconciling ugly design with the hard truth, "you cannae break the laws of physics". Nullable columns allow us to combine disjoint data sets into a single table, albeit at the cost of handling nulls (they can affect data retrieval, index usage, maths, etc).