Selective reading, maybe only looked at 20% that interested me. I picked this up to get an overview of the relational model and look for a second treatment of normalization after my frustration with Elmasri's Fundamentals of Database Systems textbook. This is the superior textbook, both deeper and broader, and the writing is clearer with none of the frustrations I mentioned in my review of Elmasri. Indeed this textbook lowers my opinion of Elmasri's further because Ullman exercises severe editorial judgment in coverage, eg confining the first and second normal forms to a handful of sentences in a small side box since they have meager theoretical, expositional, or practical interest to a reader who is trying to get a grip on the matter. Essentially they are arbitrary waypoints on the path to meeting obvious desiderate for our schema. With such a large subject matter, it is nice to have a confident guide ushering you forward, not pausing for historical curios that in his judgment are not worth bothering over.
Multivalued dependencies and the fourth normal form are treated as a generalization of functional dependencies and Boyce-Cobb normal form, which I found clarifying. The example of actor addresses and films clearly illustration the concerns and data-organizational solutions. That example is used throughout, which is truly impressive. Tableau-chasing method is nicely explained.
Authors of texts on databases theory face a difficult tradeoff. Some (like me) are looking for a high-level theory discussion that can organize a jumble of intuitions I've developed from practical experience in databases; others are impatient with the theory talk because there is already a multi-decade, widely adopted international standard (SQL) that closely approximates the conceptual ideal of high theory, so why not just discuss that? Ullman uses SQL generously to illustrate concepts, but never fails to remind the reader that "selection" is not truly "projection," tables are not relations, multisets/bags (unordered collections of possibly duplicate elements) are not the sets (unordered collections of distinct elements) as theory would have it. He explains why this compromise was made, what the consequences are, and flags every point in the text where this distinction makes a difference.
Other topics that caught my interest: object-relational model, recursion, dependency graphs for determining if two relations are mutually recursive, nested relations, user-defined types (though I'd have liked more discussion of how much these are used in practice?).
Some topics I find off-putting but might one day need to care about: query processing, logical/physical planning, compiling, estimating costs of operations and sizes of intermediate relations, pipelining versus materializing.
Overall this is nice textbook I'll come back to.