Bill Kent, a database theorist, hosts his writings on data modeling, including Data and Reality and a guide to normal forms.
HN commenters recommend his five normal forms guide for newcomers and return to Data and Reality as a reminder that a model is only a model.
Hi, CS graduate here. during my post-graduation unemployed year I have been wrestling with this question a lot. The answer is that there is none - the research on the practice of translating requirements into code has stopped in the 1970s with Structured Programming (Dijkstra) and Problem Frames (Jackson). There is a certain inspiration people had with reusable patterns of problems a la Alexander, but after some time people got lost in the Java enterprise world and started making "design patterns" (which has very much dominated the online space and I cannot search properly for general software design anymore). The second problem is with Clean Code, which to me is a really bad set of "if you know you know" hand-wavy advice that is purposefully vague, because observable, actionable advice is actually very hard to come by.
Software engineering as I see it is a design problem. Two main problems is 1. How to break down the problem at hand and 2. Organizing data into abstractions, and often creating new ones.
For (1) the advice everyone resorts to is "just do more" and rely on pattern recognition, because you can't really break down a thing you haven't seen nor can relate to what you've seen before. But there is [A Framework for Decomposition in Computational Thinking](https://www.researchgate.net/publication/334579725_A_Framework_for_Decomposition_in_Computational_Thinking) that's the best attempt at it so far in my opinion. Some other approaches involve observation from ideal…
Thanks for these insights and listing these alternatives in one place and showing their commonalities (like tagging, hierarchies, and parsing/subdividing). One book I have found interesting along those lines is "The Discipline of Organizing".
https://berkeley.pressbooks.pub/tdo4p/
Tangentially, William Kent's "Data and Reality" (the first two editions especially) also explores the larger meta-issues of moving from human-ish nuanced thinking to more limited formal representations (i.e. "The map is not the territory").
http://www.bkent.net/Doc/darxrp.htm
Coincidentally this other HN article showed up the same day:
"25+ years of personal knowledge management"
https://news.ycombinator.com/item?id=30903940
I have my own FOSS explorations to make software related to these sorts of themes called Pointrel/Twirlip -- but still a work in progress after over forty years. Indirectly Pointrel did in a sense help inspire Wordnet though. :-) And Wordnet was core to the rise of Google (via Adsense) which claims to want to organize the world's information (even if they may have other goals as well).
I think I understand this "Cartesian product" reasoning behind 4NF/5NF, I just find it irrelevant I guess.
Cartesian product is explained in Kent: case (3) in https://www.bkent.net/Doc/simple5.htm#label4.1 ("A "cross-product" form, where for each employee, there must be a record for every possible pairing of one of his skills with one of his languages")
I do not explicitly mention this Cartesian product even tho it is present in both posts ("sports / languages" in 4NF, and "brands / flavours" in 5NF).
> it demonstrates [one of] the precise problem[s] the normal form sets out to solve: a combinatorial explosion of rows.
I just don't understand this wording of "a combinatorial explosion of rows" — what's so dramatic here? I don't need four iterations of algebra-dense papers to explain this concept, I think it's pretty simple frankly.
And my implicit argument is, I guess, exactly that you could design tables that handle both problems without invoking 4NF and 5NF — people are doing that all the time.
Coming back a day later, now that I've finished "Data and Reality", to say the very last pages of the book are "About Bill Kent".
In particular, it gives a reference to Bill's web site http://www.bkent.net, which includes a list of his personal and academic [1] writing over 35 years.
I was actually astonished to find his web site still running, 17 years after his death in 2005. How many of our own digital artefacts will have such longevity?
[1] http://www.bkent.net/catalogsource.htm
In addition to whatever textbook you decide on you should read Bill Kent's "Data and Reality" to widen your awareness of the profound difficulties involved in stuffing messy reality into a collection of bits. See http://www.authorhouse.com/BookStore/ItemDetail.aspx?bookid=2713 and http://www.bkent.net/Doc/darxrp.htm.
The upvotes could also mean that people appreciate a good presentation of introductory material, and they may see a use for it as something to send to the newbies on their team.
For this subject, I usually send people to Bill Kent's Guide to the Five Normal Forms:
http://www.bkent.net/Doc/simple5.htm