I first came across this book more than 20 years ago, when I was first introduced to database design and systems modeling. Although this book was originally published in 1992, hearkening back to the data processing movement, it contains several valuable ideas that continue to withstand the test of time.
Through his work Finkelstein is careful to point out that not everything can (or should) be controlled through code, as no amount of programming can compensate for a flawed data model. This is not to say that everything should be normalized when designing data structures. Data modeling is a game of give and take, the trick being to consciously understand when and why such tradeoffs have been chosen.
One of Finkelstein's core ideas is that complex or convoluted code is often the result of an incomplete data model. He carefully steps through a practical example of this in his book, complete with normalized data structures and relational mapping in Chen-Finkelstein notation.
This one idea has served me well in system design, teaching, and writing — each of which can be viewed as forms of information architecture in their own right. I tend to believe that if more people were better versed in how to flesh out and become aware of "missing concepts" at the data level, we would end up with much more robust and flexible systems.
Over the course of more than 20 years of various types of systems design, I have yet to find another book that addresses this issue in such a direct and succinct manner — while providing a clear methodology for its resolution.