The cost and the cost of normalization depend on the cost. It depends mainly on what you will do with the data.
There are (at least) two fundamentally different ways of using data. One of them is real-time transaction processing (OLTP). The other is On Line Analytical Processing (OLAP).
In OLTP, the cost of non-normalization can be quite high. Transactions become more complex and slow, and bottlenecks degrade performance. In OLAP, the benefits of normalization are limited, and there are other design disciplines that can do more for the same effort. One of these alternatives is the star pattern scheme that you can find.
But the point is not so much in normalization, or in rationing, but in following another design discipline, even if it does not lead to a normalized database.
Returning to the specific case that you have outlined, there are many systems in which there is a heavy transactional load on client activity, but the client table is used for read-only purposes in these transactions.
Failure to comply with 3NF will only hurt you when you need to enter a new customer, and you will have to enter the zip code again when there are already other customers with the same city, street and mail code. And in the event that the post office changes the purpose of the zip code on this street, you will have to update many addresses instead of one row in a normalized table.
This is not a very expensive, but not very likely event.
On the other hand, how likely is it for a post office to take one street and divide that street between two postal codes, depending on which block the address is on? If this last event occurs, you are really better off with a structure that violates 3NF. You can enter different postal codes for each address using information provided by the post office about the split.
So how likely is this second scenario? I think this is sooner than the first. But you need to go with your hunch, not mine.
Walter mitty
source share