3 ms·
It does read kind of like a complaint to me. The question the paper poses is ‘why’ are there no relational DBMS’s. And it places a bunch of the blame, it seems
by jameshart 4y ago
It does read kind of like a complaint to me.
The question the paper poses is ‘why’ are there no relational DBMS’s. And it places a bunch of the blame, it seems, at the fact that Codd left some things ambiguous and the people behind SQL resolved that ambiguity in a way that weakened the ‘relationality’ of the result.
But you’re right, it’s possible to read this more as ‘blameless post-mortem’ five-whying.
Why aren’t there any RDBMSs?
- Because SQL won, and SQL is not relational
Why isn’t SQL relational?
- because it’s creators misunderstood Codd’s paper in these ways
Why was Codd’s paper open to misinterpretation?
- because Codd didn’t think of these particular complexities…
Which I guess is one way to follow the ‘why’ thread.
But it does slightly ignore the important ‘why did SQL win?’ Branch…
- kragen 4y agosql won, as i understand the story, because ibm thought cobol programmers were too dumb to handle the relational algebra i have to admit that i find sql a lot easier to read than the relational algebra, even though the latter is more aesthetically appealing sql is kind of like golang, it makes your code a bit long-winded and tedious compared to a more crystalline minimal design, but this helps you avoid the temptation of being too clever and thus writing code you will have to debug
- jameshart 4y agoWhich points to the blame for SQL not implementing Codd’s ideas right not lying at the feet of Codd’s being insufficiently precise, as claimed in the linked paper, but rather as a deliberate choice to simplify the relational model.
- kragen 4y agoi would rather say to make the relational model more complex
- goto11 4y agoSQL tables are multisets (sets allowing duplicates) rather than sets as defined by the relational model. This was likely a deliberate decision in order to make implementations simpler and faster, since it avoids some uniqueness checks. For example it is much simpler to implement UNION if you don't have to check for duplicates. But arguably this push some complexity to the user, since duplicates lead to all kinds of problems. On the other hand three-valued logic is obviously more complex than regular boolean logic. But I don't agree with the author that three-valued is in conflict with the relational model.
- goto11 4y agoAs far as I know, SQL won because it was used by the first commercially successful relational database systems, and then other systems entering the marked needed to support it. It is a bit like JavaScript. Everyone knows it has its flaws and it is easy to imagine a better alternative, but it is "good enough".