4 ms·
> Isn't that proof by practice that the underlying mathematical model... Maybe. Maybe not. The only practical example we keep seeing is implementations centred
by randomdata 3y ago
> Isn't that proof by practice that the underlying mathematical model...
Maybe. Maybe not. The only practical example we keep seeing is implementations centred around SQL which, while loosely based on the relational model, notably does not have relations. Without relations – the idea that sits at the very core of the relational model – you don't technically have a relational database (even if we colloquially call it as such).
So while, in theory, the relational model should work just as well, practice hasn't attempted to prove that at scale. Not since Postgres was first created has anyone really even tried to implement the relational model, and Postgres soon gave up on the idea and moved to SQL too. It may be that tables are actually better for practical use and that the relational model would fall down flat if we ever gave it a serious go.
- fifilura 3y agoThis comment sounds so insightful, but I don't have the knowledge/insight to understand it! I would love it if you could add some practical example.
- rramadass 3y agoThis comment on another thread links to a succinct presentation of the Relational Model which you might find helpful - https://news.ycombinator.com/item?id=39201972 https://news.ycombinator.com/item?id=39201972 Basically, SQL does not constrain one to a strict mathematical relational model since you can have ordering, duplicates, nulls etc.
- cafard 3y agoPerhaps one should say that SQL "does not enforce relations". One can create systems that enforce uniqueness throughout and avoid nulls. My recollection is that Peoplesoft was one such--it used single spaces where some might have used nulls, and the tables had unique indexes defined on them. But it has been many years since I dealt with it.
- randomdata 3y agoBy the same token, would you say that C doesn't enforce message passing? The Objective-C runtime proves that you can create C systems that use message passing – but certainly it is not enforced. I think most people would say that C doesn't have message passing. Being able to use the facilities provided by the language ecosystem to build message passing / relations on top is at another level.
- rramadass 3y agoI think maybe you are confusing SQL's view of the model with the underlying mathematical Relational Model? A Table is a superset of a Relation. As Date mentions in the interview you can have QBE/ISBL be a better mapping to the underlying mathematical model.
- randomdata 3y ago> A Table is a superset of a Relation. Subset. You can build relations on top of tables, but not tables on top of relations. SQL falls short of the mathematical model. As it pertains to the topic at hand, whether or not that is significant is not something we have tried very hard to prove in practice.
- rramadass 3y agoNot quite true - https://en.wikipedia.org/wiki/Table_(database)#Tables_versus_relations https://en.wikipedia.org/wiki/Table_(database)#Tables_versus... A Table is a Relation encoded as a set of tuples resulting from the cartesian product of values from multiple sets each of which is from a domain. Tables are a weaker form of Relations and hence a superset except for the "ordering" characteristic when it can be considered a subset.
- randomdata 3y ago> multiple sets Right. As before, you cannot build a table on top of a relation. You can build a relation on top of a table, though. > Tables are a weaker form of Relations Yes, exactly, hence it being a subset.
- rramadass 3y ago> you cannot build a table on top of a relation Of course you can; it is in the very definition of the Table which is a manifestation of a Relation. Relationships (which can also be mathematical Relations) across Tables/Views are a different thing. > hence it being a subset. No, all Relations are Tables but not all Tables are Relations because of ordering, duplicates, nulls.
- cmrdporcupine 3y agoThere definitely have been people who have implemented a more pure relational model (e.g. https://docs.relational.ai/rel https://docs.relational.ai/rel) -- and at scale, too. There's just so much force and legacy behind SQL that it is pretty much impossible to do well in the industry without it. But the relational model works and has been proven, independent of SQL. Hell, even Datomic.