Re: Proper relational database?

From: Guyren Howe <guyren(at)gmail(dot)com>
To: Raymond Brinzer <ray(dot)brinzer(at)gmail(dot)com>
Subject: Re: Proper relational database?
Date: 2016-04-22 18:04:06
Message-ID: 1ABF001D-62FD-4543-81DC-6AF568C5F251@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Apr 22, 2016, at 10:45 , Raymond Brinzer <ray(dot)brinzer(at)gmail(dot)com> wrote:
>
> Are there relational algebra expressions, or other operations
> necessary to a truly relational database, which cannot be translated
> into SQL? I'm not aware that there are, but I'd be interested to hear
> of it. If there were, there's a good chance you wouldn't be able to
> translate them into the parse tree, either.

The fundamental storage model needs to at least be a bit different. In particular, relations can't allow duplicates. You could have nulls (Codd proposed two different forms of null IIRC: a single null value and two different null values), although they should be more principled than the mess they are in SQL.

I am no expert on database optimization, but I understand that it is significantly easier to do query optimization in a properly relational database, as it forms a reasonably simple algebra, which can be optimized much as you would optimize evaluation of a numeric expression.

Major gains from a proper relational store would be:

- a better language, easier to parse, read and generate. Perhaps multiple equivalent query languages;
- other storage models (distributed and eventually consistent, say);
- simpler (in implementation and use);

We may also get some degree of faster and other good things. It also might be implemented in such a way that it can run as a server or more like SQLite.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Pierre Chevalier Géologue 2016-04-22 18:16:48 Re: Enhancement request for pg_dump
Previous Message Melvin Davidson 2016-04-22 17:46:02 Re: Add relcreated (timestamp) column to pg_class catalog to record the time an object was created