Open Source Relational Databases

by Curtis Poe

How many open source relational databases can you name? My friend Gabrielle recently sent me the links to two of them. However, if you're like most technical people, you probably don't know any -- just as I didn't until recently. I can already imagine many of you saying "bulls**t", what about MySQL and PostgreSQL?" (to name just two), but those are just databases, not relational databases. Noted (and controversial) database experts Chris Date and Hugh Darwen, building on the work of the founder of relational theory, Edgar F. Codd, have tried to educate people about the actual relational model but with little success. It's a strange world of relations, relvars, attributes and other things which sound familiar, but when you look closely, they're not.

9 Comments

SDiZ
2007-10-07 07:39:30
all relational query can be transform quite well into sql ..
i can see no (other then academic) reason to say sql is not relational enough.
many people just call posgtresql, oracle and mysql RDBMS (as opposed to OODBMS)


Ovid
2007-10-07 08:04:09
@SDiZ: I hear people say that a lot. When I first learned programming back in the 80s, I used to think that BASIC was good enough, too. The reason I thought that is because that's all I knew. Today, I hear people defend Perl 5's broken OO model because that's all they know. I hear people tell me that Java is a "pure" OO language because that's all they know. Remember in the late 90s when many MySQL developers argued that foreign keys didn't belong in the database? (Sadly, some still do.) That's because MySQL is all they knew. I believe this is the same reason many people today defend SQL against the relational model.


You can assert that SQL is "relational enough", but to do that you have to explain why SQL's ad hoc decisions are better than the set theory on which the relational model is based and you have to at least attempt to address some of the points raised above. Simply saying "that's not true" doesn't let me understand why you disagree.

Dave Rolsky
2007-10-07 08:11:46
A couple clarifications.


First, while in theory the relational model allows for updateable views, in practice, only some views can be updated. For example, a view based on a summary query with (ala SQL's "GROUP BY") is not likely to be updateable, nor would many complex views based on UNIONs.


The problem is that in some cases you simply cannot "go the other way" from the view to the source relations in any logical manner.


That said, all views that can be updateable should be, though this has less to do with SQL vs the relational model than the fact that today's SQL products just don't support this. It's worth noting that Postgres lets you manually describe how to make views updateable using their rules feature.


On the subject of data types, the significant difference regarding what Date & Darwen describe is that they think that defining new data types is a core feature of a relational system. Various SQL products today let you define new types with varying degrees of ease, mostly "not-so-easy". There's nothing in the SQL standard to say it has to be so damn difficult, though ;)

steve
2007-10-07 21:43:46
To say 'i can see no (other then academic) reason to say sql is not relational enough' is rather like believing that it is possible to be "somewhat" pregnant. But explaining to sql users that just as a biological condition cannot exist neither can a "like" relational database exist is a terribly difficult task. Sql users really have no idea of what a relational database is yet they are convinced they're favorite sql database is one:) That the major sql vendors are themselves knowledgeable about the distinction between a "value" and a "variable" let alone between sql and relational is an open question. I rather think a more mundane approach to the issue is required. Something like a coloring book with lots of pictures for children. And very, very basic stuff. So instead of trying to explain what a table "type" is I try to show that dynamic sql is necessary as the result of not having a table type available. Whey sql cannot simply rename a column without rebuilding the table. Why in sql you cannot pass a table as a parameter. That passing multiple scalar parameters to a procedure is the result of not having the concept of a "row" available, etc etc. etc. And just hope the reader will connect the dots (sort of like the 50s TV show 'Winky Dink') I have been blogging about these things using Dataphor (likes firefox best) @
www.beyondsql.blogspot.com


with words and code (the pictures:). It is imho a brilliant attempt at capturing the nature of a relational database and the significant benefits it offers for application development. I encourage everyone interested in comparing "somewhat" pregnant to "being" pregnant to try Dataphor.
Thanks for the opportunity to express my view.

Matt
2007-10-07 22:11:10
200 lines ? I scoff at your 200 lines. We have a commercial reporting package that generates SQL statements up to 9000 lines long. Try debugging that one (as I had to recently) !
steve
2007-10-07 23:27:20
"SELECT first_name FROM customers WHERE age = id;
SELECT first_name FROM customers c, orders o WHERE c.id = o.id;
In the relational model, statements like those wouldn’t even compile. The age and id columns would all have their own data types and you simply wouldn’t define operators allowing them to be compared (c.id and o.id would also be different types)."


From Dataphor:


select (Orders rename A_order) join (OrderDetails rename Many_orders)
by A_order.OrderID=Many_orders.UnitPrice
//Application:(error)105257 --->
//No signature for operator "iCompare" matches the call signature
//"(System.Integer, System.Money)".

schlenk
2007-10-07 23:41:24
Take a look at vlerq for one more relational database...
http://www.equi4.com/ratcl/vlerq
Curtis Veit
2007-10-09 10:12:44
Just wondering if anyone here knows if the original Postgres (before the change to SQL I think they used a language called postquel) was a full relational database. I do know that it touted being based on strong types and an ability to add new types.


If so then is it possible to combine the old version with some of the new improvements?

jeremy
2007-10-22 02:31:05
Perhaps of interest to this group:

A list of projects related to the work of Hugh Darwen and Chris Date is available at The Third Manifesto web site which is dedicated to their restatement of the relational model.

In addition to the somewhat daunting Third Manifesto book, Chris Date has published Database in Depth which might be viewed as an introduction to the earlier work.

In my opinion both works should be compulsory reading for us all.