J. Patrick Thompson, Data With Semantics: Data Models and Data Management.
Note: this is a book about databases, but not RDBMSes or SQL. In addition to the normal scholarly writing, it employs Socratic dialogs among various characters reprsenting archetypal ways of thinking to teach the reader to think about data modelling (reminiscent of Galileo's Dialogue Concerning the Two Chief World Systems).
Its main thrust is that designing a database means modeling a domain, and that means asking "what is truth", or "what aspects of the truth do I need to model, and what are extraneous to my solution".
Again: no RDBMS, no SQL. Very abstract. Out of print. Twenty years old. Well worth reading.
Comment:
I generally find that "out of print"
and "well worth reading" are kind of
at odds with each other. If it really
is worth it , it would not go out of
print , no? – Learning
Or perhaps it was ahead of its time. The book documented a design for a "Semantic Database" with Object Oriented properties. Today, we talk about a "Semantic Web and heavily use ORMs that translate our OO entities to and from RDBMS relations. Or maybe time and forgetfulness have given it an undeserved patina in my memory.
But I do remember that reading it was one of those "ah! aha! I get it now! you can do that? oh man, that's so neat!" experiences, the same feeling I later had reading Coplien's Advanced C++ Programming Styles and Idioms or Alexandrescu's Modern C++ Design.